作者:doomtoo0(红羽)
QuickRep中提供的默认打印预览窗口是英文界面的,有时客户会提出要中文界面和帮助提示,于是我首先想到的是修改预览窗口的.PAS源码。说干就干,按住Ctrl键点击TQuickRep,结果出来错误信息:Unable to locate file "quickrpt.pas",我昏!
既然改不了源码,只好另想办法。在QuickRep控件栏里有个TQRPreview,好!就用它吧,于是俺刻苦钻研了一下午终于做成了和原预览窗口界面一样,功能一致的中文报表打印预览窗口。现拿出献丑大家共同探讨。
步骤如下:
1. 新建一个窗体,设置Name为Form_MyPreview。(以下代码中报表form为Form_baobiao)
2. 在窗体上添加Toolbar控 件,仿照默认预览窗口创建添加相应的Toolbutton和Speedbutton,并设置各按钮的Hint中文提示。在下面代码中,toolbar里的前三个是Toolbutton并分为一组(grouped=true,style=tbsCheck),后面全是Speedbutton,中间相应插入new separator(作用不用我说了吧)。
3. 添加一 Panel控件,对齐方式置为alBottom。再在此Panel上放一TStatusBar,对齐方式alClient,双击TStatusBar按add new加两项。再在TStatusBar上左边放一 ProgressBar1(用于显示报表装载进度)对齐方式alNone,left=0,top=3,height=StatusBar1的height-2,width=自己选加吧。
4. 添加QRPreview控件,对齐方式置为alClient。
5. 在Toolbutton上加载图标:添加TImageList控件并将Toolbar的images属性与之连接。当然别忘了Toolbutton的imageindex属性要和ImageList加载的图标一致。
5. 添加OpenDialog,设置Filter属性为*.QR; 添加SaveDialog,设置Filter 属性为*.QR,设置DefaultExt属性为 QR。
6. 重写TQuickRep的OnPreview事件,当然是在报表form里写了,代码如下:
procedure TForm_baobiao.QuickRep1Preview(Sender: TObject);
begin
with TForm_MyPreview.Create(Application) do
begin
QRPreview1.QRPrinter := TQRPrinter(Sender);
Show;
end;
end;
7. 在报表form里加上: uses 新预览窗口的单元名
下面给出了完整的代码,run后预览功能和原预览窗口功能完全一样,你可以做修改使之更完美。另外我在编译此
程序时遇到以下错误提示:
[Error] Unit2.pas(42): Undeclared identifier: ''TQRPrinter''
[Error] Unit2.pas(43): Undeclared identifier: ''CurRep''
我解决的办法很菜(还忘各位指点):在报表窗口里添加TQRPreview,再在新增预览窗口里添加TQuickRep, 运行,呵呵!通过了,然后分别删除,ok了。
匆忙赶稿,如有疏漏还望指正。谢谢
unit MyPreview;
interface
uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs,
ComCtrls, ToolWin, qrprntr,Quickrpt,
StdCtrls, ExtCtrls,qrextra,Buttons,ImgList;
type
TForm_MyPreview = class(TForm)
ImageList1: TImageList;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
Panel1: TPanel;
StatusBar1: TStatusBar;
ProgressBar1: TProgressBar;
QRPreview1: TQRPreview;