自定义快速报表的打印预览窗口

加qq319128091

加qq319128091

2016-02-19 16:44

生活已是百般艰难,为何不努力一点。下面图老师就给大家分享自定义快速报表的打印预览窗口,希望可以让热爱学习的朋友们体会到设计的小小的乐趣。

  QuickReport2.0中提供的默 认打印预览窗口是英文界面的,如果开发的中文软件中带有这种英文显示, 不免有些小小的缺憾。因此有必要实现中文界面的打印预览窗口。但是Delphi提供的源代码中并没有打印预览窗口.PAS源文件,这就无法直接修改源 码,只能全部自己编程实现。经多次实践,笔者模仿实现了与默认预览窗口外观类似,功能相同的打印预览窗口。步骤如下:

  1.新建一个窗体,设置Name为MyPreview。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  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);beginwithTMyPreview.Create(Application)dobeginQRPreview1.QRPrinter:=TQRPrinter(Sender);CurRep:=self;Show;end;end;

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  附各成员方法的具体实现:

  

unitMyprv;interfaceusesWindows,Messages,SysUtils,Classes,Graphics,Controls, Forms,Dialogs,ComCtrls,ToolWin,qrprntr,Quickrpt,StdCtrls, ExtCtrls,qrextra,qrhtml;typeTMyPreview=class(TForm)QRPreview1:TQRPreview;ToolBar1:TToolBar;(其余成员变量和成员方法声明略。)private{Privatedeclarations}FPageCount:integer;// 生成报表的总页数public{Publicdeclarations}CurRep:TQuickRep; //所预览的报表procedureUpdatePanelShow;end;implementation{$R*.DFM}procedureTMyPreview.UpdatePanelShow;begin//更新显示Panel2.Caption:=第+inttostr(QRPreview1. eNumber)+ 页总+inttostr(FPageCount)+页;end;procedureTMyPreview.ToolButton2Click(Sender:TObject);begin//ZoomToFit缩放至全屏QRPreview1.ZoomToFit;end;procedureTMyPreview.ToolButton3Click(Sender:TObject);begin//ZoomTo100%缩放至实际大小QRPreview1.Zoom:=100;end;procedureTMyPreview.ToolButton4Click(Sender:TObject);begin//ZoomToWidth缩放至页宽QRPreview1.ZoomToWidth;end;procedureTMyPreview.ToolButton6Click(Sender:TObject);begin//FirstpageQRPreview1.PageNumber:=1;UpdatePanelShow;end;procedureTMyPreview.ToolButton8Click(Sender:TObject);begin//priorpageQRPreview1.PageNumber:=QRPreview1.PageNumber+1;UpdatePanelShow;end;procedureTMyPreview.ToolButton7Click(Sender:TObject);begin//nextpageQRPreview1.PageNumber:=QRPreview1.PageNumber1;ifQRPreview1.PageNumber=0thenQRPreview1.PageNumber:=1;UpdatePanelShow;end;procedureTMyPreview.ToolButton9Click(Sender:TObject);begin//LastpageQRPreview1.PageNumber:=FPageCount;UpdatePanelShow;end;procedureTMyPreview.QRPreview1PageAvailable(Sender:TObject; PageNum:Integer);begin//getpagecountFPageCount:=PageNum;UpdatePanelShow;end;procedureTMyPreview.FormClose(Sender:TObject;varAction:TCloseAction);beginCurRep:=nil;Action:=caFree;end;procedureTMyPreview.ToolButton14Click(Sender:TObject);begin//closethewindowClose;end;procedureTMyPreview.ToolButton11Click(Sender:TObject);begin//printsetupQRPreview1.QRPrinter.PrintSetup;end;procedureTMyPreview.ToolButton13Click(Sender:TObject);begin//printQRPreview1.QRPrinter.Print;end;procedureTMyPreview.ToolButton16Click(Sender:TObject);begin//savebuttonifSaveDlg1.Executethenbeginif(SaveDlg1.FIlterIndex $#@60;$#@62;1)and(CurRep=nil)thenExit;caseSaveDlg1.FilterINdexof1://*.QRQRPreview1.QRPrinter.Save(SaveDlg1.FileName);2://*.TXTCurRep.ExportToFilter(TQRAsciiExportFilter.Create(SaveDlg1.FileName));3://*.HTMCurRep.ExportToFilter(TQRHTMLExportFilter.Create(SaveDlg1.FileName));4: //*.CSVCurRep.ExportToFilter(TQRCSVExportFilter.Create(SaveDlg1.FileName));end;end;end;procedureTMyPreview.ToolButton17Click(Sender:TObject);begin//loadbuttonifOpenDlg1.ExecutethenQRPreview1.QRPrinter.Load(OpenDlg1.FileName);end;procedureTMyPreview.QRPreview1ProgressUpdate(Sender:TObject; Progress:Integer);begin//updageprogressbarProgressBar1.Position:=Progress;end;procedureTMyPreview.SaveDlg1TypeChange(Sender:TObject);begin//setDefaultExtpropertyofSavedialogwithSaveDlg1docaseFilterIndexof0: DefaultExt:=.QR;1: DefaultExt:=.TXT;2: DefaultExt:=.HTM;3: DefaultExt:=.CSV;end;end;end.//endofUnit

展开更多 50%)
分享

猜你喜欢

自定义快速报表的打印预览窗口

编程语言 网络编程
自定义快速报表的打印预览窗口

在C++Builder中自定义预览窗口

编程语言 网络编程
在C++Builder中自定义预览窗口

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

如何自定义提示窗口(Hint Window)

编程语言 网络编程
如何自定义提示窗口(Hint Window)

用FASTREPORT实现WEB应用中自定义报表

编程语言 网络编程
用FASTREPORT实现WEB应用中自定义报表

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

自定义的TShockwaveflash

编程语言 网络编程
自定义的TShockwaveflash

《死侍》自定义键位心得完美自定义键位

电脑网络
《死侍》自定义键位心得完美自定义键位

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

说一说如何配置Oracle的MTS Part1

说一说如何配置Oracle的MTS Part1

Oracle 10G 中的“回收站”

Oracle 10G 中的“回收站”
下拉加载更多内容 ↓