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

Delphi编制的程序运行中动态制作报表

HTML文档下载 WORD文档下载 PDF文档下载
Delphi编制的程序运行中动态制作报表

Delphi中的quickreport是挪威的QuSoft AS公司专门为Delphi设计的用于制作报表的组件,具有很强的访问数据库的能力。但是,从我个人的使用经验来看,这个组件的帮助写的不够详尽,例程也不多。因而一般编程人员都是在设计期间设计好报表的所有格式,并在运行时连上数据源(即delphi中的dataset)运行程序的。显然,这种方法不具备很强的灵活性。在这里我想向大家介绍一种在程序运行时如何动态制作报表的方法。

---- 首先,建立form1;unit1(调用窗体),其中放入button1:caption为‘预览’,用以查看报表,再加入label1:caption为‘报表标题’;edit1用以接收用户输入的标题。再建立form2(放置quickreport元件的窗体)

其中放入quickrep元件和三个qrband元件,其bandtype分别为rbTitle

rbColumnHeader

rbDetail.但其中无须放入qrlabel和qrdbtext元件,由程序中自动生成。再在form2;unit2中放入table1

table2。在databasename属性中填入数据库所在的Alias Name.在tablename中分别填入Goods

TableInformation.其中Goods中存放商品信息,可以设置以下字段:ID;Name;Unit;Price。TableInformation中的字段为TableName; FieldsName; DisplayName数据库中填入以下信息。

————————————————————————

Goods ID 商品编号

Goods Name 商品名称

Goods Price 商品单价

---- 好了,准备工作完成了一半,现在写入代码。在unit1的implementation下写入uses Unit2;在button1的click事件中写入以下代码:

begin

PreparePrint;

with Form2 do

begin

Preview;

Table1.Close;

Table2.Close;

end;

end;

在unit1中添加一个过程PreparePrint;

procedure TForm1.PreparePrint;

var LeftValue:integer;

aLabel : TQRLabel;

aText:TQRDBText;

begin

LeftValue:=100;

with Form2 do

begin

aLabel := TQRLabel.Create(Form2); '设置标题

aLabel.Parent := TitleBand1;

with aLabel do

begin

Width:=300;

Height:=TitleBand1.Height;

Alignment:=taCenter;

Caption := Edit1.Text;

end;

Table1.Open;

Table2.Open;

Table2.First;

while not Table2.EOF do

begin

aLabel := TQRLabel.Create(Form2);

’设置显示字段标题

aLabel.Parent := HeaderBand1;

with aLabel do

begin

AutoSize:=False;

AutoStretch:=True;

Left :=LeftValue;

Top := 0;

Width:=80;

Height:=HeaderBand1.Height;

Alignment:=taCenter;

Caption := ' '+table2.FieldbyName(

'DisplayName').AsString+' ';

end;

aText := TQRDBText.Create(Form2);

'设置显示字段内容

aText.Parent := DetailBand1;

with aText do

begin

AutoSize:=False;

AutoStretch:=True;

Height:=DetailBand1.Height;

DataSet:=Table1;

DataField:=Table2.FieldbyName(

'FieldsName').AsString;

Alignment:=taCenter;

end;

LeftValue:=LeftValue+80;

Table2.Next;

end;

end;

end;

---- 好了,运行程序可以看到报表预览的效果,显示了Goods中的ID

Name

Price。在运行时完全可以控制table1和table2中的数据内容。显示不同数据库的不同信息,改变table2中的记录顺序可改变报表中的显示顺序。而且,由于报表的各部分,甚至包括各band和system data均可在程序运行时依据上述方法动态生成。其属性也可动态设置。所以我们完全可以制作一个类似于Dephi中Form Wizard一样的报表精灵,还可提供一个灵活而且强大的打印设置功能。

---- 以上代码在delphi3中运行通过。

