procedure TmainFormPrintBtnClick(Sender : TObject) begin repForm.Qrep1.Print; end; 2.HeadBand1、DetailBand1及ChildBand1的BeforePrint事件 procedure TrepForm.HeadBand1BeforePrint(Sender : TQRCustomBand; Var PrintBand : Boolean) Begin Shape1.Height:=HeadBand1.Height; Shape2.Height:=HeadBand1.Height; Shape3.Height:=HeadBand1.Height; End;
procedure TrepForm.DetailBand1BeforePrint(Sender : TQRCustomBand; Var PrintBand : Boolean) begin PrintBand:=bh$#@60; $#@62;Query1[‘dlbh’]; if PrintBand then begin bh:=Query1[‘dlbh’]; Shape4.Height:=DetailBand1.Height; Shape5.Height:=DetailBand1.Height; Shape6.Height:=DetailBand1.Height; end end;
procedure TrepForm.ChildBand1BeforePrint(Sender : TQRCustomBand; Var PrintBand : Boolean) Begin Shape7.Height:=ChildBand1.Height; Shape8.Height:=ChildBand1.Height; Shape9.Height:=ChildBand1.Height; End; bh应在变量定义部分定义: Var bh : shortint=0; 几个TQRShape部件的高度(Height)与所在TQRBand 部件保持一致,使竖线打印得整洁。假如在设计阶段调整了TQRBand部件的高度,也不会出现竖线断线或过长的情况。 在DetailBand1的BeforePrint事件中用PrintBand进行控制,可使每个设备大类名称只需打印一次,而不是每个型号都对应打印一次大类名称。因为dlbh字段的值都大于0,bh初值设为0使它与任一记录的dlbh字段的值都不同,以确保第一个大类名称被打印。这样就生成了一个从多个数据表中提取数据,并带有表格线的数据报表。 注:本例工程文件为sbgl.dpr,原程序文件为main.pas和sbrep.pas,若要测试请将dlbmk.dbf、sbxhk.dbf、bmsbk.dbf三个文件放在d:/sb目录下。