这次在第一版的基础上增加了对数据集的支持
unit
Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters,
cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxButtonEdit, cxStyles,
cxCustomData, cxFilter, cxData, cxDataStorage, DB, cxDBData,
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, ComCtrls, frxClass,
ToolWin, ADODB, cxGridLevel, cxClasses, cxGridCustomView, cxGrid, frxDesgn,
frxDBSet, frxDMPExport, frxDCtrl, frxBarcode;
type
TForm1 =
class
(TForm)
cxGrid1DBTableView1: TcxGridDBTableView;
cxGrid1Level1: TcxGridLevel;
cxGrid1: TcxGrid;
ADOTable1: TADOTable;
DataSource1: TDataSource;
ADOConnection1: TADOConnection;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
cxGrid1DBTableView1OID: TcxGridDBColumn;
cxGrid1DBTableView1AID: TcxGridDBColumn;
cxGrid1DBTableView1Name: TcxGridDBColumn;
cxGrid1DBTableView1Code: TcxGridDBColumn;
cxGrid1DBTableView1Description: TcxGridDBColumn;
cxGrid1DBTableView1Address: TcxGridDBColumn;
cxGrid1DBTableView1Logo: TcxGridDBColumn;
cxGrid1DBTableView1Level: TcxGridDBColumn;
cxGrid1DBTableView1CodeB: TcxGridDBColumn;
frxDesigner1: TfrxDesigner;
frxDBDataset1: TfrxDBDataset;
frxDialogControls1: TfrxDialogControls;
frxReport1: TfrxReport;
frxBarCodeObject1: TfrxBarCodeObject;
procedure
ToolButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end
;
var
Form1: TForm1;
implementation
{
$R
*.dfm}
procedure
TForm1
.
ToolButton1Click(Sender: TObject);
var
vPage: TfrxReportPage;
vTitle: TfrxReportTitle;
vHeader: TfrxPageHeader;
vView: TfrxMemoView;
vData: TfrxMasterData;
vDataView: TfrxMemoView;
vHeadView: TfrxMemoView;
i:
integer
;
vLeft:
integer
;
begin
frxReport1
.
Clear;
frxReport1
.
DataSets
.
Add(frxDBDataset1);
vPage := TfrxReportPage
.
Create(frxReport1);
vPage
.
CreateUniqueName;
vPage
.
LeftMargin :=
10
;
vPage
.
RightMargin :=
10
;
vPage
.
TopMargin :=
10
;
vPage
.
BottomMargin :=
10
;
vTitle := TfrxReportTitle
.
Create(vPage);
vTitle
.
CreateUniqueName;
vTitle
.
Height :=
48
;
vTitle
.
Top :=
0
;
vView := TfrxMemoView
.
Create(vTitle);
vView
.
CreateUniqueName;
vView
.
Top :=
0
;
vView
.
Left :=
0
;
vView
.
Width := vPage
.
Width - Round(vPage
.
LeftMargin *
2.8
) - Round(vPage
.
RightMargin*
2.8
);
vView
.
Height := vTitle
.
Height;
vView
.
Text :=
'This is a title'
;
vView
.
Font
.
Size :=
24
;
vView
.
Font
.
Style := vView
.
Font
.
Style + [fsBold];
vView
.
HAlign := frxClass
.
haCenter;
vHeader := TfrxPageHeader
.
Create(vPage);
vHeader
.
CreateUniqueName;
vHeader
.
Top :=
0
;
vHeader
.
Height :=
20
;
vData := TfrxMasterData
.
Create(vPage);
vData
.
CreateUniqueName;
vData
.
Height :=
20
;
vData
.
Top :=
0
;
vData
.
DataSet := frxDBDataset1;
vLeft :=
0
;
for
i :=
0
to
cxGrid1DBTableView1
.
ColumnCount -
1
do
begin
vDataView := TfrxMemoView
.
Create(vData);
vDataview
.
WordBreak :=
True
;
vDataView
.
Frame
.
Typ := [ftLeft, ftRight, ftTop, ftBottom];
vDataView
.
VAlign := frxClass
.
vaCenter;
vDataView
.
Top :=
0
;
vDataView
.
Left := vLeft;
vDataView
.
Height := vData
.
Height;
vDataView
.
Font
.
Name :=
'Tahoma'
;
vDataView
.
Font
.
Size :=
8
;
vHeadView := TfrxMemoView
.
Create(vHeader);
vHeadView
.
CreateUniqueName;
vHeadView
.
WordBreak :=
True
;
vHeadView
.
Frame
.
Typ := [ftLeft, ftRight, ftTop, ftBottom];
vHeadView
.
VAlign := frxClass
.
vaCenter;
vHeadView
.
Left := vLeft;
vHeadView
.
Height := vData
.
Height;
vHeadView
.
Font
.
Name :=
'Tahoma'
;
vHeadView
.
Font
.
Size :=
8
;
vDataView
.
Width := cxGrid1DBTableView1
.
Columns[i].Width;
vHeadView
.
Width :=cxGrid1DBTableView1
.
Columns[i].Width;
vHeadView
.
Text := cxGrid1DBTableView1
.
Columns[i].Caption;
vDataView
.
Text := Format(
'[frxDBDataset1."%s"]'
, [cxGrid1DBTableView1
.
Columns[i].DataBinding
.
FieldName]);
vleft := vLeft + cxGrid1DBTableView1
.
Columns[i].Width;
end
;
// frxReport1.PrepareReport();
frxReport1
.
ShowReport();
// frxReport1.DesignReport();
end
;
end
.