说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

自定义快速报表的打印预览窗口-Delphi资料

HTML文档下载 WORD文档下载 PDF文档下载
自定义快速报表的打印预览窗口-Delphi资料

---- Quick Report 2.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 事 件, 输 入 如 下 代 码:

procedure TRptForm.RptFormPreview(Sender: TObject);

begin

with TMyPreview.Create(Application) do

begin

QRPreview1.QRPrinter := TQRPrinter(Sender);

CurRep := self;

Show;

end;

end;

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

unit Myprv;

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

{ Private declarations }

FPageCount : integer; // 生 成 报 表 的 总 页 数

public

{ Public declarations }

CurRep : TQuickRep; // 所 预 览 的 报 表

procedure UpdatePanelShow;

end;

implementation

{$R *.DFM}

procedure TMyPreview.UpdatePanelShow;

begin // 更 新 显 示

Panel2.Caption := ' 第 '+inttostr(QRPreview1.PageNumber)+ ' 页 总 '+inttostr(FPageCount)+' 页';

end;

procedure TMyPreview.ToolButton2Click(Sender: TObject);

begin //ZoomToFit 缩 放 至 全 屏

QRPreview1.ZoomToFit;

end;

procedure TMyPreview.ToolButton3Click(Sender: TObject);

begin //ZoomTo100% 缩 放 至 实 际 大 小

QRPreview1.Zoom:=100;

end;

procedure TMyPreview.ToolButton4Click(Sender: TObject);

begin //ZoomToWidth 缩 放 至 页 宽

QRPreview1.ZoomToWidth;

end;

procedure TMyPreview.ToolButton6Click(Sender: TObject);

begin //First page

QRPreview1.PageNumber := 1;

UpdatePanelShow;

end;

procedure TMyPreview.ToolButton8Click(Sender: TObject);

begin //prior page

QRPreview1.PageNumber := QRPreview1.PageNumber+1;

UpdatePanelShow;

end;

procedure TMyPreview.ToolButton7Click(Sender: TObject);

begin //next page

QRPreview1.PageNumber := QRPreview1.PageNumber-1;

if QRPreview1.PageNumber =0 then

QRPreview1.PageNumber:=1;

UpdatePanelShow;

end;

procedure TMyPreview.ToolButton9Click(Sender: TObject);

begin //Last page

QRPreview1.PageNumber := FPageCount;

UpdatePanelShow;

end;

procedure TMyPreview.QRPreview1PageAvailable(Sender: TObject; PageNum: Integer);

begin //get pagecount

FPageCount := PageNum ;

UpdatePanelShow;

end;

procedure TMyPreview.FormClose(Sender: TObject; var Action: TCloseAction);

begin

CurRep := nil;

Action := caFree;

end;

procedure TMyPreview.ToolButton14Click(Sender: TObject);

begin //close the window

Close;

end;

procedure TMyPreview.ToolButton11Click(Sender: TObject);

begin //print setup

QRPreview1.QRPrinter.PrintSetup;

end;

procedure TMyPreview.ToolButton13Click(Sender: TObject);

begin //print

QRPreview1.QRPrinter.Print;

end;

procedure TMyPreview.ToolButton16Click(Sender: TObject);

begin //save button

if SaveDlg1.Execute then

begin

if (SaveDlg1.FIlterIndex <>1) and (CurRep = nil) then

Exit;

case SaveDlg1.FilterINdex of

1: //--*.QR

QRPreview1.QRPrinter.Save(SaveDlg1.FileName);

2: //--*.TXT

CurRep.ExportToFilter (TQRAsciiExportFilter.Create(SaveDlg1.FileName));

3: //--*.HTM

CurRep.ExportToFilter (TQRHTMLExportFilter.Create(SaveDlg1.FileName));

4: //--*.CSV

CurRep.ExportToFilter(TQRCSVExportFilter.Create(SaveDlg1.FileName));

end;

end;

end;

procedure TMyPreview.ToolButton17Click(Sender: TObject);

begin //load button

if OpenDlg1.Execute then

QRPreview1.QRPrinter.Load(OpenDlg1.FileName);

end;

procedure TMyPreview.QRPreview1ProgressUpdate(Sender: TObject; Progress: Integer);

begin //updage progress bar

ProgressBar1.Position := Progress;

end;

procedure TMyPreview.SaveDlg1TypeChange(Sender: TObject);

begin //set DefaultExt property of Savedialog

with SaveDlg1 do

case FilterIndex of

0: DefaultExt := '.QR';

1: DefaultExt := '.TXT';

2: DefaultExt := '.HTM';

3: DefaultExt := '.CSV';

end;

end;

end.//end of Unit

