/Demos/REPORTS/UNIT5.PAS

http://github.com/FastReports/FreeReport · Pascal · 97 lines · 76 code · 18 blank · 3 comment · 2 complexity · d3b1d8ecc69e32e397fe233312c60d47 MD5 · raw file

  1. unit Unit5;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5. FR_DSet, FR_Class;
  6. type
  7. TForm5 = class(TForm)
  8. frReport1: TfrReport;
  9. CrossRowDataset: TFRUserDataset;
  10. CrossColumnDataset: TFRUserDataset;
  11. procedure CrossRowDatasetFirst(Sender: TObject);
  12. procedure CrossRowDatasetNext(Sender: TObject);
  13. procedure CrossRowDatasetCheckEOF(Sender: TObject; var EOF: Boolean);
  14. procedure CrossColumnDatasetFirst(Sender: TObject);
  15. procedure CrossColumnDatasetNext(Sender: TObject);
  16. procedure CrossColumnDatasetCheckEOF(Sender: TObject;
  17. var EOF: Boolean);
  18. procedure frReport1GetValue(const ParName: string;
  19. var ParValue: Variant);
  20. procedure FormCreate(Sender: TObject);
  21. private
  22. { Private declarations }
  23. public
  24. { Public declarations }
  25. procedure StartReport;
  26. end;
  27. var
  28. Form5: TForm5;
  29. implementation
  30. uses datasets, Unit2;
  31. {$R *.DFM}
  32. var i, j: Integer;
  33. RowCount, ColCount: Integer;
  34. procedure TForm5.FormCreate(Sender: TObject);
  35. begin
  36. ColCount := 16; RowCount := 20;
  37. end;
  38. procedure TForm5.StartReport;
  39. begin
  40. if Form2.ShowModal = mrOk then
  41. begin
  42. ColCount := StrToInt(Form2.Edit1.Text);
  43. RowCount := StrToInt(Form2.Edit2.Text);
  44. frReport1.ShowReport;
  45. end;
  46. end;
  47. procedure TForm5.CrossRowDatasetFirst(Sender: TObject);
  48. begin
  49. i := 0;
  50. end;
  51. procedure TForm5.CrossRowDatasetNext(Sender: TObject);
  52. begin
  53. Inc(i);
  54. end;
  55. procedure TForm5.CrossRowDatasetCheckEOF(Sender: TObject;
  56. var EOF: Boolean);
  57. begin
  58. EOF := EOF or (i >= RowCount);
  59. end;
  60. procedure TForm5.CrossColumnDatasetFirst(Sender: TObject);
  61. begin
  62. j := 0;
  63. end;
  64. procedure TForm5.CrossColumnDatasetNext(Sender: TObject);
  65. begin
  66. Inc(j);
  67. end;
  68. procedure TForm5.CrossColumnDatasetCheckEOF(Sender: TObject;
  69. var EOF: Boolean);
  70. begin
  71. EOF := EOF or (j >= ColCount);
  72. end;
  73. procedure TForm5.frReport1GetValue(const ParName: string;
  74. var ParValue: Variant);
  75. begin
  76. if AnsiUpperCase(ParName) = 'CELL' then
  77. ParValue := IntToStr(i * ColCount + j + 1);
  78. end;
  79. end.