Appearance
以下是《报表机器开发指南》的全量在线帮助文档,涵盖从入门概念到高级开发的完整内容,供实施人员学习参考。
ReportMachine控件 在线帮助
本手册主要目的是帮助软件开发人员及实施人员了解《报表机器》控件的使用方法。因该控件经较大修改,如有与网络上流行的“FastReport”、“ReportMachine”技巧冲突之处,以本手册为准。
为了方便开发人员和提高开发效率,公司开发框架针对报表机器进行了大量二次开发。因此,在公司的软件体系下开发一般报表,若您会使用Quick Report和简单的报表机器,可直接浏览后面的《管理之星系列软件报表开发体系》;有技术难题时再回到前面查找答案。
第一篇:入门 (DELPHI开发)
如果我们不需要在DELPHI下开发(例如只是做项目落地实施),本文可以无需阅读。
第1章 绪言
本指南让您熟悉报表设计器,了解报表设计的基本概念(各种区域、数据源、二次表等),帮助您开始用ReportMachine创建报表。
如果您不熟悉报表设计器,建议参考QuickReport的帮助系统。QuickReport的大部分基本概念也适用于ReportMachine,但ReportMachine能提供更多的弹性和最终用户自定义功能。
第2章 关于ReportMachine的说明
ReportMachine是高弹性的报表设计器,用于报表的数据可从任何类型的数据源获取,包含字符列表、BDE数据库、ADO数据源(不使用BDE)、Interbase(使用IBO)、ASTA数据源、Pascal数组和记录等。
整个ReportMachine系统用Delphi的Pascal编写,不需要动态链接库,但在您的项目中占用大约400kb(Delphi 5)。若需最终用户拥有设计能力,这将在.EXE中增加大约500kb。
ReportMachine拥有非常吸引人的用户界面,使用最新的用户界面组件(如可停靠的工具栏),最终用户会非常愿意使用这个设计器,只需使用鼠标即可创建大多数报表。
ReportMachine是名副其实的快速报表——较其它Delphi报表设计器而言,没有什么可以接近它的开发速度。
第3章 ReportMachine的特点
ReportMachine的基本思想来源于Windows版的“1S-Bookkeeping”6.0——报表的基本元素是包含多行文本的矩形,这些文本既包含标准文本又包含变量,变量(像数据字段)用方括号突出显示。
主要特点:
- 构建报表的生成器,也可在运行时使用
- 类似于MS Word的打印预览
- 直接编译在Delphi EXE中,不需要动态链接库
- 支持JPEG(使用Delphi类库)和GIF(使用RX类库)
- 拥有比QuickReport更快速的性能
- 简洁、纯Delphi代码,比QR3有更小的设计器
- 类似QuickReport和ReportBuild的强大的区域导向报表生成器
- 包含许多非常有用的组件:文本、线段、图像、图形、OLE对象、格式文本、RX Rich2.0、图表、条形码、带阴影的文本
- 报表生成的页数无限制
- 多页报表;复合报表;子报表;分组;多栏报表;主从报表;透视表;二次开发表
- 打印过程全控制;支持所有纸张尺寸
- TXT、RTF(用于图形)、CSV、HTML(用于图像)输出转换器
- 在报表预览中查找文本
- 附加的TRMDataStorage组件允许在运行时创建数据表和查询
- 报表生成的页面可以被修改
- 内置的Pascal解释器可用于非常灵活的报告
- 报表数据可保存于Delphi的DFM文件、外部文件、数据表的BLOB字段或数据流
- 报表文件非常小,一般在1K-10K之间
第4章 创建报表(基本流程)
构建报表由下面几步构成:

4.1 数据
大多数报表从数据库中查找数据。Delphi本身提供了高效的数据库访问机制(TTable和TQuery组件),同样适用于ReportMachine。总的来说,可以使用任何一个从TDataSet组件继承的子类。
除了数据库中的数据,ReportMachine事实上可以使用任何数据源(数组、文件、字符网格等)。在这种情况下,程序必须自己控制非数据库源的存取,通过ReportMachine中的事件集允许程序传递数据到核心。
在ReportMachine中创建的数据感知控件足以与Delphi IDE中的相提并论——您在窗体上放置控件,在对象观察器中改变它的属性。
我们通过数据字典这个菜单,去定义当前报表使用什么数据源。

4.2 参数
用户可以输入参数,如数据范围、公司名称、发票编号等。
ReportMachine允许最终用户开发对话框,就像在Delphi的IDE中一样——有一组标准控件,能被拖放到对话框窗体上。ReportMachine内置语言允许使用仿Delphi脚本语言创建对话框,并输入变量到核心部分。
4.3 窗体
报表窗体描述报表的版面。为分组数据,ReportMachine使用了“区域”(Band)。有两种类型的区域:服务器型区域(报表头、页码等)和用于多行格式化数据的区域(数据区域)。数据区域联接到数据源,内容是数据源中的记录。
通过添加对话框,我们可以设计更复杂的报表。

报表开发的可视化环境——设计器——用于构建报表。设计器界面由工具栏组成,使用对象观察器可控制对象的属性,类似于Delphi中的使用方式。
下图,就是一个对话框的例子。

4.4 处理
在构建报表时处理输入的数据、报表窗体或控件的修改。例如用红色显示负数,或在分组脚中进行处理。
在ReportMachine中内置了脚本语言(类似于Pascal但更简单),用这个脚本语言编写事件处理代码。这可以创建复杂的处理而无需在Delphi中编写代码,因而不需要为项目联接一个报表。
在脚本中可使用所有对报表有用的属性和方法,以及变量和数据字段,也可创建变量和数组。
4.5 准备报表
准备报表是激活ReportMachine的核心处理并在点击“预览”按钮后进行预览的过程。
与大多数报表生成器不同(它们的报表页面内容保存在图元文件中),在ReportMachine中准备好的报表是一组对象的集合,描述报表处理后各页面所包含的内容。这允许修改生成的报表页面。
ReportMachine预览文档类似于Microsoft Word:在一个窗口中可立即看到多个页面,并可在整个报表页面中查找文本。
第5章 举例:设计一个简单报表
如果你在DELPHI开发环境下,使用ReportMachine构建一个简单报表:
- 在一个窗体上放置三个控件:TTable(或TQuery)、TRMDBDataSet和TRMReport
- 联接TTable控件到一个数据库(设置DatabaseName和TableName属性)
- 打开报表设计器(双击TRMReport控件)
- 点击工具栏上的“插入数据字段”按钮
- 在对话框中选择所需字段并按“确认”键
报表现在包含所选的所有字段,可自动生成报表模板,也可包括图像、标题或页脚、页码等。
要运行报表,按工具栏的“预览”按钮。ReportMachine构建报表并在预览窗口中显示内容。
我们只需要学会使用这个报表设计环境
下图是一个标准化的报表设计器环境,除非你脱离了安仕达ERP软件的框架单独去开发报表,否则,你不需要额外在代码里面去拖放报表机器控件,单独去写打印实现的代码,直接调用标准化打印服务即可,然后在报表里面去绑定当前的窗口对象和窗口数据集合。

