-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathuMainForm.pas
More file actions
109 lines (92 loc) · 2.97 KB
/
uMainForm.pas
File metadata and controls
109 lines (92 loc) · 2.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
unit uMainForm;
interface
uses Vcl.Forms, dxMessageDialog, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters, Vcl.Menus,
cxStyles, cxCustomData, cxFilter, cxData, cxDataStorage, cxEdit, cxNavigator,
dxDateRanges, dxScrollbarAnnotations, Data.DB, cxDBData,
dxLayoutControlAdapters, dxLayoutContainer, dxReport, cxGridLevel,
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses,
cxGridCustomView, cxGrid, Vcl.StdCtrls, cxButtons, System.Classes,
Vcl.Controls, dxLayoutControl;
type
TMainForm = class(TForm)
dxReport1: TdxReport;
btnDesign: TcxButton;
btnPreview: TcxButton;
gvLayouts: TcxGridDBTableView;
cxGrid2Level1: TcxGridLevel;
cxGrid2: TcxGrid;
btnNew: TcxButton;
gvLayoutsRecId: TcxGridDBColumn;
gvLayoutsLayout: TcxGridDBColumn;
gvLayoutsName: TcxGridDBColumn;
dxLayoutControl1Group_Root: TdxLayoutGroup;
dxLayoutControl1: TdxLayoutControl;
liNew: TdxLayoutItem;
liShowDesigner: TdxLayoutItem;
liViewReport: TdxLayoutItem;
liGrid: TdxLayoutItem;
procedure btnDesignClick(Sender: TObject);
procedure btnPreviewClick(Sender: TObject);
procedure btnNewClick(Sender: TObject);
procedure dxReport1LayoutChanged(ASender: TdxReport);
private
procedure LoadReportNameAndLayout;
procedure SaveReportNameAndLayout;
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R *.dfm}
uses uData;
procedure TMainForm.LoadReportNameAndLayout();
begin
if (DataModule1.mdLayouts.RecordCount = 0) and not (DataModule1.mdLayouts.State = dsInsert) then
begin
dxShowMessage('The database is empty');
Exit;
end;
// Load the report name from the database
dxReport1.ReportName := DataModule1.mdLayoutsName.AsString;
// Load the report layout from the database
dxReport1.Layout.Assign(DataModule1.mdLayoutsLayout);
end;
procedure TMainForm.SaveReportNameAndLayout();
begin
// Start editing the active dataset record
DataModule1.mdLayouts.Edit;
// Save the report name
DataModule1.mdLayoutsName.AsString := dxReport1.ReportName;
// Save the report layout
DataModule1.mdLayoutsLayout.Assign(dxReport1.Layout);
// Finish editing and post the modified record to the database
DataModule1.mdLayouts.Post;
end;
// Handle the OnLayoutChanged event raised when a user saves a report layout in the Report Designer
procedure TMainForm.dxReport1LayoutChanged(ASender: TdxReport);
begin
SaveReportNameAndLayout;
end;
// To create a new report layout, create a new dataset record
procedure TMainForm.btnNewClick(Sender: TObject);
begin
DataModule1.mdLayouts.Append;
end;
procedure TMainForm.btnDesignClick(Sender: TObject);
begin
LoadReportNameAndLayout;
dxReport1.ShowDesigner;
end;
procedure TMainForm.btnPreviewClick(Sender: TObject);
begin
LoadReportNameAndLayout;
if (dxReport1.ReportName = '') then
begin
dxShowMessage('The report is not specified');
Exit;
end;
dxReport1.ShowViewer;
end;
end.