delphi报表的动态生成

delphi报表的动态生成

ID:9389276

大小:33.90 KB

页数:56页

时间:2018-04-29

delphi报表的动态生成_第1页
delphi报表的动态生成_第2页
delphi报表的动态生成_第3页
delphi报表的动态生成_第4页
delphi报表的动态生成_第5页
资源描述:

《delphi报表的动态生成》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、DELPHI报表的动态生成(CreateDelphiDynamicReport)摘要:本文主要介绍如何在DELPHI开发环境下动态生成报表,给出公用模块,并结合具体示例分析了实现的主要技术问题,给出解决这些问题的技术细节。关键词:DELPHI报表、动态创建一、引言报表是数据库应用程序的重要部分,可是报表的生成也是数据库开发中最麻烦的一项工作。报表格式复杂多样,一直是使程序员头疼的事。DELPHI在其3.0以后版本中加入了QUICKREPORT,使这种情形有所改变。它的全部可视化编程以及设计和运行过程中都可以进行预览等特性给程序开发带来了很

2、大的方便。我们可以通过在应用程序设计阶段往窗体中添加报表控件,再与数据库表组件Ttable,查询组件Tquery等数据访问组件相关联,从而实现报表的预览与报表的输出。但在许多应用程序中,程序员往往期望从静态或者动态生成的数据库表中动态提取所需数据,进而生成报表输出。本文介绍的就是如何动态选择所需数据,动态生成报表的公用模块。这种动态方式生成的报表更加灵活,也更加容易做到报表的格式统一。动态报表主要是在程序运行阶段利用Creat方法动态创建控件,设置其Parent属性来设置其容器控件。然后,在程序中根据所选择的数据库表中的数据字段的长度和数

3、目,通过修改控件的大小和位置属性,来控制控件的大小和外观,如果该控件有事件,可直接把函数或过程名赋给它的相应事件名。二、动态报表的实现下面结合一个具体实例来说明如何其实现的方法和技术。1、基本思路数据来源,我们以DELPHI自带的DBDEMOS中的employee.db表为例,它共有6个字段。在F_main主窗体中(如图一),可以自由选择所需要打印的字段。它的主要控件及属性设置如下:①.Table1:Databasename设置为DEDEMOS,Tablename设置为employee.db②.Listbox1:显示所连数据库表中的全部字

4、段③.Listbox2:用于选择所需报表输出的字段④.AddBitBtn:用于把所选择的字段名添加到Listbox2中⑤.DeleteBitBtn:用于把Listbox2中的字段名去掉⑥.PreviewBitBtn:用于报表的预览⑦.PrintBitBtn:用于报表的输出⑧.CloseBitBtn:用于关闭应用程序在F_report窗体中,放置了以下主要控件,并设置属性,以减少程序的篇幅:①.Table1:Databasename设置为DEDEMOS,Tablename设置为employee.db②.QuickRep1:papesize属

5、性为A4,dataset属性为Table1,bands属性中的hascolumnheader、hasdetail、hastitle设置为True显示数据库表中的全部字段在F_report的Oncreate事件中加入了如下代码:Table1.Open;ifTable1.ActivethenTable1.GetFieldNames(Listbox1.Items);//获得数据库表中的全部字段名DeleteBitBtn.Enabled:=False;//在Listbox2中无字段时,DeleteBitBtn变灰2、从Listbox1中选择字段添

6、加到Listbox2中为AddBitBtn的Onclick事件加入如下代码:iflistbox1.Items.Count=0thenexit;//如Listbox1中无可供选择的字段,则执行空操作iflistbox1.Selected[listbox1.ItemIndex]then//在Listbox1中选择字段beginListbox2.Items.Add(Listbox1.Items[Listbox1.ItemIndex]);//往Listbox2中增加选中的字段Listbox1.Items.Delete(Listbox1.ItemI

7、ndex);//从Listbox1中删除此字段ifListbox2.Items.Count>=1then//在Listbox2中有字段才允许执行删DeleteBitBtn.Enabled:=True;end;3、从Listbox2中删除不需要的字段为DeleteBitBtn的Oncreate事件添加如下代码:ifListbox2.Items.Count=0thenexit;//如果Listbox2中无字段,则执行空操作iflistbox2.Selected[Listbox2.ItemIndex]then//在Listbox2中选择字段be

8、ginListbox1.Items.Add(Listbox2.items[Listbox2.itemindex]);//添加到Listbox1中Listbox2.Items.Delete(Li

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。