




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Rave Reports 概述概述 Rave Reports 是一个基于组件的可视化报表设计工具 它简化了在应用程序加入报表的步 骤 你可以是用 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 对于储存模板用于其他报表页面非常有用 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 有自己的可视报表设计器 以自己的文件格式保存报表 这有一些优势 你可以把报 表 独立于应用程序之外 可独立进行升级 甚至可以通过网络进行更新 或者使用 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 组 件的 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 定义如下 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 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 事件 当前页被改变并允许程序员用新的页做当前页来更新用户界面时触发 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 的设 置 因为没有特定的命令格式被插到文本文件中 RAVE 中 TRvNDRWriter 组件介绍 日期 2004 年 12 月 9 日 作者 人气 819 查看 大字体 中字体 小字体 TRvNDRWriter 组件 描述 TRvNDRWriter 组件和 TRvRenderPrinter 及 TRvRenderPreview 一起用特定的二进制格 式存 储报表直到它被打印或预览 属性和事件 TRvNDRWriter 拥有属性和事件来控制文件输出 AccuracyMethod 使字符串在打印预览 的 中显示的更精确 当 StreamMode 属性不是 smUser 时候 FileName 属性中的文件将被创建 一个大报表 页数多于 10 页或有许多图片 应该使用 smFile 而对于小报表 页数少于 10 页 则应使用 smMemory 调用 Execute 方法发送报表到文件 RAVE 中 Band 的 BandStyle 属性设定方法 日期 2004 年 12 月 9 日 作者 SCYANGYU 人气 1154 查看 大字体 中字体 小字体 RAVE 中 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 的 Controlle
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 香港科技大学(广州)《中学化学教材分析》2024-2025学年第一学期期末试卷
- 2025年高级营养师健康饮食指导手册与常见问题解答集
- 巢湖学院《代数几何基础》2024-2025学年第一学期期末试卷
- 2025年市场营销策略制定与执行模拟练习题
- 河北石油职业技术大学《多媒体课件制作与应用》2024-2025学年第一学期期末试卷
- 石家庄理工职业学院《油画临摹》2024-2025学年第一学期期末试卷
- 2025年计算机软件编程技术面试模拟题及答案集合
- 2025年燃气储运中级技能实操考试指南与模拟题
- 贵州盛华职业学院《病原微生物免疫与健康》2024-2025学年第一学期期末试卷
- 2025年软件开发工程师面试题解析Java编程技术进阶中级模拟卷
- 企业资产收购尽职调查操作手册
- 2025年陕西省综合评标评审专家库考试历年参考题库含答案详解(5套)
- 软件开发项目进展汇报
- 康复理疗室感染管理要求
- 六安市辅警真题2024
- 心电监护技术操作并发症的预防与处理
- 海南省省直辖县级行政单位2024-2025学年七年级下学期7月期末考试语文试卷(含答案)
- 2025年《资料员》考试题库附答案【模拟题】
- 磷石膏砌块项目可行性研究报告
- Unit 8 Let's Communicate!Section A(1a-1d)同步练习(含答案)2025-2026学年人教版(2024)八年级英语上册
- 现场调试合同协议书模板
评论
0/150
提交评论