德尔福快速报告 - 总页数

时间:2010-09-01 10:04:05

标签: delphi quickreports

我在我的应用程序中使用QuickReports,并希望页脚内有“Page x of x”。最好的方法是什么?

3 个答案:

答案 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)

解决方案是在预览期间计算页数,以便在将其发送到打印机时将其放在页脚中。