delphi FastReport 综合报表(批量预览、打印)

发布时间 2023-05-27 15:11:40作者: txgh

FastReport 综合报表(批量预览、打印)

属性和方法

TfrxReport.ShowPreparedReport

procedure ShowPreparedReport;

显示之前通过PrepareReport 调用构建的报表。

当报表组件构建报表并接收到另一个 PrepareReportExport 命令时,它会将其放入延迟命令列表中,并在当前操作完成后才运行命令。在单线程应用程序中用于与 ProcessMessages 操作同步。

例子

批量打印

在窗体上放置TfrxReport组件frxReport1

procedure TForm1.Button5Click(Sender: TObject);
begin
  //清空自定义预览报表(在批量加载报表前不能设置Preview属性)
  frxReport1.Preview := nil;
  //加载报表1
  frxReport1.LoadFromFile('C:\Users\Administrator\Desktop\测试报表1.fr3');
  frxReport1.PrepareReport;
  //加载报表2,不清除已加载的报表1
  frxReport1.LoadFromFile('C:\Users\Administrator\Desktop\测试报表2.fr3');
  frxReport1.PrepareReport(False);
  //打印
  frxReport1.Print;
end;

批量预览

在窗体上放置TfrxReport组件frxReport1,放置TfrxPreview 组件frxPreview1

procedure TForm1.Button6Click(Sender: TObject);
begin
  //清空自定义预览报表(在批量加载报表前不能设置Preview属性)
  frxReport1.Preview := nil;
  //加载报表1
  frxReport1.LoadFromFile('C:\Users\Administrator\Desktop\测试报表1.fr3');
  frxReport1.PrepareReport;
  //加载报表2,不清除已加载的报表1
  frxReport1.LoadFromFile('C:\Users\Administrator\Desktop\测试报表2.fr3');
  frxReport1.PrepareReport(False);
  //设置自定义预览报表(不设置时使用标准窗口)
  frxReport1.Preview := frxPreview1;
  //显示报表(不能使用ShowReport方法显示报表)
  frxReport1.ShowPreparedReport;
end;

在批量加载报表前不能设置Preview属性或批量加载报表后使用ShowReport(False)方法显示报表,会导致只显示最后一个加载的报表
原因,PrepareReport方法构建报表时,调用PreviewPages.Initialize初始化预览页面,TfrxPreviewPages.Initialize中调用Report.InternalOnProgressStart 处理报表引擎的准备,TfrxReport.InternalOnProgressStart中判断如果设置了Preview属性(ShowReport方法会设置Preview属性为标准预览窗口)时,调用Preview.InternalOnProgressStart方法清空已加载的报表