【最具价值CTO评选秀】纷享销客CTO刘晨:企业移动的技术挑战 【最具价值CTO评选秀】能做存储的超级计算机——任宇翔和以色列团队的创业故事 OpenStack Swift存储策略 分享5个可视化的正则表达式编辑工具 在iOS程序中使用Bluemix云推送服务 GitHub开源任务列表组件 表白健身小能手!详解Apple Watch特色功能 高逼格不任性!个人智能航空摄影飞行设备ZANO Clappr——开源的Web视频播放器 东软举办2014解决方案论坛 将全面推进BBC战略 Google Glass已死,智能眼镜长存! 五个步骤,保护移动应用免受恶意攻击 声波改变移动社交——参加联想“茄子快传”创意征集 赢取平板电脑大奖! 车载硬件Baen:被游戏化的驾驶体验 深入解析Docker背后的namespace技术 响应苹果要求:Qt 5.4、Qt Creator 3.3同迎RC版 击碎泡沫谈发展,盘点OpenStack商业生态圈! 2014年11月操作系统份额:Windows 7雄居第一,XP跌新低 微信开放平台上线统计报表功能 【向导】如何开始学习高伸缩性编程? 基于Apache Samza,揭秘LinkedIn架构背后的技术 Aeron:每秒可以传递数百万消息的低延时开源消息系统 英特尔物联网马拉松:用创造力改变生活 年末总结:2014年全球手游市场发展的六大趋势 Saber——模块化、组合式的移动前端框架 什么仇什么怨?还原日本反美颜应用Primo真面目 横跨2D与3D!专属C#开发者的超强游戏引擎Paradox 首份“2014年移动外语学习行业报告”等你下载 《近匠》Ayla联合创始人张南雄:物联网发展的三个阶段 神器 VisuAlgo:通过动画学习算法和数据结构 【工具推荐】QWrap——开源的前端JavaScript框架 在菜单中打开MDI窗口,但是每一次点击,就出现一个新窗口,如何只出现一个? 大侠,救命啊,这个编译错误,折磨我好几天了,如何解决啊?????? 求C语言程序:从键盘上输入若干个证书,去掉重复的,将剩余数的前n个输出显示 新手发问(有关C#和MySQL数据库)! 试用期的前几天会被安排做什么?(对于一个没有一点工作经验的大学生) 如何合并两个字符串?急!!! 请问哪有jive 的中文版原代码下载啊?? jdon的压缩包不好使!!谢谢 关于静态方法! tomcat 406 错误 如何遍历任务栏上已经打开的程序呢? 动态添加commandbutton后如何写其clicked()的事情 今天晚上可能要時間長了,那個算法的流程你看看,服務器的負載太大了,不斷的連接,數據碎片太多了 把dataSet里的多个表插入数据库时,怎么把这多个表作为一个事务? tomcat报出406号错误 CDONTS.NewMail发送邮件? 继承的问题 我的问题 C++ Primer和C++ Programming Language 哪本好一些呢? 哪位朋友可以给一个PHP4导航栏的代码(1 2 3 4 5 6 这样的) redhat9.0是否支持ich5 在VS2002中可以用的设置星期格式的代码,在VS2003下不能用,为什么? 请教一个关于时间的SQL语句! 关于多级菜单问题 我的电脑里的chm文档打不开了,求救~~~~~~~~~~~! 购买QQ,共1000分(1) 大家帮忙分析一下 请教,关于“name not Unique in this context”的错误。50分,急!!!! 请教一个小问题 显示属性打不开? 购买QQ,共1000分(2) 很简单的问题,最好详细写listput 这个组件怎么用? 80分够不?在线等待中。 改好了告訴我一下,等0點去機房,這邊的認證服務器不動了,VMS系統我不懂 MIDAS 高手请进,这个问题在大富翁上出了600分,也没人拿到,难道真的没人明白吗? 女儿三岁生日,酬宾 关于PHP GD库的问题. jsp主要做什么的?菜鸟问题 为什么会重复显示两次? 怎样恢复类! 有没有人可以帮我的,55 如何把DBF文件导入到SQL2000里? 我想将一个字符串(用户密码)加密,有没有好的算法,请大家指教 熟悉化境编程界HTTP上传程序的请进! 我想将一个字符串(用户密码)加密,有没有好的算法,请大家指教 局域网搜索时,怎样连上要搜索的机子 如何分辨用户是通过在URL栏输入地址,还是点击链接来到本站网页。 好了,我把数据库清理一下,你继续改那几个参数,LOG文件太大先不要管 问题! “多步 OLE DB 操作产生错误。。。”怎么解决?? 急!!! 哪里有内存泄漏检测工具? 请问如何将80*60象素的图片文件转换为120*90象素的图片文件 哪位兄弟试过把csdn的文档里面的文章全部下到本地看的? Single的英标是怎样的 single 的英文同义词还有那个? 用···制作 英文解释帮帮啦 求Leader of the Discipline Committee家教里云雀出场时候的bgm,Leader of the Discipline Committee,求2533144436 求发 please don't remind me of anything dangerous anymore Gundam在高达中是几个英文开头字母组成的,是那几个?这几个英文及翻译. 高达seed里面基拉第一次开强袭的时候出现的英文高达开机界面上以“gundam”为首字母的六个单词是什么啊? 汉译英 我真是无法理解他们为什么要选他.It's a _ _ me why they chose him. 户口本上的“婚姻状况”用英文怎么说?就是那个填single married的一栏 英语翻译6.새깔 ,후지다 ,후져 7.윤아 ,뻥가지마8.아무두 못 만나게 다리 몽뎅이를 확  翻译,不要机器复制翻译: 他出生于德国莱茵省的一个律师家庭.他年轻时生活条件有些艰苦.英语高手快帮一下下!中译英2句话 不要复制机器 美墨边境发现新贩毒地道 配电力轨道和经济滞缓导致欧元区通胀率降至2009英媒窃听案中两名涉案编辑被传系恋人关美将俄歌星列入黑名单 俄抗议表示不可美国一客机收到炸弹威胁 现已紧急转降伊朗“巴斯基”武装力量在伊展开演习 日媒醋意评价朴槿惠外交策略 称其无视德媒:斯诺登与德绿党议员见面 有意前万圣节狂欢化装派对 萌“小鬼”们惹人国际刑事法院再次推迟肯尼亚总统出庭受澳维州出台新法规定性侵犯再犯案将不准习大大的三步“烧金砖法”必看: 如期上攻了,午后还需要担心吗英国男子网上发评论赞扬巴黎恐袭引公愤不仅仅是变色——OPPO R7s玫瑰这些年007邦德都开过哪些车?广州车展必看车型之新国民家轿奇瑞“艾商务部研究院调研通惠保理 十六道流程“一带一路”沿线地区大力构建“立体丝“伊利情·中国网事·活力内蒙古·感动二十国集团安塔利亚峰会将实施增长战略【有人@我】先锋缤智 神秘之旅,等你
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