
Delphi程序设计基础 教学课件 ppt 作者 张世明 第9章.ppt
256页第9章 报表与图表,,,9.1 QuickReport组件 9.2 图表,,QuickReport是Delphi环境下进行数据库应用程序的报表输出时的重要设计工具.,,虽然它是由第三方公司制作,被Borland收入Delphi中,但经过Borland公司的组合,几乎可以和Delphi紧密使用,天衣无缝.,,它可以设计出包括分析图表在内的复杂图表QuickReport组件 各种常用报表设计 Chart图表设计,,9.1 QuickReport组件,9.1.1 QuickReport 概述,1.关于报表Reports 报表提供了一种过滤、呈报数据的手段QuickReport提供了功能强大、灵活方便的报表工具可用它创建动态的、含丰富信息的报表,充分、完全地满足各种需求2.QuickReport 概述 QuickReport 是一种功能强大的可视化数据库报表、查询工具它集成在Delphi 环境下,提供用数据库文件、表格创建报表的方法有了QuickReport,我们可以·用SQL和数据库创建报表,而不必通晓复杂的数据库指令·编辑、格式化报表,将各项目的数据、文本、图表、图片及声音等元素进行组合·用动态数据立即查看你改动后的结果。
3.QReport 组件页 Delphi 中的报表输出功能主要是通过QReport 组件面板中的组件实现的通过这些组件可以设计出功能齐全、具有专业水平的报表下面将详细讲解QReport组件的重要属性、方法、事件以及在报表编程中的使用方法9.1.2 TQuickRep 组件,TQuickRep 组件是制作报表的基础,每一个报表窗口必须包含一个TQuickRep 组件通过该组件可以设计报表的大小、页边距等属性使用TQuickRep 组件的方法是1)通过Delphi中的New Form创建一个新的窗体,如:窗体取名为 RoportForm2)选择QReport组件组页,将TQuickRep 组件拖到新窗口中3)设置TQuickRep 组件的Bands属性,确认是否打印标题,页眉、页脚等4)在TQuickRep 组件中放入其它种类的QReport组件,并进行属性设置5)为程序加入代码注意:如果不对TQuickRep 组件的Bands属性进行设置,则窗口不会出现PageHeaders等明细栏一、TQuickRep 组件的主要属性,1.Bands属性 Bands属性是TQuickRepr 组件最重要的属性。
它是一个属性集,该属性集由六个子属性组成,它们的作用如下每设置这些属性集中一个属性为True时,在TQuickRep 组件中就自动增加一个相应的TQRBand组件Bands属性集,,,2.DataSet DataSet属性用于指定报表的数据源这个数据源可以是TTable或TQuery组件对于简单的列表类型报表,通常只使用一个数据集但对于一个主-明细类型的报表来讲,TQuickRep 组件的DataSet属性应设置成主数据集3.Options属性集 Option属性集用于设置报表的3种不同属性包括FirstPageHeader、LastPageFooter和Compression属性含义如下·FirstPageHeader:如果该属性设置为True,则在报表的第一页生成页首标题,否则,不打印但需要注意的是该属性要和Band属性协调使用·LastPageFooter:如果该属性设置为True,则在报表的最后一页生成页脚,否则,不打印该属性也要和Band属性协调使用·Compression:如果为True,则以压缩格式存储报表,为False则不以压缩格式存储使用压缩格式存储报表时,虽然可以节省大量的磁盘空间,但是大大减慢了程序的运行速度。
4.Page属性 Page属性用来设置报表中页的大小、页边距、页的方向等页属性进行设置以及系统打印机的设置等5.PrinterSettings属性 PrinterSettings属性允许选择想要打印的副本数、打印的起始页、终止页以及是否需要重复打印和打印输出的输出途径6.ShowProgress属性 ShowProgress属性允许在准备和打印报表期间显示一个过程对话框过程对话框中包含一个Cancel按钮,允许用户停止生成报表除了通过对这些属性的设置来改变报表的样式,还可以使用Delphi提供的Report Settings工具在TQuickRep 组件上双击鼠标,或单击在该组件上单击鼠标的右健,在弹出式菜单中选择Report SettingsReport Settings属性设置共分五部分,它们是Papers size、Margins、Other、Pageframe和BandsPapers Size属性集用于设置报表版面的大小(缺省为A4纸面)和版面方向等进行的设置,Portrait表示纵向版面,LandScape表示横向版面Margins属性集用于设置报表的页边距可以对报表的上、下、左、右边距进行设置。
Other属性集可以改变报表中字体大小、字体种类和尺寸单位Page frame属性集用于设置报表是否有边框及边框线的颜色、线宽Bands属性集的作用和Object Inspector中的Bands属性一样[Preview]按钮用于即时预览报表[Apply]按钮将修改的参数存盘,但不退出Report Settings窗口[Ok]按钮实现参数存盘并退出该窗口二、TQuickRep 组件的方法和事件,OnNeedData事件,OnNeedData事件用来从一个非DBE数据集中生成一个报表当报表需要下一个记录的数据时,触发该事件如果没有连接到一个DBE 数据集,则需要自己填写报表中TQuickLabel 组件的文本值OnNeedData有一个名为MoreData的布尔类型的参数,在报表完成时需要将其设置成FalsePreview方法,报表预览例如:Form1.QuickRep1.preview,其中,Form1是QuickRep1报表所在的窗体Print方法,报表打印例如:Form1.QuickRep1.print9.1.3 TQRSubDetail组件,TQRSubDetail组件用来在主表/明细表类型的报表中显示明细表的数据。
一、TQRSubDetail组件的主要属性,1.Bands属性集 可以对HasFooter和HasHeader属性进行设置使用这两个属性可以创建Group Footer(组脚)和Group Header(组眉)这两个Band是用来显示明细表中记录字段的说明文字的设置这个属性后,在TQRSubDetail组件的相应位置将自动加入一个TQRGroup组件在生成的TQRGroup组件中可以加入显示记录中字段说明文字的组件,如TQRLable组件等2.DataSet属性 DataSet属性用于指明这个明细Band上的组件从哪个数据集中获得数据在生成主表/明细表类型的报表时,应该将其设置成主表/明细表关系中明细表的数据库3.Master属性 Master属性需要设置成指向主表数据集连接的Band这通常是一个TQuickRep组件,如果创建了一个主-明细表类型的报表,这个属性需要指向第一个TQuickRep组件二、TQRSubDetail组件的方法和事件,TQRSubDetail组件主要的事件有AfterPrint、BeforePrint和OnNeedDataBeforePrint事件一般用于在报表生成前对报表中的数据进行合法性的检查,以免报表中显示不必要的记录。
还可以显示提示框以便在必需时取消打印AfterPrint事件可以为用户在打印结束后进行后续工作三、TQRSubDetail组件的用法,(1)在生成主表的TQuickRep组件中加入TQRSubDetail组件2)根据需要决定是否设定Bands属性集中的HasHeader、HasFooter属性如果需要在报表中增加明细表字段的说明文字,就设置HasHeader属性为Ture3)设置DataSet属性为明细表的数据源;,,(4)在TQRSubDetail组件中添加TQRDBText组件,用于显示明细表记录的各个字段9.1.4 TQRBand组件,TQRBand组件可以说是QReport组件组中又一个重要的组件每个报表中都包含了一种或者两种类型的TQRBand组件当通过TQuickRep组件的Bands属性向一个报表添加Band时,Delphi实际上创建了一个TQRBand组件有些Band自动打印、有些Band在每页中打印,还有些Band在整个报表之中只打印一次这些都取决于TQRBand组件的属性设置、方法的使用和事件的触发等一、TQRBand组件的主要属性,1.BandType属性 BandType属性用来指明一个TQRBand组件是何种类型的Band,Band属性决定了在最后的报表中该Band出现的位置。
BandType属性共有11种取值,分别是rbChildrbColumnHeaderrbDetailrbGroupFooterrbGroupHeaderrbOverlayrbPageFooterrbPageHeaderrbSubDetailrbSummaryrbTitle2.ForceNewColmun属性 ForceNewColmun属性使报表在打印这个Band前创建一个新的列3.ForceNewPage属性 ForceNewPage属性使报表在打印这个Band以前生成新的一页对于一个简单的列表类型的报表,在其Detail Band中将这个属性设置为True,会使报表的每一页仅显示一个记录在一个主表/明细表类型的报表中,将Detail Band的这个属性为True,会强制为该报表的每个记录生成新的一页同时该记录的所有明细记录出现在同一页中4.LinkBand属性 当报表打印一个Band时,Delphi将检查当前的页,看上面是否有足够的空间打印这个BandLinkBand属性使TQuickRep报表上的Band连接到一起,被连接的Band作为当前的Band显示在同一页中当前页没有足够的地方打印当前页和连接页时,报表会自动生成新的一页。
5.HasChild属性 这个属性为当前Band产生下一级Band,比如在主表/明细表类型的报表中,如果想为某个字段增加更详细的信息可以设置当前Band的HasChild属性,Delphi将自动生成一个Band作为下级Band二、TQRBand组件的方法和事件,这里介绍TQRBand组件的BeforePrint事件在报表打印一个Band时将触发BeforePrint事件一个名为PrintBand的布尔型参数将传递给该事件,它用来决定是否打印这个BandPrintBand参数的缺省值为True,如果要制止打印这个Band,应该将这个参数设为False在主、明细表类型的报表中经常使用这个事件当一个给定的主记录没有明细记录时,可以通过这个事件来限制对明细和子明细Band的打印三、TQRBand组件的一般用法,在实际的报表制作中,TQRBand组件一般由报表的核心组件生成,如TQuickRep组件、TQRDetail组件等当然,也可以根据自己的需要在报表窗体中增加TQRBand组件,步骤就和在窗体中增加其它组件一样9.1.5 TQRC。