前IE团队领导:IE是如何走向衰败的 谷歌更新BigQuery 允许在其中加入大型数据集 初创公司Spiral Genetics:超越现有DNA序列分析平台40倍速 六大开源监测工具 你用过哪个? TUP第28期:Intel 微软 Yahoo的大数据实践 惊变14天,从“小白”到上架App Store商店 “今日头条”CEO张一鸣:我是爱冒险的技术宅 OpenStack基金会COO Mark Collier:2014年将超越AWS Evernote更新Android SDK:新增商务服务并拆分“印象笔记” 主流编译器对C++11的支持现状比较 GCC 4.8发布,提升对C++11的支持 英国政府下令首选开源软件 为何美国IaaS收购被引爆?基于IaaS的四个误解和四个猜想 Kinect SDK v1.7迎来重大更新 如何激励同事编写单元测试? 谷歌GCE vs. 亚马逊EC2:快源于谷歌本有的底蕴 不要责怪开源技术 它是无辜的 短命:微软将于2014年停止对WP8系统支持 Native和Web过时了,企业级移动开发流行用Hybrid App 与EverNote竞争?谷歌Google Keep浮出水面 又一次跨越:著名3D游戏引擎Unity版本更新 Feedly团队:自研后端平台或将开源 StackMob的诱惑:16小时,山寨一款移动App “云”筹帷幄 开发者必知的5大SaaS在线服务工具 超350个政府项目托管在GitHub 政府开源会成主流? Kinect for Windows SDK 1.7正式发布,支持3D建模 SafeNet与风河系统联手推出VxWorks嵌入式系统软件货币化方案 Windows Server 2012中的动态负载均衡 Google等互联网公司将成为创新中心? 在Hadoop的战争中 MapR获新一轮3000万美元融资 初创公司DNNresearch:谷歌科技帝国的新“基石” DELPHI高手!-----300分 ASP开发问题,如何在用户提交注册信息时自动分配给它一个用户ID号? 我想在 Excel 中给文件字加双下划线,可是编译时提示变量没有定义 有谁能给我一份简单的COM代码? 有关interface??? 昨晚,初恋情人不经意的出现在梦中,你到底离你的初恋情人有多远,撒分了 一个昨天没搞明白的问题! redhat 7.2中如何设置代理服务器 求教高手一个Java中一直困扰我的问题,急!急!急! 谁能够给我个例子实现 Dll向应用程序单向通信 Dll->EXE?50分? 请问.......... 在数据窗口拖动垂直滚动条死机。只能ctrl+alt+del结束任务。倾听你的声音。 请教各位大虾两个Sql语句 哪里有visual studio.net下载? 那里有sql server 2000企业版下载的 xml的学习??????双儿 怎么比较两个LPTSTR字符串啊??? 语句“rs.Open sql,conn,1,1”中后边的两个数字参数是何意思? 如何获取datawindow中文本框内容? 请教公司大院网络系统设计方案要怎写?会遇到什么问题? 关于clientdataset的返回值问题 关于报表打印的问题!火急。。 这个世界上有多少C/C++程序员? 关于ARP广播域的问题????????????????、 请问什么服务器支持global.jsa 安装oracle数据库出错!!!!!!!!!!!! 如何在对话框的OnPaint()函数中得到该对话框的窗口大小? 一个看似简单却很棘手的问题,不得不请教各位。。。 哪里有将rm文件转换成avi或者mpg格式的软件? 关于ARP广播域的问题?????????????? 请问,,怎么设定mshflexgrid的属性,使其各列的宽度与数据源字段的宽度一致 请问这几个对象是否代表同一个对象? 菜鸟问题:如何跟随鼠标拉出一虚线矩形框?回复就有分! 高分寻Authorware v6.0 注册码 在数据窗口中有“部门”和“员工”两个列,分别采用各自的下拉数据窗口显示。如何使得“部门”改变时,“员工”显示与其对应的人员而不是“员工”表中所有人员。 怎样安装UNIX? 灌水加求救…… T-SQL中SELECT句中可不可以有存储过程。。。。。。。。这样为什么不行呢?(100分酬谢) MS SQL SERVER 有谁知道型号为CDU111-NE 的SONY光驱是多少速的吗? 谁对RTTTL格式文件了解,怎么把它转换成可以发送的二进制格式? 关于ORACLE存贮过程的迷惑,请各位大侠解惑! 请问如何向ActiveX控件发送一个自定义数据结构的指针 有没有好一点的ASP上传组件?? asp调用dll失败!!! 为何用了2个以上的单元有调用窗体就出现 access violat at address XXXXX in module的错误 请问有没有一些用来专门用作软件测试的测试软件? EPSONSTYLUS C20SX 型号的打印机支持NT4吗? 请问哪里有linux操作系统的源代码下载?谢谢 哪几种服务器支持global.jsa 关于数据绑定控件的问题。 sweet dumpling是什么意思``? 电瓶车的电池和气车的电池一样吗可以加汽车电瓶水吗如果可以是加原液还是加补充液呢谢谢谢 地震是地壳岩石在什么情况下所引起的震动现象 sweet rice dumplings什么意思 dumpling,dessert的美式音标 地震是由于地壳岩石的地球内力作用下,发生什么或什么而引起的震动现象 sweet dumpling dumpling怎么读 noodle,candy,ice cream是可数名词还是不可数名词? 把50g溶质质量分数为98%的硫酸溶液稀释成20%的硫酸溶液,得到20%溶液多少克?加水多少克 Clootie dumpling 是什么东西?用英语怎么读? 为什么bread是不可数名词,而bun,noodle是可数名词 大理石地砖的厚度一般是多少? 电动车蓄电池是铅酸电瓶么? noodle是不是可数名词,为什么常用复数?承让了! 要把30克质量分数为98%的浓硫酸稀释为20%的稀硫酸,需要水多少克 we usually eat a kind of rice dumpling called yuanxiao中called为什么加ed? 电动车铅酸电瓶可以加水吗 墙体均在室内地面以下60处设20厚1:2水泥砂浆掺3%防水剂作防潮层,防潮层必须连续贯通.怎么算防潮层?这句话通俗的怎么理解? Yuanxiao is a kind of rice _____.(dumpling)dumpling后面要加s吗 12v的电动车的电瓶(铅酸电池).1:一支光管(家里用的照明灯)是20W(电流参数无法提供)的.接在一个12v.14AH 的电动车电瓶(铅酸电瓶).请问:电瓶可以照明多长时间?我是用来照明的.最少能用5小时吗?2 防水剂要不要参水搅拌 配制1000毫升溶质质量分数为10%的稀硫酸,需要溶质质量分数为98%的浓硫酸多少毫升?同时需加入多少克水 is的i发音的音标是i还是e? one and a half 后面跟的名词用单数还是复数?其后跟的谓语动词用单数还是复数? we usually eat a kind of rice dumphing called yuanxiao. 如何分别音标/i/和/i:/在做题时如何分别的作用不是问意思啊 one and a half 后用谓语动词单数还是复数? 地砖上墙 怎么贴用地砖贴墙,请问,是不是必须用胶泥?可以在沙子水泥中掺入108胶代替吗?300mmX600mm的砖 there _(are\is) +some+不可数名词 英语中 half of 后是名词复数时/单数名词复数/单数名词是谓语动词应该用什么? 地板砖可以贴墙吗时间长会掉下来吗 There are many women teathers in our school There are some tomato noodles为什么前者两个都变复数,而后者只变一个 配制1000毫升溶质质量分数为10%的稀硫酸,需要溶质质量分数为98%的浓硫酸多少毫升?同时需加水多少克? 用什么贴地板砖比较薄我家在农村是二层小楼 因为盖的比较早 所以高度比较矮 是水泥地板比较潮湿 我现在想在贴层地板砖 用什么和地面水泥层黏贴比较好 越薄越好 因为楼层比较矮 配置400g20%的硫酸溶液,需溶质质量分数为98%,密度为1.84g/cm3的浓硫酸多少毫升?需水多少毫升?如何配置?越快越好. hair与rice为什么不可数 想要配置500克溶质的质量分数为19.6%的稀硫酸,需要溶质的质量分数为98%的硫酸多少? noodles是不是可数名词如题 noodles到底是可数的吗?有的说是有的说不是,到底是不是可数的? rice 和hair都是不可数名词,为什么可以a hair不可以a rice? 实验室需要配制1mol/L的硫酸100ml,需取用98%的浓硫酸多少毫升? 面条noodle是不是可数名词 hair(不可数) 铅酸蓄电池、成都铅酸蓄电池、四川铅酸蓄电池什么牌子好?想购买铅酸蓄电池、四川成都铅酸蓄电池哪家的好,是什么牌子的,求助! 用noodle或noodles填空,并请告诉我为什么不是另一个?what do you have for breakfast?I often have bread or ( ). hair可数不可数?回答:(可数 不可数)就可以了. 请问,铅酸蓄电池 铅的占比一般有多少,生产车用电瓶,需要什么等级的铅做为材料? 水容重的单位是什么谢谢水的容重是若干吗单位是什么吗感谢 hair在什么情况下是可数名词,什么情况不可数? 汽车、电机车一般要使用铅酸蓄电池.某铅酸蓄电池用的酸溶液是溶质质量分数为30%的稀硫酸,先用1L溶质质量为98%的浓硫酸(密度为1.84g/cm3)配制该稀硫酸.问:(1)1L溶质质量分数为98%的荣 水的容重是多少?单位是什么? 我现在要造房子,落地面积80平方,造三层现浇框架,需要多少水泥、黄沙和石子!没这经验!请懂朋友帮忙谢 a salty rice dumpling 中文是什么粽子? noodle 可数吗 欲配制600克溶质质量分数为19.6%的稀硫酸,需要这中硫酸多少毫升?硫酸化学纯(CP)(500ML) 品名:硫酸 H2SO4 相对分子质量:98密度:1.84g/cm3 质量分数:98% rice dumpling 这个单词是"粽子"的单词么 noodle(面条)是不是不可数名词?如上述的. 实验室常用溶质质量分数为20%的稀硫酸.现配制这种硫酸500g,问需要多少毫升溶质质量分数为98%,密度为1.84g/cm^3的浓硫酸? 这音标是什么? 地震是地壳岩石在 作用下,发生 而引起的震动现象.地震发生时还会释放地球内部蓄积的巨大 .特别是最后一个空
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn