在 FastReport 中,ShowPreparedReport 和 ShowReport 的区别主要在于它们的调用时机和功能实现。
1. ShowPreparedReport
功能
-
用于显示已经通过
PrepareReport方法准备好的报表。 -
在调用
PrepareReport后,报表数据已经被加载和处理,ShowPreparedReport只是将这些准备好的报表内容显示出来。
使用场景
-
当你需要对报表进行多次操作(如修改数据、调整布局等)后再显示时,通常会先调用
PrepareReport,然后调用ShowPreparedReport。 -
适用于需要多次准备报表内容,但只显示一次的情况。
代码示例
frxReport1.LoadFromFile('报表路径.fr3');
frxReport1.PrepareReport; // 准备报表
// 可以在此处对报表进行进一步操作,如修改数据等
frxReport1.ShowPreparedReport; // 显示准备好的报表
2. ShowReport
功能
-
直接显示报表,无需提前调用
PrepareReport。 -
ShowReport会自动调用PrepareReport方法来准备报表内容,然后显示报表。
使用场景
-
当你只需要简单地加载报表并直接显示时,可以直接使用
ShowReport。 -
适用于不需要对报表进行额外操作的场景。
代码示例
frxReport1.LoadFromFile('报表路径.fr3');
frxReport1.ShowReport; // 直接显示报表
3. 合并报表模板并打印
场景描述
假设你有两个报表模板(报表1.fr3 和 报表2.fr3),你希望将它们合并为一个报表并打印。
实现步骤
-
加载第一个报表模板并准备:使用
LoadFromFile和PrepareReport。 -
加载第二个报表模板并准备:再次使用
LoadFromFile和PrepareReport,但需要将PrepareReport的参数设置为False,以避免覆盖第一个报表的内容。 -
显示或打印合并后的报表:使用
ShowPreparedReport或Print方法。
代码示例
procedure TForm1.Button1Click(Sender: TObject);
begin
// 加载第一个报表模板并准备
frxReport1.LoadFromFile('报表1路径.fr3');
frxReport1.PrepareReport;
// 加载第二个报表模板并准备,注意设置 PrepareReport 的参数为 False
frxReport1.LoadFromFile('报表2路径.fr3');
frxReport1.PrepareReport(False);
// 显示合并后的报表预览
frxReport1.ShowPreparedReport;
// 如果需要直接打印,可以调用 Print 方法
// frxReport1.Print;
end;
详细说明
-
PrepareReport方法:-
PrepareReport方法用于准备报表,加载数据并处理报表模板。 -
当你第一次调用
PrepareReport时,它会初始化报表并加载数据。 -
如果你再次调用
PrepareReport,默认情况下会覆盖之前的内容。为了避免覆盖,可以将参数设置为False。
-
-
ShowPreparedReport方法:-
用于显示已经准备好的报表。
-
在调用
ShowPreparedReport之前,必须先调用PrepareReport。
-
-
ShowReport方法:-
直接显示报表,内部会自动调用
PrepareReport。 -
如果你已经手动调用了
PrepareReport,则不需要再调用ShowReport,直接使用ShowPreparedReport即可。
-
总结
-
ShowPreparedReport:-
适用于需要对报表进行多次操作后再显示的场景。
-
需要先调用
PrepareReport。 -
更灵活,可以对报表进行更多自定义操作。
-
-
ShowReport:-
适用于简单地加载并直接显示报表的场景。
-
自动调用
PrepareReport,无需手动调用。 -
更简单,适合快速显示报表。
-
通过上述代码示例,可以清楚地看到如何使用 PrepareReport 和 ShowPreparedReport 来合并多个报表模板并打印。
4643

被折叠的 条评论
为什么被折叠?



