Skip to content

报表设计器 内核 ​

非DELPHI开发人员,本文无需学习。这里的 内核 指的是 —— 这些控件都是在 DELPHI开发环境下才可见,在设计器环境下是看不到的。

第6章 Delphi控件面板

安装ReportMachine后,在Delphi控件面板中增加两页:“ReportMachine”页和“FRTools”页。

6.1 “ReportMachine”页 ​

名称描述
TRMReport主要的报表生成控件。用于编辑报表,设计时双击打开报表设计器窗口。所有报表都必需
TRMCompositeReport复合报表控件。用于在单个报表中联合多个TRMReport对象
TRMDBDataSet为报表提供数据源连接。数据源可以是TTable或TDataSource。报表中的每个数据区域必须有一个此控件的实例
TRMUserDataSet为报表提供数据源。与TRMDBDataSet不同,您必须通过事件提供数据项目。允许打印数组、字符网格或文本文件
TRMOLEObject附加的ReportMachine对象(OLE)
TRMRichObject附加的ReportMachine对象(RichText)
TRMCheckBoxObject附加的ReportMachine对象(CheckBox)
TRMShapeObject附加的ReportMachine对象(Shape)
TRMBarcodeObject附加的ReportMachine对象(Barcode)
TRMChartObject附加的ReportMachine对象(Chart)
TRMRoundRectObject附加的ReportMachine对象(RoundRect)
TRMTextExport输出转换器——Text格式
TRMRTFExport输出转换器——RTF格式
TRMCSVExport输出转换器——CSV格式
TRMHTMExport输出转换器——HTML格式
TRMDesigner最终用户、运行期间的报表设计器
TRMDataStorage允许最终用户创建表和查询(已淘汰,用TRMDialogControls和TRMBDEComponents替代)
TRMPreview创建自己的预览窗口时使用
TRMPrintTable直接打印表和查询的内容
TRMPrintGrid直接打印TDBGrid所包含的内容
TRMDialogControls包含一组对话框控件,用于在运行时创建对话框
TRMBDEComponents包含一组数据库存取对象(TTable、TQuery、TDataBase)

6.2 “FRTools”页 ​

名称描述
TRMSpeedButton增强的TSpeedButton,拥有“浮动”外观
TRMDock用于创建停靠工具栏
TRMToolBar模拟MS Office工具栏的工具栏控件
TRMTBButton工具栏按钮
TRMTBSeparator工具栏隔离带
TRMTBPanel包含其它Delphi控件的工具栏区域
TRMOpenDBDialog“打开数据表”对话框
TRMComboBox浮动TComboBox
TRMFontComboBox包含已安装字体列表的浮动TComboBox
TRMComboEdit右边有自定义按钮的编辑框

第7章 TRMReport控件详解 ​

这是ReportMachine的主控件,包含调入、保存、预览和打印报表的方法。每个TRMReport控件只能包含一个单独报表。

7.1 TRMReport属性 ​

属性缺省值描述
DataSet-联接到一个TRMxxxDataSet。数据源的记录将被默认报表主数据带打印
GrayedButtonsFalse若为True,设计器和预览窗口的工具栏显示为灰色
InitialZoompzDefault定义预览的初始缩放值
MDIPreviewFalse显示预览窗口为一个MDI子窗口
ModalPreviewTrue若为True,预览窗口为模式方式
ModifyPreparedTrue若为True,在预览窗口中双击页面可修改准备好的报表
Preview-连接到一个TRMPreview
PreviewButtonsAll定义预览窗口中可用的按钮集
ReportTypeRtSimple定义怎样解释数据源。若为rtMultiple,报表在打印主数据带时强制从头开始打印
ShowProgressTrue若为True,准备、打印或输出报表时显示过度窗口
StoreInDFMFalse若为True,存储报表在DFM文件中(报表存入EXE中不能被修改)
Title-报表标题,显示在预览窗口和打印任务列表中

注意:TRMReport.StoreInDFM属性缺省为False,意思是报表必须存入可执行文件或转换到数据库的BLOB或二进制字段中。若想保存报表到DFM资源,设置此属性为True,但任何报表被修改时都必须重新编译应用程序。

7.2 TRMReport事件 ​

事件描述
OnBeforePrint打印报表之前被激活
OnBeginBand打印一个区域前被激活
OnBeginColumn打印透视表栏前被激活
OnBeginDoc打印一个报表前被激活
OnBeginPage开始打印一个页面时被激活
OnEndBand打印一个区域结束后被激活
OnEndDoc结束一个报表的打印时被激活
OnEndPage结束一个页面的打印时被激活
OnGetValueReportMachine在表达式中查找不明变量时被激活
OnManualBuild允许手工构建报表(用代码显示需要的区域)
OnMouseOverObject预览窗口中鼠标移到某个对象时被激活
OnObjectClick预览窗口中点击某个对象时被激活
OnPrintColumn打印透视表栏前被激活,可返回栏宽
OnProgress长时间运行中被激活,可显示工作进度
OnUserFunctionReportMachine在表达式中查找不明函数时被激活

7.3 TRMReport基本方法 ​

方法描述
LoadFromFile, LoadFromStream, LoadFromBlobField从外部文件、流或BLOB字段中调入报表
SaveToFile, SaveToStream, SaveToBlobField保存报表到外部文件、流或BLOB字段
DesignReport运行报表设计器
ShowReport构建报表并在预览窗口中显示
PrepareReport构建报表而不预览
LoadPreparedReport从外部文件中调用以前准备好的报表(.FRP文件)
SavePreparedReport保存准备好的报表到外部文件
ShowPreparedReport显示一个准备好的报表
PrintPreparedReport打印一个准备好的报表
PrintPreparedReportDlg打印前显示打印对话框
ExportTo使用输出转换器输出一个准备好的报表

第8章 TRMDBDataSet控件 ​

非可视控件,用于使用First、Next和Prior方法遍历整个数据源。类似于ReportBuilder的TppBDEPipeline控件,但只能用导航而不能提供字段数据给报表。

属性描述
CloseDataSource报表构建后关闭相关数据源
DataSet一个像TTable或TQuery的数据集
OpenDataSource构建报表前打开数据源
RangeBegin数据集中的首记录(rbFirst从首记录开始;rbCurrent从当前记录开始)
RangeEnd数据集中的末记录(reLast在末记录停止;reCurrent在当前记录停止;reCount在N条记录后停止)

这个控件的DataSet属性连接到一个像Ttable或Tquery这样的TdataSet控件(可以理解为特定数据集合TDataset的代理)。设置OpenDataSource和CloseDataSource为True,用于自动打开或关闭相关数据集。

RangeBegin和RangeEnd用于设置记录范围。

RangeBegin可以接受下列值:

l rbFirst——从首记录开始选择记录;

l rbCurrent——从当前记录开始选择记录。

RangeEnd可以接受下列值:

l reLast——在末记录停止记录选择;

l recurrent——当你开始报表时在当前记录处停止记录选择;

l recount——在选择N条记录后停止。记录选择数保存在RangeEndCount属性中。

第9章 TRMUserDataSet控件 ​

同样用于导航数据,但用于数据结构(如数组、字符网格、外部文件等)作为数据来源。(可以理解为对非标准数据,我们模拟出一个数据集合用来支持打印)

事件描述
OnCheckEOF监视EOF布尔值参数,设为True停止导航
OnFirst必须指定首记录指针
OnNext必须指定下一记录的指针
OnPrior必须指定前一记录的指针