有关自定义Quick report的预览窗口的资源释放问题?(50分)

  • 主题发起人 主题发起人 sharkHun
  • 开始时间 开始时间
S

sharkHun

Unregistered / Unconfirmed
GUEST, unregistred user!
自己做了一个Quick report的预览窗口,上面有一个TQRpreview;
form名:FrmPrev
procedure TFrmPrev3.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
FrmPrev := nil;
//关闭时释放预览窗口资源
end;

报表的onpreview事件
begin
if not assigned(Form3) then
Form3 := Tform3.create(nil);
form3.QRPreview1.QRPrinter := QuickReport2.QRPrinter;
form3.Show;
end
完成后的预览窗口使用正常,但有一个问题:系统资源的消耗比较快,
不断点击预览按钮,再关闭,这样反复进行到10次时,系统资源下降了8%,
一直预览--关闭进行下去,很快就会出现out of resource的异常;
但一旦推出该程序,系统资源恢复到run该程序之前的值
我觉得在我的代码中只动态建立了一个预览窗口,并正确释放了它的资源,
代码并无问题呀,各位有劳帮忙分析看看, 谢了!!!
各位自己也可以试试!
 
在formClose的时候,使用caFree好像没有太大的用处——释放(free)。
不如在另外的地方显示的调用Destory。如:
TForm。Button1Click(Sener: TObject);
begin
TFrmPrev3(frm)。destory;
end;
 
关闭之前
form2.QRPreview1.QRPrinter.Free 试试
 
问题在这里:
....
报表的onpreview事件
begin
if not assigned(Form3) then
Form3 := Tform3.create(nil);
==> Form3 :=Tform3.create(self) ;
--------------------------------------------------------------
form3.QRPreview1.QRPrinter := QuickReport2.QRPrinter;
form3.Show;
end
......
 
1.Form3 := Tform3.create(nil);
==> Form3 :=Tform3.create(application) ;
2.//Action := caFree;
// FrmPrev := nil;
上面二行次序颠倒。
3.QuickReport2.QRPrinter=> TQRPrinter(Sender);
 
多人接受答案了。
 
后退
顶部