Delphi 7 中使用RAVE报表(一)
最近刚刚做完一个项目,使用到了RAVE进行报表设计,在使用中也查阅了很多资料,但总觉得网上的资料过于分散,而且都不是很全面,所以决定将如何在Delphi 7中使用RAVE报表写成几篇文章,由于本人从小语文学得不好,不是写作高手,这次也是第一次写这样的文章。希望看到这篇文章的网友能多提意见,欢迎大家指教。
可以给我留言,或发邮件cyq2988@tom.com 。言归正传,在我们要给用户编写的软件中往往需要生成各种各样的报表,报表是数据库中数据的最终表现形式,在Delphi 6以前,编写报表都在使用Qusoft公司的Quick report,而且在Delphi中集成了Quick report。 在Borland DelphiTM 7 Studio 集成开发环境(IDE)的控件面板中取消了Quick report项,取而代之以Nevrona公司Rave Reports项,且在Tools中有Rave Designer 5.0 。
打开Rave Designer 5.0,我们可以如图所示的一个报表设计界面,开发人员可以开发出符合用户要求的报表来,而且这个报表的设计、使用与Delphi集成开发环境几乎是完全的一样,这可能是Rave与其它的报表组件最大的外观上的不同。
我在使用中下载了Rave Reports v5.1.3,你可以在http://www.nevrona.com/ 或者http://www.delphibox.com/ 下载,在写这篇文章时,http://www.nevrona.com/上已经发布了Rave Reports 6.0,我已经下载了,不过文章还是以Rave Reports v5.1.3为准。打开Delphi,可以控件面板看到如图:
Delphi7下的Rave
打开Tools中的Rave,看到的报表设计界面如图:
Rave5的报表设计界面
首先,介绍一下Rave的报表设计器的各组件和相关的属性。Rave Designer集成开发环境的界面包括标题栏、菜单栏、快捷工具栏、组件栏和一些窗口:
·标题栏显示了当前的工程名,位于最上部。
·菜单栏,一些功能可通过菜单栏的菜单命令实现。
·快捷工具栏为位图按钮,一些常用的菜单命令用这些按钮实现。
·报表组件栏分页显示各种组件(Standard、Report、Zoom、Colors、Lines、Fills、Fonts、Drawing、Bar Code、Alignment),在利用Rave开发应用程序的过程中,正确、合理地使用组件非常重要。用它可设计基于数据库和文本的复杂报表。
·左边半部分像Delphi的object inspector工具,可设置报表元件的属性,它的下部分有对应属性的简短提示。
·正中部分为设计区域,开发者可在上面添加各种设计元件,如Drawing的横线、直线、矩形、椭圆,Barcode中各种常用的条码,Standand 中的Text、Memo、Section、Bitmap、Metafile等等。
·右边为设计导航区,可查看报表的各元件的更多信息,如报表库和数据显示目录,设计时也可快速定位元件位置。
Rave的报表设计器,组件栏的各组件:
Drawing (绘图) 组件页:
Line component :画线组件,所画的线较灵活 。可以看到其属性入图,有颜色、线宽、线行等属性,设计者根据需要更改属性。改变线的长短位置,选中线条后,选择一个端点则光标会变为十子型,拖动即可。
Hline component :画水平线组件 。
Vline component :画垂直线组件 。
Rectangle component :画长方形组件,可以使用fill组件填充。
Square component :画正方形组件,可以使用fill组件填充。
Ellipse component :画椭圆组件,可以使用fill组件填充。
Circle component :画圆形组件,可以使用fill组件填充。
Bar Code(条形码)组件页:
PostNetBarCode :打印邮件标签上包括 POSTNET 条码 。
I2of5BarCode :打印 Interleaved 2 of 5条码。
Code39BarCode :打印standard and extended Code 39条码。
Code128BarCode :打印 A, B and C Code 128条码。
UPCBarCode :打印 UPC-12条码。
EANBarCode :打印 EAN-13条码。
Standard(标准)组件页:
Text :这个组件是在报表上固定的文字,例如报表的标题等,可以设置字体的大小、颜色,Rotation属性可以使要显示的字为任意角度。
Memo :Memo组件提供了多行文本的文字,与delphi中的相似,属性很多,但我们应用的不多,可以使用text属性添加文本。
Section : 这个组件是其他组件的容器,将其他组件固定在此组件中。
Bitmap : 这个组件是在报表中放置bmp文件 (*.bmp), FileLink属性连接bmp文件。
MetaFile : 这个组件在报表中放置meta文件 (*.wmf),FileLink属性连接meta文件。
FontMaster : 这个组件控制报表中的任何的text字的属性。在要使用该字体的text组件或memo组件的fontmirrot属性选择FontMaster。
PageNumInit :报表显示页码的初始页码。如图的InitValue的值为5,则报表的初始页为5,页码从5开始。
Report(报表)组件页:
如果报表需要的是数据库的数据,则这个组件页中的组件使用比较频繁。
DataText:用来显示数据库中内容比较短的信息,要用它显示相应的数据库字段信息,则要使用到DataField 和DataView两个属性,用来连接数据库和字段。DataText用来设计主从报表时,LookupDataView是相应的数据连接、LookupDisplay是显示内容、LookupField是主报表相应的数字段进行关联的字段的内容,也就是主数据字段进行连接的字段。LookupInvalid是控制相应错误产生后的情况。
DataMemo:在Memo的基础上支持了数据库的字段显示, 使用DataField 和DataView两个属性,用来连接数据库和字段。除了输出相应的文本内容外,还可以输出RTF格式,显示RTF格式,需要设置ContainsRTF属性为True。
CalcTex:这个组件用来统计报表字段的最大值、最小值、总和、统计值等内容直接使用,只需要通过CalcType属性来设置,CalcType属性包括了ctAverage(求平均值)、
CtCount(求个数)、ctMax(求最大值)、ctMin(求最小值)、ctSum(求累加和)。
DataMirrorSection:和Section组件相似。
Region:如果要进行报表的打印,Region组件规定了打印区域,可以设置Columns来分栏。
Band:这个组件算是一个容器组件,包括text、Memo组件等,包括的是非数据库库信息,Band组件要放置在Region中,选择BandStyle属性后,出现如下图的属性对话框。左边为报表中Band的列表,右面的PrintLocation包括:Body Header(页眉)、Group Header(组眉)、 Row Header(行眉)、Detail(表体)、Row Footer(行脚)、Group Footer(组脚) 和Body Footer(页脚),BandStyle属性可以多选。Print Occurrence属性包括: First(首页打印)、New Page(打印新一页)、New Column(新分栏)。选择First(首页打印)也就是Band包括的内容只在第一页打印,选择New Page(打印新一页),
Band包括的内容必须在新的一页打印,选择New Column(新分栏),Band包括的内容必须在新的分栏中打印。
DesignerHide属性:当一个报表有多个Band时,选择查找Band变得比较麻烦,设置DesignerHide属性为True时,没有选择到的Band内容被隐藏。
GroupDataView 和GroupKey属性:如果想要以相应的数据结果作为报表分组的依据,那么就必须设置这两个属性,GroupDataView是相应的数据源,GroupKey是数据源的索引,分组是靠GroupKey中的值进行分组的。
DataBand:是直接作用于数据库,且可以在其中摆放相应数据库报表组件,这样通过它就可以让相应的报表具有数据库书库打印功能。其中DataView属性是设置相应的数据源,GroupDataView是相应的报表中的分组数据源。
DataCycle:与DataBand相似的地方在于循环的显示数据,DataBand是数据库内容的循环打印,而DataCycle不需要使用Region,它打印的区域为页面,每页只能打印一个组件设计好的内容。使用DataBand是根据Region的范围来分页,而DataCycle则是每一页只现实一条信息根据数据的多少分页。
CalcOp:该组件提供了报表相应的计算功能,具体的使用会在以后讲解。
CalcTotal:与CalcOp结合使用来完成日常报表的统计功能。
Zoom(缩放)组件:在设计报表时,放大、缩小报表页面。
Colors(颜色)组件:对选择的对象快速的设置颜色。
Lines(线型)组件:对于选择的线,更改其线型。
Fills (填充)组件:对于正方形等图形填充样式。
Fonts(字体)组件:进行字体的设置。
Alignment(队列)组件:调整对齐组件和组建的层次。
Delphi 7 中使用RAVE报表(一)(完)
由于写的有些仓促,难免会出现很多问题,希望大家指正,也希望看到这篇文章的网友留下你的意见,以便我继续写下去。