Rave Reports概述Word文件下载.docx
《Rave Reports概述Word文件下载.docx》由会员分享,可在线阅读,更多相关《Rave Reports概述Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。
Reports储存在报表项目的报表库中。
一个Rave报表由报表页面和储存在这些页面的可视报表组件组成。
你可以随意创建许多页面定义,然后在各种方法中
组合它们。
5.GlobalPages
GlobalPages储存在报表项目的GlobalPages分类中,组件包含在GlobalPages上,不象其他那些报表页面里面的组件,它们对于所有报表都是可见的。
GlobalPages
对于储存模板用于其他报表页面非常有用。
6.DataViews
DataViews储存在报表项目的DataViewsDictionary中。
DataViews给提供数据连接组件提供一个接口。
当创建新的DataViews时,你必须有活动的数据
连接组件在正在运行的应用程序中或者在一个已加载的Delphi或C++Builder表单上。
DataViews然后将让数据连接组件去检索元数据(meta-data)信息比如字段名,
数据类型,等等。
字段组件包含在每个DataViews中,可用来设置每个数据列的属性。
RaveReports初步入门
你可以在VCL或CLX应用程序中使用RaveReports去实现来自数据库或非数据库数据的报表.下面的过程说明
怎样增加一个简单的报表到已存在的数据库应用程序中.
1.在Delphi中打开一个数据库应用程序.
2.从组件面板的Rave页,假如TRvDataSetConnection组件到应用程序的表单.
3.在ObjectInspector中,设置DataSet的属性为一个已在你的应用程序中定义的dataset组件.使用RaveVisualDesigner
4.去设计你的报表然后并创建一个reportproject文件(.ravfile).
选择Tools|RaveDesigner运行RaveVisualDesigner.
选择File|NewDataObject显示DataConnections对话框.
在DataObjectType列表,选择DirectDataView然后单击Next.
在ActiveDataConnections列表,选择RVDataSetConnection1然后单击Finish.
在RaveVisualDesigner窗口左边的ProjectTree中,展开DataViewDictionary结点,燃后展开刚创建的DataView1结点.
你要使用的数据字段显示在DataView1结点下.
选择Tools|ReportWizards|SimpleTable显示SimpleTablewizard.
选择DataView1然后单击Next.
选择你想要在这个报表中显示的两个或三个字段然后单击Next.
按照随后的向导页提示区设置要在这个报表中使用的字段的排序,页边距,首部文本,以及字体.
在最后向导页上,单击Generate完成这个向导然后在页面设计器中显示报表.
选择File|Saveas显示SaveAs对话框.把Raveproject存到你的Delphi应用程序的目录下并命名为MyRave.rav.
最小化RaveVisualDesigner窗口返回Delphi.
5.从组件面板的Rave页,添加一个项目组件TRvProject到表单.
6.在ObjectInspector,设置ProjectFile属性为刚才创建的reportproject文件(MyRave.rav).
7.从组件面板的Standard页,添加TButton到表单.
8.在ObjectInspector,单击Events标签然后双击OnClick事件.
9.在事件处理程序中使用ExecuteReport方法去执行Raveproject组件.
10.按F9运行应用程序.
11.单击在第七步添加的按钮.
12.OutputOptions对话框被显示出来,单击OK显示报表.
Rave报表介绍之二:
可视报表设计器
可视报表设计器
Rave有自己的可视报表设计器,以自己的文件格式保存报表。
这有一些优势,你可以把报表
独立于应用程序之外,可独立进行升级,甚至可以通过网络进行更新,或者使用Nevrona的
RaveReportServer。
当然,你也可以把报表保存为标准的DFM文件格式。
为了启动可视报表设计器,防止一个TRvProject部件在form上,这个TRvProject部件将是你
的应用程序和你即将要创建的报表的联系。
如果需要,可加一个TRvSystem部件到窗体上,
通过设定RvProject的Engine属性与它挂接。
RvSystem部件是作为一个通用的报告系统配置
部件:
可通过它设置将要使用的打印机,边界,页数等等。
为了开始一个新的报表项目,双
击RvProject部件,或者通过敏感菜单选择"
RaveVisualDesigner..."
。
一个Rave项目文件将可能由多个报表组成。
通过全局页面(GlobalPages)可以保存一些报表
间共享的品项。
如果一个属性从缺省值改变为特定值,在属性编辑器中会显示成粗体。
当在可视报表设计器设计好报表后,返回到delphi的IDE中,改变RvProject部件的
ProjectFile属性为你刚才完成并保存的报表文件名。
为了运行报表,加一个调用RvProject
对象的Execute方法的过程即可。
如果我们设计的报表项目中只有一个报表,我们仅仅调用RvProject.Execute即可。
如果我
们的报表项目中有多个报表,我们不得不在调用Execute前,调用SelectReport来选择特定
的报表,或者调用直接调用ExecuteReport方法。
与报表项目进行交互
参数(Parameters)
参数可以存在于报表项目,报表,报表页面这三个地方,可通过对应对象的parameters属性
进行设定。
你仅能通过报表项目的对象树来选择报表项目和特定的报表。
对于报表页面可以通过报表项
目的对象树或页面设计的标题来选择。
参数可通过DataText部件来输出。
在页面上加一个DataText组件,打开属性编辑器的
DataField属性。
你能在此选择项目变量、参数、后初始化变量。
procedureTFormMain.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,将不打印页头。
RvProject.SelectReport(cmbReports.Text,False);
casecmbReports.ItemIndexof
1:
RvProject.SetParam('
edName.Text);
2:
HeaderKind'
Format('
H%d'
[cmbHeaderKind.ItemIndex]));
//
给特定参数设定值
镶嵌报表项目文件到应用EXE文件中
通常,当你发布应用程序时,你必须同时包括你的报表项目文件。
如果你让报表项目文件成
为一个独立文件,你就可以采用简单方式对其更新而不需要重新编译你的应用程序。
如果你
想把报表项目文件包含在你的应用程序的EXE中,也是很简单的,你需要:
设定RvProject组
件的StoreRAV属性。
你通过Load一个报表项目文件把它包含在DFM中,通过Save可以提取出先
前的一个报表项目文件,通过Clear可以删除镶嵌的报表项目文件。
当报表项目文件被装载
进应用程序的EXE中后,你就不再需要同时把报表项目文件打包进发布的应用程序了!
结论
我们学习了如何使用可视报表设计器,以及相应的一些提示。
RAVE中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定义如下:
procedureWriteField(Name:
string;
DataType:
TRpDataType;
Width:
integer;
FullName:
Description:
string);
Name是该字段的短名称,它只能包含文字和数字字符。
DataType是下列所示的数据类型
之一:
dtString,dtInteger,dtBoolean,dtFloat,dtCurrency,dtBCD,
dtDate,dtTime,dtDateTime,dtBlob,dtMemo或dtGraphic。
Width是和该字段宽度
相关的字符。
Fullname是字段名称的更详细的描述,它可以包括空格和其他
非字母数字字符。
如果Fullname为空白,那么Name将用作字段的full
name。
Description是一个完整的字段描述,由于它用memo组件来编辑所以可以包含多行内
容。
使用
description属性来说明字段如何被使用以及关于字段数据的其他信息。
举例:
procedureTDataForm.CustomCXNGetCols(Connection:
TRvCustomConnection);
begin
WithConnectiondobegin
WriteField('
Index'
dtInteger,8,'
IndexField'
Description1'
dtString,30,'
NameField'
Description2'
Amount'
dtFloat,20,'
AmountField'
Description3'
end;
{with}
OnOpen
进行数据会话的初始化工作调用该事件。
在这个事件中你可以打开数据文件,初始化变
量以及为在数据会话结束时引发的OnRestore事件保存当前的数据状态
procedureTDataForm.CustomCXNOpen(Connection:
AssignFile(DataFile,'
DATAFILE.DAT'
Reset(DataFile,1);
OnFirst
定位数据指针到首行的时候调用该事件
procedureTDataForm.CustomCXNFirst(Connection:
Seek(DataFile,0);
BlockRead(DataFile,DataRecord,SizeOf(DataRecord),DataRead);
OnNext
移动数据指针到下一行的时候被调用
procedureTDataForm.CustomCXNNext(Connection:
OnEOF
判断数据指针是否超过文件的结尾处,如果没有行或者在OnNext事件中已经移到最后
一行时触发该事件。
procedureTMainForm.CustomCXNEOF(Connection:
TRvCustomConnection;
varEOF:
Boolean);
EOF:
=DataReadOnGetRow
检索当前行数据时触发该事件。
Rave有好几种方法用来写数据到指定的缓冲区。
字段
的顺序和类型必须完全匹配在OnGetCols事件中提供的字段的定义。
下面是Connection对象提供的用来写数据到数据缓冲区的函数列表
procedureWriteStrData(FormatData:
NativeData:
{dtString
}
procedureWriteIntData(FormatData:
integer);
{
dtInteger}
procedureWriteBoolData(FormatData:
boolean);
dtBoolean}
procedureWriteFloatData(FormatData:
extended);
dtFloat}
procedureWriteCurrData(FormatData:
currency);
dtCurrency}
procedureWriteBCDData(FormatData:
{dtBCD}
procedureWriteDateTimeData(FormatData:
TDateTime);
dtDate,dtTimeanddtDateTime}
procedureWriteBlobData(varBuffer;
Len:
longint);
{dtBlob,dtMemo
anddtGraphic}
有个特别的方法WriteNullData(noparameters),可以用于包含未初始化或null数
据的任何字段的调用。
FormatData参数常用于为该字段传递预先格式化的字符数据。
NativeData参数用于传递字段的未格式化的或Raw数据,如果特定的格式在Rave报表
中定义,那么格式将应用到NativeData。
如果没有特定的格式在Rave报表中定义,那么
FormatData将被用来打印。
procedureTDataForm.CustomCXNGetRow(Connection:
WriteIntData('
'
DataRecord.IntField);
WriteStrData('
DataRecord.StrField);
WriteFloatData('
DataRecord.FloatField);
OnValidateRow
这个事件用来控制是否你允许当前的行包括在报表中。
procedureTDataForm.CustomCXNValidateRow(Connection:
TRvCustomConnection;
varValidRow:
Boolean);
ValidRow:
=DataRecord.FloatField>
=0.0;
OnRestore
中止并恢复数据会话到先前状态时触发该事件。
在这个事件中你可以关闭数据文
件,释放资源以及恢复数据到OnOpen事件触发时的状态
procedureTDataForm.CustomCXNRestore(Connection:
CloseFile(DataFile);
RAVE中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事件