rptdataset.pp 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. unit rptdataset;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes,
  6. SysUtils,
  7. fpreport,
  8. fpreportdb,
  9. db,
  10. dbf,
  11. udapp;
  12. type
  13. TDatasetDemo = class(TReportDemoApp)
  14. private
  15. lReportData: TFPReportDatasetData;
  16. DataSet: TDBF;
  17. Public
  18. procedure CreateReportDesign; override;
  19. procedure InitialiseData; override;
  20. public
  21. constructor Create(AOwner : TComponent); override;
  22. destructor Destroy; override;
  23. end;
  24. implementation
  25. uses
  26. fpTTF,
  27. FPCanvas,
  28. dbf_fields;
  29. { TDatasetDemo }
  30. procedure TDatasetDemo.CreateReportDesign;
  31. var
  32. p: TFPReportPage;
  33. TitleBand: TFPReportTitleBand;
  34. DataBand: TFPReportDataBand;
  35. Memo: TFPReportMemo;
  36. Image: TFPReportImage;
  37. PageFooter: TFPReportPageFooterBand;
  38. begin
  39. PaperManager.RegisterStandardSizes;
  40. rpt.Author := 'Graeme Geldenhuys';
  41. rpt.Title := 'FPReport Demo 8 - Datasets';
  42. p := TFPReportPage.Create(rpt);
  43. p.Orientation := poPortrait;
  44. p.PageSize.PaperName := 'A4';
  45. { page margins }
  46. p.Margins.Left := 30;
  47. p.Margins.Top := 20;
  48. p.Margins.Right := 30;
  49. p.Margins.Bottom := 20;
  50. p.Data := lReportData;
  51. p.Font.Name := 'LiberationSans';
  52. TitleBand := TFPReportTitleBand.Create(p);
  53. TitleBand.Layout.Height := 40;
  54. Memo := TFPReportMemo.Create(TitleBand);
  55. Memo.Layout.Left := 5;
  56. Memo.Layout.Top := 0;
  57. Memo.Layout.Width := 140;
  58. Memo.Layout.Height := 15;
  59. Memo.Text := 'Dataset Demo';
  60. Memo.TextAlignment.Vertical := tlCenter;
  61. Memo.TextAlignment.Horizontal := taCentered;
  62. Memo.UseParentFont := False;
  63. Memo.Font.Color := TFPReportColor($000080);
  64. Memo.Font.Size := 24;
  65. DataBand := TFPReportDataBand.Create(p);
  66. DataBand.Layout.Height := 30;
  67. Image := TFPReportImage.Create(DataBand);
  68. Image.Layout.Top := 0;
  69. Image.Layout.Left := 10;
  70. Image.Layout.Height := 20;
  71. Image.Layout.Width := 14.8;
  72. Image.FieldName := 'Photo';
  73. Image.Stretched := True;
  74. Memo := TFPReportMemo.Create(DataBand);
  75. Memo.Layout.Left := 30;
  76. Memo.Layout.Top := 0;
  77. Memo.Layout.Width := 50;
  78. Memo.Layout.Height := 5;
  79. Memo.Text := 'Name: [name]';
  80. Memo := TFPReportMemo.Create(DataBand);
  81. Memo.Layout.Left := 30;
  82. Memo.Layout.Top := 5;
  83. Memo.Layout.Width := 80;
  84. Memo.Layout.Height := 5;
  85. Memo.Text := 'Email: [Address]';
  86. Memo := TFPReportMemo.Create(DataBand);
  87. Memo.Layout.Left := 30;
  88. Memo.Layout.Top := 10;
  89. Memo.Layout.Width := 50;
  90. Memo.Layout.Height := 5;
  91. Memo.Text := 'Age: [Age]';
  92. PageFooter := TFPReportPageFooterBand.Create(p);
  93. PageFooter.Layout.Height := 30;
  94. Memo := TFPReportMemo.Create(PageFooter);
  95. Memo.Layout.Left := 130;
  96. Memo.Layout.Top := 20;
  97. Memo.Layout.Width := 20;
  98. Memo.Layout.Height := 5;
  99. Memo.Text := 'Page [PageNo]';
  100. Memo.TextAlignment.Vertical := tlBottom;
  101. Memo.TextAlignment.Horizontal := taRightJustified;
  102. end;
  103. procedure TDatasetDemo.InitialiseData;
  104. var
  105. fields: TDbfFieldDefs;
  106. lDataSet : TDBF;
  107. begin
  108. lDataSet := TDBF.Create(Self);
  109. lDataSet.TableName := 'test.dbf';
  110. Dataset:=lDataset;
  111. lReportData.DataSet:= DataSet;
  112. if FileExists('test.dbf') then
  113. exit;
  114. // If you wanted to create a new DBF table
  115. fields := TDbfFieldDefs.Create(nil);
  116. fields.Add('Name', ftString, 50);
  117. fields.Add('Address', ftString, 150);
  118. fields.Add('Age', ftInteger);
  119. fields.Add('Photo', ftBlob);
  120. lDataSet.CreateTableEx(fields); // <== Now we have an empty db table
  121. lDataSet.Open;
  122. lDataSet.Insert;
  123. lDataSet.FieldByName('Name').AsString := 'Kimi Raikkonen';
  124. lDataSet.FieldByName('Address').AsString := '[email protected]';
  125. lDataSet.FieldByName('Age').AsInteger := 35;
  126. TBlobField(lDataSet.FieldByName('Photo')).LoadFromFile(ExpandFileName('../common/pictures/man01.png'));
  127. lDataSet.Post;
  128. lDataSet.Insert;
  129. lDataSet.FieldByName('Name').AsString := 'Michael Schumacher';
  130. lDataSet.FieldByName('Address').AsString := '[email protected]';
  131. lDataSet.FieldByName('Age').AsInteger := 28;
  132. TBlobField(lDataSet.FieldByName('Photo')).LoadFromFile(ExpandFileName('../common/pictures/man02.png'));
  133. lDataSet.Post;
  134. lDataSet.Insert;
  135. lDataSet.FieldByName('Name').AsString := 'Alain Prost';
  136. lDataSet.FieldByName('Address').AsString := '[email protected]';
  137. lDataSet.FieldByName('Age').AsInteger := 64;
  138. TBlobField(lDataSet.FieldByName('Photo')).LoadFromFile(ExpandFileName('../common/pictures/man03.png'));
  139. lDataSet.Post;
  140. lDataSet.Insert;
  141. lDataSet.FieldByName('Name').AsString := 'Jenson Button';
  142. lDataSet.FieldByName('Address').AsString := '[email protected]';
  143. lDataSet.FieldByName('Age').AsInteger := 50;
  144. TBlobField(lDataSet.FieldByName('Photo')).LoadFromFile(ExpandFileName('../common/pictures/man04.png'));
  145. lDataSet.Post;
  146. lDataSet.Insert;
  147. lDataSet.FieldByName('Name').AsString := 'Fernando Allonso';
  148. lDataSet.FieldByName('Address').AsString := '[email protected]';
  149. lDataSet.FieldByName('Age').AsInteger := 47;
  150. TBlobField(lDataSet.FieldByName('Photo')).LoadFromFile(ExpandFileName('../common/pictures/man05.png'));
  151. lDataSet.Post;
  152. fields.Free;
  153. end;
  154. constructor TDatasetDemo.Create(AOwner : TComponent);
  155. begin
  156. Inherited;
  157. lReportData := TFPReportDatasetData.Create(nil);
  158. end;
  159. destructor TDatasetDemo.Destroy;
  160. begin
  161. FreeAndNil(lReportData);
  162. FreeAndNil(DataSet);
  163. inherited Destroy;
  164. end;
  165. end.