在线急等,打印问题,高手请进(100)

  • 主题发起人 主题发起人 火焰领主打伞
  • 开始时间 开始时间

火焰领主打伞

Unregistered / Unconfirmed
GUEST, unregistred user!
我做的是一个TQuickRep打印,在TQuickRep(TMStdRpt2)里type heyuan1 = array[0..2,0..18] of TQRLabel;里声明,在public heyuan : heyuan1;建立对象heyuan.在打印前定义了数组的各个属性,代码如下:procedure TMStdRpt2.QRBand1BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean);var top1 ,i,k:integer;begin top1 := 72; //qrband1.cl for k:= 1 to 10 do begin top1 := top1 +34; heyuan[1,k]:= TQRLabel.Create(MStdRpt2.QRBand1); heyuan[1,k].parent:= MStdRpt2.QRBand1;//重点在此句 heyuan[1,k].ParentReport :=MStdRpt2; MStdRpt2.heyuan[1,k].Caption := '111'; MStdRpt2.heyuan[1,k].Left := 120; MStdRpt2.heyuan[1,k].Top := top1; MStdRpt2.heyuan[1,k].Width := 20; MStdRpt2.heyuan[1,k].Height := 10; MStdRpt2.heyuan[1,k].Visible := true; MStdRpt2.heyuan[1,k].AutoSize := false; MStdRpt2.heyuan[1,k].BringToFront; //MSTDRPT2.heyuan[1,K]. end;end;运行程序,用PreView调用这个打印表的时候会报错:access violation at address 004E77F0 in module 'exp_server.exe'.'exp_server.exe'为我的执行程序。
 
还有的是QRBand1在添加heyuan(TQRLabel)数组前,我已经在上面拖了TQRLabel和TSHPAE控件,实现的效果就是把有规律的TQRLabel排布和赋值通过数组实现。
 
高手还没来,我这个实现的目的就是在QRBand1上添加一个TQRLabel数组并能显示出来。
 
那我低手发表一下意见,出在这种错误都是内存越界了.访问了不存在对像.最好去掉部分代码调试一下。另外,现在用 QuickReport 真的不多了。
 
好像打印的时候是不能动态创建组件了,建议更前创建,或另寻它法
 
问题解决了,呵呵,如下(栽的):把創建該標簽的過程不要寫在QRPreview事件中,改寫在OnBeforePrint事件中,即為:var lb:tqrlabel;procedure TForm2.QRBeforePrint(Sender: TCustomQuickRep;var PrintReport: Boolean);beginlb:=Tqrlabel.Create(self);lb.Parent:=QR.Bands.TitleBand;lb.Top:=10;lb.Left:=40;lb.Caption:='hello';lb.Show;end;100分全给manjel了,呵呵。
 
后退
顶部