用Delphi自带的控件进行报表的制作

 

  Ⅰ.制作一个简单的报表

   在这一步,我们先看看如何制作一个仅包含有列标题和数据内容的报表(如表1):

   1.建立一个新的Form;字体设置为宋体五号,PrintScale属性设置为False;

   2.在该Form上放入两个QuickReport组中的TQRBand构件Band1,BandDetail;将其type属性设置为rbColumnHeading,rbDetail;

   3.放入一个TTtable构件Table1,设置其DataBase属性为DBDemos,TableName属性为Custermer,Active属性为Ture,再放入一个TDataSource构件DataSourcel,设置DataSet属性为Table1;

   4.在Band1上加入三个TQRLabel构件,将其Caption属性值分别设为公司名称电话传真;在BandDetail中加入三个TQRDBText构件,将其DataSource属性设为DataSourcel;DataField属性分别设为Company,Phone,Fax;

   5.加入一个QuickReport构件Report1,用右键单击,并选择Preview项,可预览报表,此时你可发现该报表仅显示当前一条记录,将TQuickReport构件DataSource属性设为DataSource1,再进行预览就可看到所有的记录均显示在报表中;

   6.至此报表已基本完成,可在程序中加入Form1.Report1.Priview;

   对该报表进行预览,加入Form1.Report1.Print;

打印该报表。

 

  Ⅱ.制作带有主从关系的复杂报表

   1.加入一个新的TTable构件Table2,设置其DataBase属性值为DBDemos,TableName为Orders,Active为Ture,设置MaserSource为DataSource1,建立主从关系为CustNo;增加DataSource2,设置其DataSet属性值为Table2;

   2.增加一个TQRBand构件Band3,设置其Type为rbSubDetail;

   3.在Band3中增加两个TQRLabel构件,设置其Caption分别为订单编号金额;相应在该TQRLabel构件后增加两个TQRDBText构件,设置其DataSource属性为Datasource2,DataField属性分别为Order,AmountPaid;

   4.增加一个TQRDetailLink构件QRDetailLink1,设置DataSource属性值为DataSource2,设置Master属性为Report1,DetailBand为Band3;

   5.主从关系报表即可完成,形式表2。

   Ⅲ.给报表增加页眉和页脚

   为了美观和方便,我们常希望能在报表每页的页眉或页脚中打印出页码、总页数、打印日期等等。在QuickReport中也提供了简便的方法:

   1.在该Form中再增加一个TQRBand构件Band4,将其Type属性设置为rbPageHeader,即可将Band4中的内容作为页眉打印出来;

   2.在Band4中加入TQRLabel构件,以在报表中每页显示文字;加入TQRSYSdata构件,设置其Data属性值,可在报表中显示页码、打印日期、打印时间、记录序号等等文档信息;

   3.如希望在每页中显示总页数,则必须写入下面几行程序:

   Report1.Prepare;

   Count:?QRPrinter.PageCount;

   QRLabell.Caption:?InttoStr(Conut);

   Report1.Cleanup;

   Report1.Preview;

   Ⅳ.为报表增加标题和封面

   我们希望在第一页上加上标题或给报表加上封面,在使用QuickReport制作报表时,也是很简单的。在报表中增加一个TQRBand构件,将其属性设为rbTitle,在Band5中所加的文字和图形,均在第一页中打印出来。当用于封面时,可在该Band的AfterPrint事件中加入Report1.NewPage,即可。

   Ⅴ.为报表增加表格线

   可以使报表看起来更为清晰明朗。在QuickReport中提供了两种方法:一是使用TQuickReport和TQRBand构件的Frame属性;二是直接使用TQRSharp构件。

   使用TQuickReport和TQRBand构件的Frame属性的优点是设置简单,不需要写程序代码;缺点就是不能随意修改其位置和大小。使用TQRSharp则恰恰相反。而且在其所属Band的AfterPrint事件中可自由修改其位置、线型、粗细等参数。

   Ⅵ.制作一个自己的Priview窗口

   QuickReport提供了一个缺省的Preview窗口,在TQuickReport构件上单击右键选择Preview显示报表时使用的也是该Preview窗口。但由于该Preview窗口是英文版,当我们需要显示的是中文时,就需要制作一个自己的Preview窗口,其方法简单叙述如下:

   1.建一个新Form:Form2;

   2.在其上加入一个TQRPreview构件;

   3.增加几个Tbutton构件,使用其OnClick事件调用该TQRPreview构件的ZoomtoFit方法,ZoomToWidth方法或修改PageNumber和Zoom属性值即可自由调整TQRPreview构件中所显示报表的显示状态;

   4.为了能在程序中调用Preview方法时显示的是自己的Preview屏幕,还须在程序的主单元中写入下面的代码:

   QRPrinter.OnPreview:?OnPreview

   ProcedureTMyMainForm.OnPreview;

   begin

   Form2.ShowModal;

   end;

   5.至此你便拥有了自己的Preview屏幕。

   值得注意的是此屏幕只能在程序执行的过程中显示。

   综上所述,使用QuickReportforDelphi制作报表主要是通过将包含打印内容的构件TQRLabel、TQRDBText、TQRCacl、TQRSysData、TQRSharpTQRMemo等等放置在相应的TQRBand上,并设置TQRBand构件的Type属性以确定该Band打印位置,从而实现页眉、页脚、标题、水印、表格线等报表的特殊效果,并可使用TQRDetailLink、TQRGroup等辅助构件给Band间建立连接关系及对数据内容进行分组,以实现明细表、数据分类等特殊的报表要求。