各位,来帮帮我呀!关于QuickRep的问题(50分)

  • 主题发起人 主题发起人 ymf
  • 开始时间 开始时间
Y

ymf

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了两个报表,第一次打印预览时正常,第二次时出错,现在分别将两个报表的程序贴出来:
第一个报表:
adoquery1.Open;
QuickRep1.Prepare;
CountPage:=QuickRep1.QRPrinter.PageCount;
QRLabel7.Caption:='总页数:'+inttostr(CountPage);
QuickRep1.Preview;//第二次进行到这里时出错 出错信息: Canvasdo
es not allow drawing
第二个报表:
adoquery1.Open;
QuickRep1.Prepare;//这二次进行到这里出错 出错信息:Out Of system resources
CountPage:=QuickRep1.QRPrinter.PageCount;
QRLabel7.Caption:='总页数:'+inttostr(CountPage);
QuickRep1.Preview;
Delph6+QuickReport3.6
 
快来人呀!!
 
每次把QuickRep1释放调,再创建试试
 
Prepare 过程其它就相当于一个打印的过程,只是没输出到打印机,
所以建议你将adoquery1.Open;一句放到QuickReport的BeforePrint事件里,
并且在QuickReport.AfterPrint事件里将它关闭,
另外将其它资源释放,
如果你的报表是动态创建的,别忘了Free;
 
to svw0506 不行呀,还是老问题,动态创建报表的怎么弄?
 
动态的话,在Tquickreport的before print里open query。
然后在Tband的on needdata 里写手动添加数据的代码:
qlabel.text=query.field.asstring;
……
一直循环到query.eof,这个事件里有个boolean变量可以控制循环的结束。
最后print。
写得乱,原理就是这样。
 
henryczh
这样做太麻烦了,我的程序要改好多地方。

到底这个错误是怎么引起了呢,如何解决呀?忘各位帮我!!!
我只是想得到报表的总页数,有其它更好的解决办法吗?
 
可能还是你第一次打印后没对象的资源没释放,所以第二次赋值的时候出错了。
Example:
begin
MyReport.Prepare;
try
……
finally
MyReport.QRPrinter.Free;
end;
MyReport.QRPrinter := nil;
end;
 
to henryczh
还是一样 的问题
 
with QuickRep1.Create(Application)do
try
adoquery1.Open;
Prepare;
CountPage:=QRPrinter.PageCount;
QRLabel7.Caption:='总页数:'+inttostr(CountPage);
PreviewModal;//改为模态显示
finally
Free;
end;
 
谢谢各位,搞 定 收 工!!
 
后退
顶部