中易网

如何制作报表

答案:2  悬赏:30  
解决时间 2021-10-19 07:20
  • 提问者网友:蓝琪梦莎
  • 2021-10-19 01:54
如何制作报表
最佳答案
  • 二级知识专家网友:渡鹤影
  • 2021-10-19 02:07
制什么报表呀
全部回答
  • 1楼网友:怙棘
  • 2021-10-19 02:34
Borland Delphi是当今优秀的Windows可视化开发工具之一,今年5月份推出的Delphi3是一个真正的32位开发平台,比Delphi 2增加了不少定制控件。Delphi 3没有捆绑ReportSmit h报表制作工具,但同时增加了Qreport组中报表制作控件的功能,使制作报表更加方便灵活。在Delphi 3中除了可以采用Qreport组中报表制作控件来制作报表外,还可利用打印机画布直接向打印机输出报表。下面将详细介绍这两种方法。 用打印机画布制作报表 Delphi引进了画布的概念,使向打印机输出和向屏幕的输出具有相同的方法,直接向打印机的画布输出线条和字符串,即可制作出任意规格的报表。 首先,把支持打印机的Printers单元手工加到uses域里,然后在打印事件中调用Tprinte r对象来制作报表。下面我们来看一个实际例子。假设在当前Form1上有一按钮名为Print-r ep;在Dialogs控件组选取一PrintDialog控件加到Form1中,命名为printdg1;在Additional控件组中选取一StringGrid控件加到Form1中,命名为temsgrid1,设其网格为10行10列,并假设已完成了在temsgrid1控件中显示一10行10列的数据库表数据的准备工作,然后在Print—re pClick事件中打印报表。程序示例如下: procedure TForm1.Print-repClick(Sender:Tobject); var I,j,cp,ph,pw,w,h:integer; beginif printdg1.Execute then //打开打印对话框 begin for cp:=1 to printdg1.copies do //打印份数 begin with printer do begin orientation:=poPortrait; //设置纵向打印方式 title:=‘打印报表例子’;//打印任务标题 pw:=pagewidth;//获得当前设置的打印纸页宽 ph:=pageheight; //获得当前设置的打印纸页高 h:=2104; w:=1488; begindoc;//开始打印 //下面画表格,先画11条横线 for I:=1 to 11 do begin canvas.moveto(100*pw div w,I*100*ph div h); canvas.lineto(1100*pw div w,I*100*ph div h); end; //再画11条竖线 for I:=1 to 11 do begin canvas.moveto(I*100*pw div w,100*phdiv h); canvas.lineto(I*100*pw div w,1100*ph div h); end; //填上数据 for j:=1 to 10 do for I:=1 to 10 do canvas.textout((100*I+10)*pwdiv w,(100*j+10)*ph div h,temsgrid1.cells[I -1,j-1]); enddoc;//结束打印end; end; end; end; 在上面程序中,先打开打印对话框,然后再设置打印方向、打印标题并获取当前打印纸的宽高点数。在程序中,为了使在不同打印分辨率中有相同的打印外观,我们以180×180分辨率的 A4纸点数2104×1488做为基准换算打印坐标。Printer.Canvas.Moveto(x,y)用于移动打印机画布坐标到(x,y)处;Printer.Canvas.Lineto(x,y)用于从画布当前坐标处画一直线至( x,y);Printer.Canvas.Textout(x,y,Text)用于在画布的坐标(x,y)处以当前字体输出字符串 Text。为了使报表更加美观和生动,可以设置打印机画布的字体、大小,还可以插入图片等。 用Qreport组控件制作报表 QuickReport是Quick Soft Development公司专为Delphi设计的用于制作报表的工具。 Delphi 3中Qreport组控件十分丰富,只要很好地利用这些控件就能制作出效果不错的报表来。 1.建立一个报表 (1)首先我们在Form2上放置一TQuickRep控件,TQuickRep控件是建立一报表必不可少的控件。可以改变该控件的属性设置,以使其外观符合要求。在缺省情况下,TQuickRep控件的尺寸为放置在窗口上的尺寸,TQuickRep控件根据当前控件的尺寸来自动设置数据区的范围。 改变TQuickRep控件外观最简单的方法是:在TQuickRep控件内单击鼠标右键,在弹出菜单中选择Report Settings项来打开设置窗口。 (2)设置数据。把TQRBand控件放到TQuickRep控件上,并把BandType属性设为rbTitle,缺省情况下Align属性是a1Top。然后把TQRLabel控件放到TQRBand控件上,修改它的Caption属性,作为报表的标题。 (3)把数据放到报表上。首先再将一个TQRBand控件放到TQuickRep控件上,并把BandTyp e属性设为rbDetail,然后把一个Ttable控件(名为Table1)放到From2上,设置它的DataBaseN ame属性和TableName属性,并把Ttable控件的Active属性设为True。与Delphi2不同的是,De lphi3中TQuickRep控件没有DataSource属性而以DataSet属性来代替,因此设置TQuickRep控件的DataSet属性值为Table1。 (4)把一个TQRDBText控件放到第二个TQRBand控件上,设置它的DataSet属性值为Table1 ,设置DataField属性为要显示的字段。 到此,就可在TQuickRep内单击鼠标右键,在弹出菜单中选择Review项来预览报表。 2.预览及打印报表 在运行期间也可以调用TQuickRep的Preview方法来预览报表,在预览窗口中可单击打印按钮来打印报表,但也可直接调用TQuickRep的Print方法来打印报表。 3.给报表的数据画上网格 在省缺情况下,报表的数据周围是没有网格的。我们可以给数据周围加上网格,使其看起来更像一个表格,方法是设置TQRBand控件的高度与TQRDBText高度控件相同,将所有的TQRDB Text控件的AutoSize属性设为False,并将它们首尾相连,然后将每一个TQRDBText控件的Fra me的子属性DrawBottom、DrawLeft、DrawRight、DrawTop设为True,子属性Style设为poSol id。这样即可加上网格线。 Qreport控件组共有16种报表制作工作,以上只是一个粗略的介绍,不能尽述其强大的功能。在具体应用中,用户可以通过加载其它报表制作控件设计出有个性的报表来。 两种方法的比较 以上两种制作报表的方法各有千秋。用Qreport组控件来制作报表的方法比较简单,但是当报表较多时,用此方法显得较笨拙,并且使编译后的可执行文件急剧增大。用打印机画布制作报表的方法比较繁重,必须根据实际的报表来设计每一条线的起止坐标,算好每个坐标点的值,但当报表较多时,用此方法显得较灵活,并且使编译后的可执行文件的代码量增加不多,因此在这种情况下建议选用此方法
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息