Rave Reports概述
Rave Reports是一个基于组件的可视化报
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
设计工具,它简化了在应用程序加入报表的步骤.你可以是用Rave Reports
去创建各种报表,从简单的条状报表到高度自定义的报表.报表功能包括:
翻转文字注释
全图示显示
版面调整
页面精确定位
打印配置
字体控制
打印预览
可重利用的报表内容
对PDF,HTML,RTF,和text报表的显示支持
Rave结构
1.Data connection 组件:
Rave数据来源于你的应用程序。这些标准数据连接组件, TRvCustomConnection,TrvDataSetConnection和TRvTableConnection
在Rave可视组件和你的应用程序之间作为数据连接桥。TRvCustomConnection组件可以用来访问象内存数组和二进制记录文件这样的非数据库数据。TRvDataSetConnection
可用来提供访问TDataSet派生的组件包括第三方数据组件。TRvTableConnection常用于特定的TTable组件或他们的各个派生组件。
2.TRvProject 组件
这个组件提供报表和它们所拥有的组件的访问。TRvProject组件包含许多属性和方法允许你创建、修改、打印和设计你的报表项目。在每个应用程序中,你只需
要一个TRvProject,但是对于多个使用则不作限制。
3.Report project file (.RAV file)
报表项目文件用来储存Rave visual designer中的报表定义。它是二进制文件,类似于Delphi的.DFM文件。所有的报表,报表项目的global pages和data views
被储存到这单个文件中。你可以导出或导入项目。使用TRvProject组件的方法,你也可以储存报表项目文件到数据库的blob字段或其他地方。
4.Reports
Reports储存在报表项目的报表库中。一个Rave报表由报表页面和储存在这些页面的可视报表组件组成。你可以随意创建许多页面定义,然后在各种方法中
组合它们。
5.Global Pages
Global Pages储存在报表项目的Global Pages分类中,组件包含在Global Pages上,不象其他那些报表页面里面的组件,它们对于所有报表都是可见的。Global Pages
对于储存
模板
个人简介word模板免费下载关于员工迟到处罚通告模板康奈尔office模板下载康奈尔 笔记本 模板 下载软件方案模板免费下载
用于其他报表页面非常有用。
6.Data Views
Data Views储存在报表项目的Data Views Dictionary中。Data Views给提供数据连接组件提供一个接口。当创建新的Data Views时,你必须有活动的数据
连接组件在正在运行的应用程序中或者在一个已加载的Delphi或C++ Builder表单上。Data Views然后将让数据连接组件去检索元数据(meta-data)信息比如字段名,
数据类型,等等。字段组件包含在每个Data Views中,可用来设置每个数据列的属性。Rave Reports初步入门
你可以在VCL或CLX应用程序中使用Rave Reports去实现来自数据库或非数据库数据的报表.下面的过程说明
怎样增加一个简单的报表到已存在的数据库应用程序中.
1.在Delphi中打开一个数据库应用程序.
2.从组件面板的Rave页,假如TRvDataSetConnection组件到应用程序的表单.
3.在Object Inspector中,设置DataSet的属性为一个已在你的应用程序中定义的dataset组件.使用Rave Visual Designer
4.去设计你的报表然后并创建一个report project文件(.rav file).
选择Tools|Rave Designer运行Rave Visual Designer.
选择File|New Data Object显示Data Connections对话框.
在Data Object Type列表,选择Direct Data View然后单击Next.
在Active Data Connections列表,选择RVDataSetConnection1然后单击Finish.
在Rave Visual Designer窗口左边的Project Tree中,展开Data View Dictionary结点,燃后展开刚创建的DataView1结点.
你要使用的数据字段显示在DataView1结点下.
选择Tools|Report Wizards|Simple Table显示Simple Table wizard.
选择DataView1然后单击Next.
选择你想要在这个报表中显示的两个或三个字段然后单击Next.
按照随后的向导页提示区设置要在这个报表中使用的字段的排序, 页边距,首部文本,以及字体.
在最后向导页上,单击Generate完成这个向导然后在页面设计器中显示报表.
选择File|Save as显示Save As对话框. 把Rave project存到你的Delphi应用程序的目录下并命名为MyRave.rav.
最小化Rave Visual Designer窗口返回Delphi.
5.从组件面板的Rave页,添加一个项目组件TRvProject到表单.
6.在Object Inspector,设置ProjectFile属性为刚才创建的report project文件(MyRave.rav).
7.从组件面板的Standard页,添加TButton到表单.
8.在Object Inspector,单击Events标签然后双击OnClick事件.
9.在事件处理程序中使用ExecuteReport方法去执行Rave project组件.
10.按F9运行应用程序.
11.单击在第七步添加的按钮.
12.Output Options对话框被显示出来,单击OK显示报表.
Rave报表介绍之二: 可视报表设计器
可视报表设计器
Rave有自己的可视报表设计器,以自己的文件
格式
pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载
保存报表。这有一些优势,你可以把报表独立于应用程序之外,可独立进行升级,甚至可以通过网络进行更新,或者使用Nevrona的Rave Report Server。当然,你也可以把报表保存为标准的DFM文件格式。
为了启动可视报表设计器,防止一个TRvProject部件在form上,这个TRvProject部件将是你的应用程序和你即将要创建的报表的联系。如果需要,可加一个TRvSystem部件到窗体上,通过设定RvProject的Engine属性与它挂接。RvSystem部件是作为一个通用的报告系统配置
部件:可通过它设置将要使用的打印机,边界,页数等等。为了开始一个新的报表项目,双击RvProject部件,或者通过敏感菜单选择"Rave Visual Designer..." 。
一个Rave项目文件将可能由多个报表组成。通过全局页面(Global Pages)可以保存一些报表间共享的品项。
如果一个属性从缺省值改变为特定值,在属性编辑器中会显示成粗体。
当在可视报表设计器设计好报表后,返回到delphi的IDE中,改变RvProject部件的ProjectFile属性为你刚才完成并保存的报表文件名。为了运行报表,加一个调用RvProject
对象的Execute方法的过程即可。
如果我们设计的报表项目中只有一个报表,我们仅仅调用RvProject.Execute即可。如果我们的报表项目中有多个报表,我们不得不在调用Execute前,调用SelectReport来选择特定的报表,或者调用直接调用ExecuteReport方法。
与报表项目进行交互
参数(Parameters)
参数可以存在于报表项目,报表,报表页面这三个地方,可通过对应对象的parameters属性进行设定。
你仅能通过报表项目的对象树来选择报表项目和特定的报表。对于报表页面可以通过报表项目的对象树或页面设计的标题来选择。
参数可通过DataText部件来输出。在页面上加一个DataText组件,打开属性编辑器的DataField属性。你能在此选择项目变量、参数、后初始化变量。
procedure TFormMain.btnExecuteClick(Sender: TObject);
begin
RvProject.Open; //打开报表项目
RvProject.SelectReport('ParametrizedReport',False); //通过报表名称选择特定的报表RvProject.SetParam('Name','Leonel'); //给特定参数设定值
RvProject.Execute; //执行报表
RvProject.Close; //关闭报表项目
end;
后初始化变量
后初始化变量是只有在报表已经被打印了才知道值的变量。比如页的总数(TotalPages)就是后初始化变量,其使用方式类同于一般变量,也是通过DataTexts来打印的。
全局页面
如果有些报表的部分在两个或更多报表中是相同的公用的,你能把这些放置到全局页面中。比如公司名称、日期和时间、当前页号和总页数等。我们需要每个报表都有这些东西,我们应该怎么做?
首先,加一个全局页面到报表项目中。在这个页面中,加一个section组件。Sections组件用于组件的逻辑分组。
在section组件中加入我们想要共享的东西。
在特定报表的特定页,增加另一个section组件。设定该组件的Mirror属性为前面那个全局页面中的Section组件。你能看见全局页面中的Section组件及其包含的对象均被映射进来了。对于其它特定的页面,同法炮制,现在多个页面就可以共享一些组件了。
条件打印
有时我们会根据特定的条件打印报表的特定部分。Rave对此提供了强劲的支持。我们可以根
据字段值和参数的条件映射一些sections 。
在新的一个页面中创建一个参数HeaderKind。它可能的值为H0 (无页头), H1(第一种页头), H2 (第二种页头)。在全局页面中增加一个新的section组件,它具有第二种页头风格。
返回到ConditionalReport报告Page1的页面,加一个DataMirrorSection部件,设定它的DataField字段为Param.HeaderKind。打开它的DataMirrors属性编辑器,增加两个Data Mirrors: 如果值是H1,将打印第一种页头;值是H2, 将打印第二种页头;因为值为H0并不匹配任何mirrors,将不打印页头。
procedure TFormMain.btnExecuteClick(Sender: TObject);
begin
RvProject.Open; //打开报表项目
RvProject.SelectReport(cmbReports.Text,False); //通过报表名称选择特定的报表
case cmbReports.ItemIndex of
1: RvProject.SetParam('Name',edName.Text); //给特定参数设定值
2: RvProject.SetParam('HeaderKind',Format('H%d',[cmbHeaderKind.ItemIndex])); //
给特定参数设定值
end;
RvProject.Execute; //执行报表
RvProject.Close; //关闭报表项目
end;
镶嵌报表项目文件到应用EXE文件中
通常,当你发布应用程序时,你必须同时包括你的报表项目文件。如果你让报表项目文件成为一个独立文件,你就可以采用简单方式对其更新而不需要重新编译你的应用程序。如果你想把报表项目文件包含在你的应用程序的EXE中,也是很简单的,你需要:设定RvProject 组
件的StoreRA V属性。你通过Load一个报表项目文件把它包含在DFM中,通过Save可以提取出先
前的一个报表项目文件,通过Clear可以删除镶嵌的报表项目文件。当报表项目文件被装载进应用程序的EXE中后,你就不再需要同时把报表项目文件打包进发布的应用程序了!
结论
我们学习了如何使用可视报表设计器,以及相应的一些提示。
RA VE中TRvCustomConnection组件介绍TRvCustomConnection组件
描述:
通过数据连接组件的事件,你可以定制数据以何种方式送到你的Rave报表.对于使用TRvCustomConnection的非数据库数据,你会想要通过这些事件得到可以使用的所有数据。对于数据库数据连接组件象TRvDataSetConnection,你仅仅想要覆盖OnValidateRow事件.
注意: TRvCustomConnection组件有一个整型的DataIndex和DataRows属性.他们用于自定
义连接器事件,可以和OnFirst, OnNext和OnEOF事件一起使用. DataIndex用作
数据指针位置,它以0为首行. DataRows指明数据的行数.例如,如果你为内存数组定义一个
自定义数据连接,你仅需要初始化Connection.DataRows属性为内存数组中的元素数量
然后让Rave处理OnFirst, OnNext 和OnEOF事件.在OnGetRow事件中,你将存取Connection.DataIndex属性区确定哪个数据被传回来(记住对于首行DataIndex为0).
事件:
OnGetCols
这个事件当Rave要检索数据的元数据信息时被调用,在该事件中你可为你的数据中的每
个字段(列)调用Connection.WriteField方法。WriteField定义如下:
procedure WriteField(Name: string;DataType: TRpDataType;Width:
integer;FullName: string;Description: string);
Name是该字段的短名称,它只能包含文字和数字字符。DataType是下列所示的数据类型
之一:dtString,dtInteger, dtBoolean, dtFloat, dtCurrency, dtBCD,
dtDate, dtTime, dtDateTime, dtBlob, dtMemo 或dtGraphic。Width是和该字段宽度
相关的字符。Full name是字段名称的更详细的描述,它可以包括空格和其他非字母数字字符。如果Full name为空白,那么Name将用作字段的full
name。Description是一个完整的字段描述,由于它用memo组件来编辑所以可以包含多行内
容。使用
description属性来说明字段如何被使用以及关于字段数据的其他信息。
举例:
procedure TDataForm.CustomCXNGetCols(Connection: TRvCustomConnection);
begin
With Connection do begin
WriteField('Index',dtInteger,8,'Index Field','Description 1');
WriteField('Name',dtString,30,'Name Field','Description 2');
WriteField('Amount',dtFloat,20,'Amount Field','Description 3');
end; { with }
end;
OnOpen
进行数据会话的初始化工作调用该事件。在这个事件中你可以打开数据文件,初始化变量以及为在数据会话结束时引发的OnRestore事件保存当前的数据状态
举例:
procedure TDataForm.CustomCXNOpen(Connection: TRvCustomConnection);
begin
AssignFile(DataFile,'DATAFILE.DAT');
Reset(DataFile,1);
end;
OnFirst
定位数据指针到首行的时候调用该事件
举例:
procedure TDataForm.CustomCXNFirst(Connection: TRvCustomConnection);
begin
Seek(DataFile,0);
BlockRead(DataFile,DataRecord,SizeOf(DataRecord),DataRead);
end;
OnNext
移动数据指针到下一行的时候被调用
举例:
procedure TDataForm.CustomCXNNext(Connection: TRvCustomConnection);
begin
BlockRead(DataFile,DataRecord,SizeOf(DataRecord),DataRead);
end;
OnEOF
判断数据指针是否超过文件的结尾处,如果没有行或者在OnNext事件中已经移到最后
一行时触发该事件。
举例:
procedure TMainForm.CustomCXNEOF(Connection: TRvCustomConnection;var EOF: Boolean);
begin
EOF := DataRead OnGetRow
检索当前行数据时触发该事件。Rave有好几种方法用来写数据到指定的缓冲区。字段
的顺序和类型必须完全匹配在OnGetCols事件中提供的字段的定义。
下面是Connection对象提供的用来写数据到数据缓冲区的函数列表
procedure WriteStrData(FormatData: string;NativeData: string); { dtString
}
procedure WriteIntData(FormatData: string;NativeData: integer); {
dtInteger }
procedure WriteBoolData(FormatData: string;NativeData: boolean); {
dtBoolean }
procedure WriteFloatData(FormatData: string;NativeData: extended); {
dtFloat }
procedure WriteCurrData(FormatData: string;NativeData: currency); {
dtCurrency }
procedure WriteBCDData(FormatData: string;NativeData: currency); { dtBCD }
procedure WriteDateTimeData(FormatData: string;NativeData: TDateTime); {
dtDate, dtTime and dtDateTime }
procedure WriteBlobData(var Buffer;Len: longint); { dtBlob, dtMemo
anddtGraphic }
有个特别的方法WriteNullData (no parameters),可以用于包含未初始化或null数
据的任何字段的调用。FormatData参数常用于为该字段传递预先格式化的字符数据。
NativeData参数用于传递字段的未格式化的或Raw数据,如果特定的格式在Rave报表
中定义,那么格式将应用到NativeData。如果没有特定的格式在Rave报表中定义,那么FormatData将被用来打印。
举例:
procedure TDataForm.CustomCXNGetRow(Connection: TRvCustomConnection);
begin
With Connection do begin
WriteIntData('',DataRecord.IntField);
WriteStrData('',DataRecord.StrField);
WriteFloatData('',DataRecord.FloatField);
end; { with }
end;
OnValidateRow
这个事件用来控制是否你允许当前的行包括在报表中。
举例:
procedure TDataForm.CustomCXNValidateRow(Connection: TRvCustomConnection;var ValidRow: Boolean);
begin
ValidRow := DataRecord.FloatField >= 0.0;
end;
OnRestore
中止并恢复数据会话到先前状态时触发该事件。在这个事件中你可以关闭数据文件,释放资源以及恢复数据到OnOpen事件触发时的状态
举例:
procedure TDataForm.CustomCXNRestore(Connection: TRvCustomConnection);
begin
CloseFile(DataFile);
end;
RA VE中Rendering组件介绍
TRvRenderPreview描述
TRvRenderPreview组件接收TRvNDRWriter组件生成的文件并发送到屏幕打
印。TRvRenderPreview拥有许多方法和事件允许程序员创建完全自定义的用户界面。
TRvRenderPreview
ScrollBox定义报表在预览时候的TScrollBox组件。FileName和StreamMode的用法和它们
在TRvNDRWriter、TRvRenderPreview中的用法一样。GridHoriz
和GridVert定义水平和垂直间距,RulerType和网格的设置一起配合使用可以使报表不用进行打印输出就可以精确的确定报表中各个项目的位置。MarginMethod和
MarginPercent确定围绕页面的空白页边距的方法和尺寸。ShadowDepth定义每页阴影的像素
数目。Monochrome定义是采用单色还是彩色图像输出。
NextPage和PrevPage用来进行页面跳转。ZoomInc定义ZoomIn和ZoomOut的数量用于修改当前
缩放的百分数因子(ZoomFactor)
TRvRenderPreview事件
当前页被改变并允许程序员用新的页做当前页来更新用户界面时触发OnPageChange。当前的缩放因子被改变时触发OnZoomChange。
TRvRenderPrinter描述
TRvRenderPrinter组件接收由TRvNDRWriter组件产生的文件并发送到当前打印
机。TRvRenderPrinter经常用于从预览屏幕打印。TRvRenderPrinter
是一个简单的组件,但拥有可以定制打印的方法和属性。
TRvRenderPrinter属性和事件
如果StreamMode是smMemory或smFile,FileName则是TRvNDRWriter生成的报表文件的名
称。当程序员想要提供自己的流对象(TStream的任何子类)并分把它
配给TRvNDRWriter的Stream属性时,streammode应该为smUser。
TRvRenderPDF描述
TRvRenderPDF允许从报表中生成PDF文档。设置EmbedFonts为True可以让字体嵌入到PDF
文档中。PDF中图像的质量可以用一个使用百分比的ImageQuality属性来设置。
设置UseCompression为True可以生成压缩的PDF文档。首先要uses ZLib,在OnCompress 事件
中的代码如下
With TCompressionStream.Create(clMax, OutStream) do
try
CopyFrom(InStream, InStream.Size);
finally
Free;
end;
让应用程序拥有rendering能力最简单的方法是在一个表单上放一个render组件,它会自动注册格式并带有TRvSystem的标准设置和预览对话框。如果希望得到更多自动rendering 的方法,可以调用Render方法并传给它一个NDR TStream对象或一个NDR文件的文件名作为参
数。
TRvRenderHTML描述
TRvRenderHTML转换一个NDR流或文件为HTML网页。支持文本,图像,线条和方框对象。
输出结果为HTML4.0格式且匹配打印输出。
TRvRenderRTF描述
TRvRenderRTF转换一个NDR流或文件为RTF格式。RTF文档的输出结果匹配报表的打印格
式。文档中的元素被独立的包含在"frames"中支持精确的页面定位。
TRvRenderText描述
TRvRenderText转换一个NDR流或文件为文本格式,在这个报表中只支持文本项,其他的
对象如图形或线条将被忽略。为了匹配最终的输出设备,CPI属性允许每英寸字符被定义而LPI属性
允许每英寸的线条被定义。注意最终文本文件到打印机的输出可能不匹配CPI和CPL的设置,
因为没有特定的命令格式被插到文本文件中。
RA VE中TRvNDRWriter组件介绍
日期:2004年12月9日作者:人气:819 查看:[大字体中字体小字体] TRvNDRWriter组件
描述:
TRvNDRWriter组件和TRvRenderPrinter及TRvRenderPreview一起用特定的二进制格式存
储报表直到它被打印或预览。
属性和事件
TRvNDRWriter拥有属性和事件来控制文件输出。AccuracyMethod使字符串在打印预览的
中显示的更精确。当StreamMode属性不是smUser时候
FileName属性中的文件将被创建。一个大报表(页数多于10页或有许多图片)应该使用smFile。而对于小报表(页数少于10页)则应使用smMemory。
调用Execute方法发送报表到文件。
RA VE中Band的BandStyle属性设定方法
日期:2004年12月9日作者:SCY ANGYU 人气:1154 查看:[大字体中字体小字体]
RA VE中Band的BandStyle属性设定方法
关于这个属性的设置,我一直没有搞清楚!今天好好研究了一下,有关体会是:
Print Location(打印位置):
Body Header(页眉)
Group Header(组眉)
Row Header(行眉)
Detail(表体)
Row Footer(行脚)
Group Footer(组脚)
Body Footer(页脚)
Print Occurrence(打印事件):
First(首页):Band所包含的内容只可以在第一页打印,以后各页将不包括相关的内容;
New Page(新的一页):Band所包含的内容必须在新的一页中,不能继续在原有页面中空
白的部分继续打印;
New Column(新的分栏):在Region组件设置分栏时相应的内容只打印在新的分栏中,而
不是现在正在使用的分栏中。
简单的报表
对于表的行头一般采用的是常规Band,对于表体则一般采用的是DataBand。
这种情况时,常规Band的BandStyle属性一般设定为:
Print Location为Body Header;
Print Occurrence为First、New Page。
DataBand的BandStyle属性一般设定为:
Print Location为空;
Print Occurrence为First。
通常需要设定常规Band的ControllerBand为对应的DataBand。
主细报表
对于主表的行头一般采用的是常规Band,对于主表表体则一般采用的是DataBand。
主表的常规Band的BandStyle属性一般设定为:
Print Location为Row Header;
Print Occurrence为First、New Page。
主表的DataBand的BandStyle属性一般设定为:
Print Location为空;
Print Occurrence为First、New Page。
通常需要设定主表的常规Band的ControllerBand为主表对应的DataBand。
对于细节表的行头一般采用的是常规Band,对于细节表表体则一般采用的是DataBand。
细节表的常规Band的BandStyle属性一般设定为:
Print Location为Body Header;
Print Occurrence为First、New Page。
细节表的DataBand的BandStyle属性一般设定为:
Print Location为Detail;
Print Occurrence为First。
通常需要设定细节表的常规Band的ControllerBand为细节表对应的DataBand。
需要设定细节表的DataBand的ControllerBand为主表对应的DataBand。
细节表与主表的挂接主要是靠设定细节表对应的DataBand以下三个属性:
DetailKey:细节表中与主表映射的字段名称;
MasterDateView:主表对应的数据视图的名称;
MasterKey:主表中与细节表映射的字段名称。
分组报表
对于主表的行头一般采用的是常规Band,对于主表表体则一般采用的是DataBand。
主表的常规Band的BandStyle属性一般设定为:
Print Location为Row Header;
Print Occurrence为First、New Page。
主表的DataBand的BandStyle属性一般设定为:
Print Location为空;
Print Occurrence为First、New Page。
通常需要设定主表的常规Band的ControllerBand为主表对应的DataBand。
对于细节表的行头和分组统计一般采用的是常规Band,对于细节表表体则一般采用
的是DataBand。
细节表的行头常规Band的BandStyle属性一般设定为:
Print Location为Body Header;
Print Occurrence为First、New Page。
细节表的DataBand的BandStyle属性一般设定为:
Print Location为Detail;
Print Occurrence为First。
细节表的分组统计常规Band的BandStyle属性一般设定为:
Print Location为Body Footer;
Print Occurrence为First。
通常需要设定细节表的行头常规Band的ControllerBand为细节表对应的DataBand。
需要设定细节表的DataBand的ControllerBand为主表对应的DataBand。
需要设定细节表的分组统计常规Band的ControllerBand为细节表对应的DataBand。
细节表与主表的挂接主要是靠设定细节表对应的DataBand以下三个属性:
DetailKey:细节表中与主表映射的字段名称;
MasterDateView:主表对应的数据视图的名称;
MasterKey:主表中与细节表映射的字段名称。