第二十一章QReport报表程序开发 C++ Builder PPT课件 简体中文版

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

• 21-1 • 21-2 • 21-3 • 21-4 • 21-5 • 21-6 • 21-7
浅谈QReport QuickRep组件 条列式报表程序 图案式报表程序 卷标式报表程序 合成式报表程序 报表进阶技巧
21-1. 浅谈QReport
• 在C++ Builder中的报表以带状的概念来呈现整份文件,而这些带状的内 容分别对应到一般熟悉的报表格式,包括页首、标题、内容、页尾等部分。 底下为文件格式和C++ Builder中各带状间的对应关系描述。
• PrinterSetup
– 开启打印机的设定对话框,类似对PrinterSettings属性的设定。
• Print
– 把产生的报表内容传至打印机并输出。
21-2-3. 常用事件
属性
说明Baidu Nhomakorabea
AfterPrint
输出报表内容至打印机后触发。
BeforePrint 输出报表内容至打印机前触发。
AfterPreview 预览打印后触发。
NewPage的换页 (没有字段标题)
NewColumn的换页
21-2-2. 常用方法
• Preview和PreviewModel
– 两方法的功用皆为产生预览窗口,不同的是:Preview产生的窗口并 非Modal Window,也就是可在未关闭该窗口情况下变换作用中的窗 口,但必须关闭该预览窗口后才能继续执行后面的程序内容;反之, ShowModal即为Modal Window,不允许在未关闭该预览窗口前变更 作用中的窗口。两者的差别类似于开启窗体的Show和ShowModal两 方法。
21-2-1. 常用属性
属性
说明
PrinterSetting QuickRep使用QuickRepPrinterSettings类别来储存 PrinterSetting属性值的设定,该属性值主要在决定打印机的 打印方式,有以下几个子属性可设定:
Copies:设定报表打印的份数。
Duplex:在支持双面打印的打印机上,设定属性值为True以双面打 印方式打印文件。
设定整份报表的预设字型,该属性会影响到整份报表内组 件的字型属性。 设定是否加上表格外框和设定外框格式。
透过选取方式设定整份报表内含有的Bands(带状格式), 省去拖拉带状组件的麻烦。
21-2-2. 常用方法
• ExportToFilter
– 利用该方法的呼叫转换报表文件成不同的格式输出,包括HTML、 TXT、CSV和xls等,其中转换HTML格式范例如下,详细说明请参考 21-7小节的介绍。
多功能的显示组件。允许显示数据集合的字段内容、运算处 理后的内容和单纯的文字数据,而内容的决定则靠 Expression属性值的设定。
专门打印系统信息,包括页数、时间或是打印日期等。
适合打印大量非数据库内的文字数据使用。
负责在报表上绘制图形,包括方形、圆形或直线等。
报表上的RichEdit组件,可以在该组件的范围内填入RichText 的文字数据。
21-3. 条列式报表程序
1. 开启新项目,在窗体中(窗体名称为Form1,程序代码为Main.cpp)新 增Table、DataSource、DBGrid和Button组件如下图所示,重要属性 如下表所列。
属性 组件
Table DataSource DBGrid
Name
DatabaseName
Table1 DataSource1
第二十一章QReport报表程序开发
报表程序能把程序的执行结果转成报表的形式 透过打印机进行输出,是很多应用程序不可或 缺的功能,而透过C++ Builder提供的报表开发 组件能大幅简化这类程序的开发过程,但却不 因此而丧失其功能性,透过本章的说明,相信 开发报表程序对你(妳)将不再是个难题。
大纲
21-1. 浅谈QReport
组件名称
QRLabel
QRDBText
QRExpr
QRSysData QRMemo QRShape QRRichText
叙述
打印文字,而文字内容取决于Caption属性的设定,类似 Label组件的使用。
打印数据库的字段数据,类似DBText组件的效果,同样必须 指定DataSource和DataField属性。
#include <qrexport.hpp> void __fastcall TForm1::Button3Click(TObject *Sender) { TQRHTMLDocumentFilter *htmlfilter=new TQRHTMLDocumentFilter("Report.htm"); Form2->Table1->Open(); Form2->QuickRep1->ExportToFilter(htmlfilter); Form2->Table1->Close(); delete htmlfilter; }
PrintIfEmpty
设定如果所打印的数据集合不含任何数据时是否仍需执行 打印的动作,默认值为True,代表无论如何皆执行报表的 打印工作。
ReportTitle
设定报表的标题,当执行预览打印时,该属性设定值决定 预览窗口左上角的标题内容。
ShowProgress 设定在传递报表内容至打印机输出时,是否显示目前的传 递进度,默认值为True显示进度。
FirstPage:设定打印范围的起点,也就是从哪一页开始打印,默认 值0代表从整份报表的第一页开始打印。
LastPage:设定打印范围的终点,即打印文件至第几页结束,默认 值为0表示打印至报表最后一页才结束。
OutputBin:若打印机含有多种不同纸张规格的进纸夹,可用来指定 使用的纸张规格,默认值为Auto。
21-2-1. 常用属性
属性
说明
Options
该属性共分三个小项:
FirstPageHeader:设定报表的第一页是否显示页首(PageHeader) 带状内容。
LastPageFooter:设定报表的最后一页是否显示页尾(PageFooter) 带状内容。
Compression:设定报表产生时是否在内存中进行压缩,默认值 为False不压缩。
21-1. 浅谈QReport
组件名称
叙述
QRDBRichText QRDBImage
提供显示DBRichText内的数据。
显示数据集合中的图像数据,且支持Picture组件所能显示 的图形格式。
QRTextFilter QRHTMLFilter QRChart
把报表内容转成Text格式输出。
把报表内容转成HTML格式输出。
OnStartPage 在产生一页新报表后触发,可用来指定绘制在该报表上的内 容或是对报表上任何计算进行归零的动作。
最后,由于QuickRep是透过Print、Preview或PreviewModal等方法的呼叫来 呈现报表格式的内容,而非像一般的VCL组件是藉助窗体来直接显示,所以 一般皆是利用额外的窗体来放置报表组件,再对该窗体内QuickRep组件的方 法(Print、Preview和PreviewModal等)进行呼叫达成显示的目的,因此,最基 本的报表项目程序皆会有两个窗体,其中的主窗体为程序执行时的显示画面, 副窗体则包含QuickRep报表相关组件供主窗体呼叫之用。往后的操作实例中 皆会看到这样的应用。
21-1. 浅谈QReport
• 实际编辑的带状画面则如下图所示,图中各颜色的带状分别对应了上表不 同的带状名称,而画面中的颜色纯粹只供方便显示之用。
rbPageHeader rbTitle rbColumnHeader rbGroupHeader rbDetail
rbGroupFooter rbSummary rbPageFooter
21-1. 浅谈QReport
• 上图中如此多样的带状设定其实是个别分开的,也就是每个 不同的带状各自为一个VCL组件,放置在一个称为QuickRep 的组件上,而该组件才真正代表一份文件,不过QuickRep组 件并没有要求就所有的带状内容进行设定,因此你可以根据 实际使用情形来决定带状使用的种类与数目。
设定完成后的报表编辑画面
21-3. 条列式报表程序
3. 由于报表程序的数据来源为Form1中的Table1,请在Report.h中加入 #include “Main.h”程序片段以便QRDBText能读取Form1中的Table1 组件。
21-3. 条列式报表程序
4. 新增报表内显示组件。此程序使用的报表显示组件有QRLabel和 QRDBText两种,其中QRLable组件单纯显示文字内容;QRDBText 组件则从数据集合内的指定字段读取数据,报表编辑画面如下所示:
• 而Report Settings对话框的设定画面则如下所示:
21-2-1. 常用属性
属性
Paper size
Margins Other
Page frame Bands
说明
设定纸张的格式,可直接选择一般格式或是自订纸张大小, 其中Portrait设定为直印,而Landscape设定为横印。 设定内容显示于窗体上的边界。
PageNumber 以页数显示文件内容传递至打印机的进度。
21-2-1. 常用属性
• 除了上述属性设定外,还可就报表的输出格式进行设定。请先拖拉 QuickRep组件至窗体上,并在QuickRep组件内单按鼠标右键点选 【Report Settings】进行设定,操作方式如下图所示:
21-2-1. 常用属性
• 当设定好报表使用的带状类型后,还必须设定每个带状所要 显示的内容,而这些内容的显示亦必须透过其它Quick Report的显示组件来达成,就像一张空白的窗体必须加上 Label、Edit、Memo或是Image等组件才能显示其它数据,报 表程序最常使用到的组件不外乎QRLabel、QRDBText、 QRSysData等,每个组件同样可就显示位置、字型或颜色等 属性进行设定,部分组件的功能说明如下表所示。
类似Chart组件的作用,负责绘制长条图、饼图或是分布 图等统计图形至窗体上。
这些组件均位在组件样版中的QReport页次。
21-2. QuickRep组件
• 前一节中简单的介绍了报表的运作方式和C++ Builder提供的 报表相关组件,其中QuickRep组件用来表示整份报表,而其 它带状元件或显示组件皆置于QuickRep组件之上,由此可了 解QuickRep组件在报表程序中的重要性,而其提供的属性和 方法自然也直接影响到报表输出的方法和形式,因此,我们 独立一个小节来专门说明QuickRep组件。
属性 组件 QRDBEdit QRDBEdit QRDBEdit QRDBEdit QRDBEdit QRDBEdit QuickRep
Name
QRDBEdit1 QRDBEdit2 QRDBEdit3 QRDBEdit4 QRDBEdit5 QRDBEdit6 QuickRep1
DBGrid1
BCDEMOS -
TableName
employee.db -
Active
True -
DataSet
Table1
-
DataSource
DataSource1
21-3. 条列式报表程序
2. 新增一个窗体(窗体名称为Form2,程序代码为Report.cpp)并拖拉 QuickRep组件至该窗体中,接着双击该QuickRep组件就报表格式进 行设定。在设定对话框中我们勾取Title、Columnheader和 DetailBand三种带状格式选项,如下图所示。
21-2-2. 常用方法
• NewPage
– 强迫换页打印,若是你想在每 笔数据打印完后强迫换页,可 在TQRBand的AfterPrint或是 BeforeBand事件中加上 NewPage换行指令。
• NewColumn
– 和NewPage方法同样也是换 页的效果,不过却改以字段为 换页基准,也就是在换页的同 时亦会显示字段标头的内容, 底下以打印结果说明 NewColumn和NewPage方法 间的差异。
21-3. 条列式报表程序
• 在对报表组件稍有概念后,本小节将以实例操作的方式说明 如何制作一个条列式报表程序,而这类报表也是一般最常使 用到的打印方式。简单来说就是从数据集合内逐笔的读取数 据并显示在报表内。
• 【操作实例21-1】条列式报表程序
– 透过BDE连结方式读取employee.db范例数据表的内容,并产生对应 的报表程序。
相关文档
最新文档