QuickReport2.0中提供的默 认打印预览窗口是英文界面的,如果开发的中文软件中带有这种英文显示, 不免有些小小的缺憾。因此有必要实现中文界面的打印预览窗口。但是Delphi提供的源代码中并没有打印预览窗口.PAS源文件,这就无法直接修改源 码,只能全部自己编程实现。经多次实践,笔者模仿实现了与默认预览窗口外观类似,功能相同的打印预览窗口。步骤如下:
1.新建一个窗体,设置Name为MyPreview。
2.在窗体上添加一Toolbar控件, 模仿默认预览窗口创建相应的Toolbutton,并设置各按钮的Hint提示。
3.添加一Panel控件,对齐方式置 为alBottom。再在此Panel上放一ProgressBar(左对齐)和Panel(右对齐), 分别显示报表装载进度和其他提示信息。
4.添加QRPreview控件,对齐方式 置为alClient。
5.添加OpenDialog,设置Filter 属性为*.QR;添加SaveDialog,设置Filter属性为*.QR*.TXT*.HTM*.CSV, 设置DefaultExt属性为*.QR。
6.双击各个Toolbutton,输入相 应代码。
可以按以下方法调用自定义预览 窗口。
重载TQuickRep的OnPreview事件, 输入如下代码:
procedureTRptForm.RptFormPreview(Sender:TObject);
begin
withTMyPreview.Create(Application)do
begin
QRPreview1.QRPrinter:=TQRPrinter(Sender);
CurRep:=self;
Show;
end;
end;
附各成员方法的具体实现:
unitMyprv;
interface
uses
Windows,Messages,SysUtils,Classes,Graphics,Controls, Forms,Dialogs,ComCtrls,ToolWin,qrprntr,Quickrpt,StdCtrls, ExtCtrls,qrextra,qrhtml;
type
TMyPreview=class(TForm)
QRPreview1:TQRPreview;
ToolBar1:TToolBar;
(其余成员变量和成员方法声明略。)
private
{Privatedeclarations}
FPageCount:integer;// 生成报表的总页数
public
{Publicdeclarations}
CurRep:TQuickRep; //所预览的报表
procedureUpdatePanelShow;
end;
implementation