@@ -29,11 +29,14 @@ TMainForm = class(TForm)
2929 liShowDesigner: TdxLayoutItem;
3030 liViewReport: TdxLayoutItem;
3131 liGrid: TdxLayoutItem;
32+ procedure FormCreate (Sender: TObject);
3233 procedure btnDesignClick (Sender: TObject);
3334 procedure btnPreviewClick (Sender: TObject);
3435 procedure btnNewClick (Sender: TObject);
3536 procedure dxReport1LayoutChanged (ASender: TdxReport);
3637 private
38+ procedure LoadReportNameAndLayout ;
39+ procedure SaveReportNameAndLayout ;
3740 { Private declarations }
3841 public
3942 { Public declarations }
@@ -49,41 +52,70 @@ implementation
4952uses uData;
5053
5154
52- procedure TMainForm.btnNewClick (Sender: TObject);
55+ procedure TMainForm.FormCreate (Sender: TObject);
5356begin
54- DataModule1.mdLayouts.Append
57+ LoadReportNameAndLayout;
5558end ;
5659
57- procedure TMainForm.btnDesignClick (Sender: TObject );
60+ procedure TMainForm.LoadReportNameAndLayout ( );
5861begin
5962 if (DataModule1.mdLayouts.RecordCount = 0 ) and not (DataModule1.mdLayouts.State = dsInsert) then
6063 begin
6164 ShowMessage(' The database is empty' );
6265 Exit;
6366 end ;
67+ // Load the report name from the database
6468 dxReport1.ReportName := DataModule1.mdLayoutsName.AsString;
69+ // Load the report layout from the database
6570 dxReport1.Layout.Assign(DataModule1.mdLayoutsLayout);
71+ end ;
72+
73+ procedure TMainForm.SaveReportNameAndLayout ();
74+ begin
75+ // Start editing the active dataset record
76+ DataModule1.mdLayouts.Edit;
77+ // Save the report name
78+ DataModule1.mdLayoutsName.AsString := dxReport1.ReportName;
79+ // Save the report layout
80+ DataModule1.mdLayoutsLayout.Assign(dxReport1.Layout);
81+ // Finish editing and write a modified record
82+ DataModule1.mdLayouts.Post;
83+ end ;
84+
85+
86+ procedure TMainForm.btnNewClick (Sender: TObject);
87+ begin
88+ DataModule1.mdLayouts.Append
89+ end ;
90+
91+ procedure TMainForm.btnDesignClick (Sender: TObject);
92+ begin
93+ if (dxReport1.ReportName = ' ' ) then
94+ begin
95+ ShowMessage(' The report is not specified' );
96+ Exit;
97+ end ;
6698 dxReport1.ShowDesigner;
6799end ;
68100
69101procedure TMainForm.btnPreviewClick (Sender: TObject);
70102begin
71- if (DataModule1.mdLayoutsName.AsString = ' ' ) then
103+ if (dxReport1.ReportName = ' ' ) then
72104 begin
73105 ShowMessage(' The report is not specified' );
74106 Exit;
75107 end ;
76-
77- dxReport1.ReportName := DataModule1.mdLayoutsName.AsString;
78- dxReport1.Layout.Assign(DataModule1.mdLayoutsLayout);
79108 dxReport1.ShowViewer;
80109end ;
81110
111+ // Event that is called when a user saves a report layout in the Report Designer
82112procedure TMainForm.dxReport1LayoutChanged (ASender: TdxReport);
83113begin
84114 DataModule1.mdLayouts.Edit;
85- DataModule1.mdLayoutsLayout.Assign(dxReport1.Layout);
115+ // Save the report name in the database
86116 DataModule1.mdLayoutsName.AsString := dxReport1.ReportName;
117+ // Copy the report layout to the BLOB field
118+ DataModule1.mdLayoutsLayout.Assign(dxReport1.Layout);
87119 DataModule1.mdLayouts.Post;
88120end ;
89121
0 commit comments