📄 frmqrpt.pas
字号:
unit FrmQRpt;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, ExtCtrls, printers, qrextra, QRExport, qrprntr, quickrpt, QRCtrls,
TypInfo;
type
TQRptFrm = class(TForm)
Table1: TTable;
QuickRep1: TQuickRep;
ColumnHeaderBand1: TQRBand;
DetailBand1: TQRBand;
PageFooterBand1: TQRBand;
PageHeaderBand1: TQRBand;
SummaryBand1: TQRBand;
TitleBand1: TQRBand;
QRLabel1: TQRLabel;
QRLabel2: TQRLabel;
QRLabel3: TQRLabel;
QRLabel4: TQRLabel;
QRLabel5: TQRLabel;
QRLabel6: TQRLabel;
QRDBText1: TQRDBText;
QRDBText2: TQRDBText;
QRDBText3: TQRDBText;
QRDBText4: TQRDBText;
QRExpr1: TQRExpr;
QRExpr2: TQRExpr;
QRTextFilter1: TQRTextFilter;
QRCSVFilter1: TQRCSVFilter;
QRHTMLFilter1: TQRHTMLFilter;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure InitData;
end;
var
QRptFrm: TQRptFrm;
implementation
{$R *.dfm}
{
PageNumber: 在报表生成过程中可以使用该属性来确定正在生成的页;
PrintIfEmpty:用来指定数据集没有记录时报表的行为,false时不打印,true时打印一个包含页头标,标题,综合栏及页脚的页;
RecorCount: 数据集里的记录数;
RecordNumber:报表正在处理的当前记录号,从0开始;
ShowProcess: 是否显示打印进度条
State:报表当前的状态;
可以使用PageSetupDialog来请用户选择纸张、纵横向等设置,如何把用户的设置赋值给QuickPeport的技术细节见主窗口的单元文件;
注意:如果是直接对QuickPeport的纸张进行赋值,而该纸张在当前系统中并没有安装的话,预览和打印都会出问题;
}
procedure TQRptFrm.FormCreate(Sender: TObject);
begin
try
InitData;
Table1.Open;
QuickRep1.DataSet := table1;
//QuickRep1.Bands := [HasColumnHeader, HasDetail, HasPageFooter, HasPageHeader, HasTitle];
QuickRep1.Bands.HasColumnHeader := true;
QuickRep1.Bands.HasDetail := true;
QuickRep1.Bands.HasPageFooter := true;
QuickRep1.Bands.HasPageHeader := true;
QuickRep1.Bands.HasTitle := true;
QuickRep1.Page.PaperSize := TQRPaperSize(GetEnumValue(TypeInfo(TQRPaperSize), 'A4'));
QuickRep1.PrintIfEmpty := true;
QRDBText1.DataSet := table1;
QRDBText1.DataField := 'fID';
QRDBText2.DataSet := table1;
QRDBText2.DataField := 'fName';
QRDBText3.DataSet := table1;
QRDBText3.DataField := 'fType';
QRDBText4.DataSet := table1;
QRDBText4.DataField := 'fDescription';
QRExpr1.Expression := '''第''+ PAGENUMBER + ''页''';
QRExpr2.Expression := '''当前时间'' + DATE + '' '' + TIME';
QRExpr2.AlignToBand := true;//紧靠着最左边或最右边
//界面上的QRTextFilter,QRHTMLFilter, QRCSVFilter的作用是,
//在预览页面按下保存按钮时,可以将报表生成对应格式的文件
//打印纸张问题不起作用??
except
ShowMessage('QuickReport form rise exception!');
end;
end;
procedure TQRptFrm.FormShow(Sender: TObject);
begin
//
end;
procedure TQRptFrm.InitData;
var
ii : Integer;
begin
Table1.DatabaseName := ExtractFilePath(Application.ExeName) + 'DB';
Table1.TableType := ttParadox;
Table1.TableName := 'r_User';
Table1.Close;
Table1.Open;
while not table1.Eof do
Table1.Delete;
for ii:=1 to 100 do begin
table1.Insert;
table1.FieldByName('fID').AsInteger := ii;
table1.FieldByName('fName').AsString := '崔朝' + IntToStr(ii);
end;
table1.Post;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -