急急急!有关报表显示出错的问题(附源程序) 300分 (200分)

  • 主题发起人 主题发起人 ably
  • 开始时间 开始时间
A

ably

Unregistered / Unconfirmed
GUEST, unregistred user!
DELPHI4.0 当多次预览报表(quickrep)时(如15次),出现如下错误
metafile is not valid
canvasdo
es not allow drawing
out of system resources
需退出软件后再进入,则预览9次出错,以后逐次减少
有时错误造成需重新启动计算机,才可预览,救救这个可怜的程序吧!!!
附∶预览程序
with TwtPrvform.Create(Application)do
begin
wtQRPreview.QRPrinter := TQRPrinter(Sender);
CurRep := quickrep1;
Show;
end;
调用程序
with Trptform.create(self)do
begin
QuickRep1.print;
QuickRep1.Free;
free;
end;
 
从报错看,肯定是资源没有释放。
我怀疑这句有问题:
wtQRPreview.QRPrinter := TQRPrinter(Sender);
是不是应该是这样呢:
wtQRPreview.QRPrinter := TQRPrinter.create(Sender);
若真是这样的话,用完后要wtQRPreview.QRPrinter.free。
 
对不起,问题中 不是Quickrep.print 而是quickrep.preview
我曾用这个程序实验了delphi4.0中demo中的quickrep,预览100次不会出错
我想是否是读取数据库的错或其他什么错,也许不在这个程序上
但这个不定时的错误实在太难判断在哪里,请高手指点,我再追加100分
 
我的做法如下,从不出错:
SPREVIEW是预览窗体。报表QUICKREP放在一窗体(SFORM)上。
在QUICKREP的ONPREVIEW中加入:
SPREVIEW.PREVIEW.QRPRINTER:=QUICKREP.QRPRINTER;
SPREVIEW.SHOWMODAL;
调用:
APPLICATION.CREATEFORM(TSFORM,SFORM);
SFORM.QUICKREP.PREVIEW;
SFORM.RELEASE;
 
升级您的TQuickRep控件,很可能是他的BUG
 
这肯定是tquickrep的bug
我也遇到过!建议拿d5的tquickrep!
 
wtQRPreview.QRPrinter := TQRPrinter(Sender);
这句话没有问题;问题出在报表预览(Preview)或者打印(Print)完毕后,
没有手工去释放报表临时资源文件,手工释放临时资源文件的方法
是:wtQRPreview.QRPrinter.Free[这句话非常重要]
可怜的ably,你的系统临时文件目录[Temp]下可能有非常多的
QRxxx.Tmp文件,这样下去你的硬盘都要爆掉[也就是说可用空间越来越少],
若没有足够的可用空间,那么你的报表浏览能不出错吗?
而系统的标准Preview,它在关闭预览后都会自动释放(删除)报表
临时资源文件,所以不会出现类似的错误
OK,快去试一把,问题解决后不要忘了给我加分哦^_^
 
delphi5.0 report 3.07一样有问题!!!!!
 
该问题,QuickReport已经承认是一个Bug,
在Preview后加一句:Application.ProcessMessage便能简单的解决这个问题。
QuickReport毕竟是第三方控件,和Delphi的结合有些差异。
 
建议修改调用程序,增加异常检测功能:
调用程序
with Trptform.create(self)do
//好像(nil)也可以!
begin
try
QuickRep1.print;
finally
QuickRep1.Free;//干吗要用这一句?把表单释放了,那画布还会存在!?
free;
end;

end;
 
多人接受答案了。
 
后退
顶部