Text Compare
Produced: 9/24/2018 2:13:00 PM
   
Mode:  All, Ignoring Unimportant  
Left file: C:\Users\adrian\Documents\TMSSoftware\FlexCelDLL\Demo\10.API\10.GettingStarted\UGettingStarted.pas  
Right file: C:\Users\adrian\Documents\TMSSoftware\FlexCelVCLNT\Demo\Delphi\Modules\10.API\10.GettingStarted\UGettingStarted.pas  
1 1 unit UGettingStarted;
2 2  
3 3 interface
4 4  
5 5 uses
6 6   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 7   Dialogs, StdCtrls, ShellAPI, UPaths,
8     VCL_FlexCel_Core, FlexCel_XlsAdapter, FlexCelDynEnums;
  8   {$IFDEF FPC} LResources,{$ENDIF}
  9   {$if CompilerVersion >= 23.0} System.UITypes, {$IFEND}
  10   VCL.FlexCel.Core, FlexCel.XlsAdapter;
9 11  
10 12 type
11 13   TFGettingStarted = class(TForm)
12 14     btnCreateFile: TButton;
13 15     Memo1: TMemo;
14 16     SaveDialog: TSaveDialog;
15 17     procedure btnCreateFileClick(Sender: TObject);
16 18   private
17 19     procedure CreateFile;
18 20     procedure AddData(const Xls: TExcelFile);
19 21     procedure ShowOpenDialog(const Xls: TExcelFile);
20 22   end;
21 23  
22 24 var
23 25   FGettingStarted: TFGettingStarted;
24 26  
25 27 implementation
26 28  
  29 {$IFNDEF FPC}
27 30 {$R *.dfm}
  31 {$ENDIF}
28 32  
29 33 procedure TFGettingStarted.CreateFile;
30 34 var
31 35   Xls: TExcelFile;
32 36 begin
33 37   Xls := TXlsFile.Create(true);
34 38   try
35 39     AddData(Xls);
36 40     ShowOpenDialog(Xls);
37 41   finally
38 42     FreeAndNil(Xls);
39 43   end;
40 44 end;
41 45  
42 46 procedure TFGettingStarted.AddData(const Xls: TExcelFile);
43 47 var
44 48   PathToImage : string;
45 49   fmt: TFlxFormat;
46 50   XF, XF2: integer;
47 51 begin
48 52     //Create a new file. We could also open an existing file with Xls.Open
49 53     Xls.NewFile(1);
50 54  
51 55   //Set some cell values.
52 56   Xls.SetCellValue(1, 1, 'Hello to the world');
53 57   Xls.SetCellValue(2, 1, 3);
54 58   Xls.SetCellValue(3, 1, 2.1);
55     Xls.SetCellValue(4, 1, TFormula_Create('=Sum(A2, A3)')); //Note that formulas always are in English. This means use "," to separate arguments, not ";".
  59   Xls.SetCellValue(4, 1, TFormula.Create('=Sum(A2, A3)')); //Note that formulas always are in English. This means use "," to separate arguments, not ";".
56 60  
57 61     //Get path for images from disk.
58 62   PathToImage := DataFolder  + 'poweredbyflexcel.png';
59 63  
60 64   //Add a new image on cell F2
61 65   Xls.AddImage(PathToImage,
62 66     TImageProperties_Create(
63       TClientAnchor_Create(TFlxAnchorType_MoveAndResize, 2, 0, 6, 0, 5, 0, 8, 0),
  67     TClientAnchor.Create(TFlxAnchorType.MoveAndResize, 2, 0, 6, 0, 5, 0, 8, 0),
64 68     PathToImage, 'My image'));
65 69  
66 70     //Add a comment on cell a2
67 71     Xls.SetComment(2, 1, 'This is a comment');
68 72  
69 73     //Custom Format cells a2 and a3
70 74   fmt := Xls.GetDefaultFormat;  //Always initialize the record with an existing format.
71 75   fmt.Font.Name := 'Times New Roman';
72     fmt.Font.Color :=  TExcelColor_FromTheme(TThemeColor_Accent2);
73     fmt.FillPattern.Pattern := TFlxPatternStyle_LightDown;
74     fmt.FillPattern.FgColor := TExcelColor_FromColor(clBlue);
75     fmt.FillPattern.BgColor := TExcelColor_FromColor(clWhite);
  76   fmt.Font.Color := clRed;
  77   fmt.FillPattern.Pattern := TFlxPatternStyle.LightDown;
  78   fmt.FillPattern.FgColor := clBlue;
  79   fmt.FillPattern.BgColor := clWhite;
76 80  
77 81     //You can call AddFormat as many times as you want, it will never add a format twice.
78 82     //But if you know the format you are going to use, you can get some extra CPU cycles by
79 83     //calling addformat once and saving the result into a variable.
80 84     XF := Xls.AddFormat(fmt);
81 85  
82 86   Xls.SetCellFormat(2, 1, XF);
83 87   Xls.SetCellFormat(3, 1, XF);
84 88  
85 89     fmt.Rotation := 45;
86 90   fmt.Font.Size20 := 400;
87     fmt.FillPattern.Pattern := TFlxPatternStyle_Solid;
  91   fmt.FillPattern.Pattern := TFlxPatternStyle.Solid;
88 92   XF2 := Xls.AddFormat(fmt);
89 93  
90 94     //Apply a custom format to all the row.
91 95     Xls.SetRowFormat(1, XF2);
92 96  
93 97   //Merge cells
94 98     Xls.MergeCells(5, 1, 10, 6);
95 99     //Note how this one merges with the previous range, creating a final range (5,1,15,6)
96 100     Xls.MergeCells(10, 6, 15, 6);
97 101  
98 102  
99 103     //Make the page print in landscape or portrait mode
100 104     Xls.PrintLandscape := true;
101 105 end;
102 106  
103 107 procedure TFGettingStarted.btnCreateFileClick(Sender: TObject);
104 108 begin
105 109   CreateFile;
106 110 end;
107 111  
108 112  
109 113 procedure TFGettingStarted.ShowOpenDialog(const Xls: TExcelFile);
110 114 begin
111 115   if not SaveDialog.Execute then exit;
112 116   Xls.Save(SaveDialog.FileName); //No need to delete the file first, since AllowOverWriteFiles is true in XlsAdapter.
113 117  
114 118   if MessageDlg('Do you want to open the generated file?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
115 119   begin
116 120     ShellExecute(0, 'open', PCHAR(SaveDialog.FileName), nil, nil, SW_SHOWNORMAL);
117 121   end;
118 122 end;
119 123  
  124 {$IFDEF FPC}
  125 initialization
  126 {$I UGettingStarted.lrs}
  127 {$ENDIF}
120 128 end.