有关QUICK REPORT报表预览的资源释放问题! 200大样 (200分)

L

lhweast

Unregistered / Unconfirmed
GUEST, unregistred user!
我在使用QUICK REPORT做报表时遇到这样的一个问题:
即我要将报表内容转换成BMP文件,源码如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
// 预览报表
quickrep1.Prepare ;
{如果这里写QUICKREP1。PREVIEW,也是一样}
end;
procedure TForm1.Button2Click(Sender: TObject);
var // 转换成BMP
e: TMetaFile;
B: TBitmap;
begin
try
e := quickrep1.QRPrinter.GetPage(1);
B := TBitmap.Create ;
with TMetafileCanvas.Create(E, 0)do
try
B.Height := E.Height;
B.Width := E.Width;
B.Canvas.Draw(0, 0, E);
B.SaveToFile('C:/B.bmp');
finally
Free;
end;
finally
B.Free;
end;
end;
开始运行一两次是没有问题,可是如果一直重复运行(人为的按BUTTON1,再按BUTTON2)时,运行几次后就会提示出错信息“OUT OF SYSTEM RESOURCE”,
不知何缘故,我猜可能是使用PREPARE没有释放资源,可是,如果我换成PREVIEW后,就预览一次,转换一次,然后关闭预览窗口,如果重复多次也是出同
样的提示信息。我还试过使用QUICKREP1。QPRINTER。CLEAR和QUICKREP1。DESTORY等来释放资源,可是问题依旧!
各位兄弟,帮帮我吧! 虽然分不是很多,但如果解决问题,我还可以附加更多的分给你!
我最主要的目的是:将系统自动将报表文件成批的转换成BMP图形,一次性可能上千张,最好是不要出现预览窗口,因为在转换的过程当中,是让系统自动转换。
 
用ehlib输出报表试试。
 
哪里可以下载?你那有吗?
它那可不可以支持不预览(或不出现预览窗口)就可以输出到BMP文件?
我试过FASTPORT,它也是同样要先预览才能输出到BMP文件的!
 
不好意思,我没有试过它可不可以支持不预览(或不出现预览窗口)就可以输出到BMP文件。这样吧,你用的D几?我把它给你发过来你自己试试如何?
 
我用的是D6,
我的信箱是AWENXM@EYOU.COM,
先谢谢你了。
 
已发,请收查.
 
这应该实
 
好像是你的邮箱收不到.附件有2M.你有没有MSN?
 
那就LIUHW@PENAVICOXM.COM
 
可能实quickreport的bug
恐怕你要将quickreport里的所有控件都FREE一下
我以前也碰到过,不过没有这么频繁的操作,是他们测试的人发现的
呵呵,
 
jerryzhu, 那你们后来怎么处理这个问题的?
 
稍微修改一下:
procedure TForm1.Button2Click(Sender: TObject);
var // 转换成BMP
e: TMetaFile;
B: TBitmap;
begin
try
Button2.Enable:=False;
e := quickrep1.QRPrinter.GetPage(1);
B := TBitmap.Create ;
with TMetafileCanvas.Create(E, 0)do
try
B.Height := E.Height;
B.Width := E.Width;
B.Canvas.Draw(0, 0, E);
B.SaveToFile('C:/B.bmp');
finally
Free;
end;
finally
B.Free;
Button2.Enable:=True;
end;
end;
 
收到没有?
 
chnplzh,哦,我忘了说,其实不是BUTTON2过程的问题,主要问题是出在BUTTON1上面,
我在BUTTON1里写这样的代码:
procedure TForm1.Button1Click(Sender: TObject);
begin
// 预览报表
quickrep1.Prepare ;
{如果这里写QUICKREP1。PREVIEW,也是一样}
QUICKREP1.DESTORY;{这句话好象不起作用}
end;
我重复按BUTTON1,按了20来次后就出问题了“OUT OF SYSTEM RESOURSE”问题。
如果上用PREVIEW方法,没按一次,就弹出预览窗口,关闭窗口后再按BUTTON1,重复10来次问题就出现了。
 
还是没有收到,两个信箱都没有用,
要不麻烦你再发到LHWEAST@SOHU.COM;LHW_ARCHIE@163.NET里去了, 谢谢你了,
这是我最后一个信箱了.
msn我没有去申请。
 
上面如果不能Destroy或Free,那就麻烦了.
 
放弃QUICK REPORT做报表,是个快捷且有效的方法。
 
我又发了一次,如果还不行的话,你到网上找找吧,应该不难找到的。我的是一个同事给我的。
 
只要能达到目的,随便用哪个都行,
邮件已经收到, 我试试!如果能用,就给你SCORE
 
不能用FREE,如果用FREE,那按第二次BUTTON1的时候就会报错!
 
顶部