我在我的应用程序中使用QuickReports,并希望页脚内有“Page x of x”。最好的方法是什么?
答案 0 :(得分:7)
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.QuickRep1.Prepare;
Form2.QuickRep1.FTotalPages := Form2.QuickRep1.QRPRinter.PageCount;
Form2.QuickRep1.QRPrinter.Free;
Form2.QuickRep1.QuickRep1.QRPrinter := nil;
Form2.QuickRep1.PreviewModal; // or .Print
end;
FTotalPages在Form2中声明,它包含TQuickRep组件。
public
{ Public declarations }
FTotalPages: Integer;
请注意,在准备之后和在PreviewModal(或.Print)之前必须释放QRPrinter对象,否则会出现内存泄漏。
在Form2中,在Quickreport1上放置一个QRLabel,并实现它的onPrint事件处理程序
procedure TForm2.QRLabel1Print(sender: TObject; var Value: string);
begin
Value := 'Page: ' + IntToStr(QuickRep1.QRPrinter.PageNumber) + ' of ' + IntToStr(FTotalPages);
end;
答案 1 :(得分:1)
首先准备文档,以便系统本身知道将生成多少页。你可以使用一个系统变量(手头没有QR来告诉你确切的名字)。
例如:
procedure TForm1.Click(Sender: TObject);
begin
//this actually run the report in memory to
//calculate things like total page count
Report1.Prepare;
Report1.Print; //or PreviewModal;
end;
答案 2 :(得分:0)
解决方案是在预览期间计算页数,以便在将其发送到打印机时将其放在页脚中。