quick report 內存報錯問題!! (100分)

  • 主题发起人 主题发起人 kouchun
  • 开始时间 开始时间
K

kouchun

Unregistered / Unconfirmed
GUEST, unregistred user!
unit Unit1;
interface
uses Windows, SysUtils, Messages, Classes, Graphics, Controls,
StdCtrls, ExtCtrls, Forms, Quickrpt, QRCtrls;
type
TQuickReport1 = class(TQuickRep)
private
public
end;

var
QuickReport1: TQuickReport1;
implementation
{$R *.DFM}
end.

unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm2 = class(TForm)
QuickRep1: TQuickRep;
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;
implementation
{$R *.DFM}
end.

unit1 中的是獨立的一個quick report , unit2中的是在一張form 上放的一個quick report,現我要在第3張form 中分別動態創建unit1 和 unit2 ,代碼如下:
if NOT Assigned( QuickReport1) then
begin
Application.CreateForm( TQuickReport1, QuickReport1);
with QuickReport1do
begin
PreviewModal;
end;
freeAndNil( QuickReport1);
end;

if NOT Assigned( Form2) then
begin
Application.CreateForm( TForm2, Form2);
with Form2.QuickReport1do
begin
PreviewModal;
end;
freeAndNil( Form2 );
end;

1.) 第一種方法經常會出現內存報錯, 第2種卻很少出現....到底是什麼原因??
2.) Application.CreateForm( TForm2, Form2)
Form2 := TForm2.Create(self)
With TForm2.Create(self)do

這幾種create 方法本質上到底是不是一樣的,那個最安全?
3.) 還有quick report 是不是在線程上運行的??
 
肯定是你没控制好你的窗体!
建议把他们方到一个窗体里面
随便再窗体里方一个Panel、ScrollBox 等容器控件!
然后Quick Report控件方到里面
把容器控件的属性设置成False !
 
自頂一下!!
 
自己找到原因了,把 PreviewModal;改成 Preview 就很少出現報錯,但不知為什麼? PreviewModal 跟 Preview 不就是 show 跟 showmodal 的分別嗎?? 為什麼會容易出錯?? 真攪不懂....
 
如果你是自己创建的QUICKREPORT当然不能用PREVIEWMODEL,建议匀QUICKREPORT还是放到一个窗体FORM上,原来自己一直都用QUICKREPORT,但因为我一般要打印的字段都超过20个字段,所以没有动态创建了,本来瞒喜欢QUICKREPORT的,制作起来比较简单高效,但就是不能修改,还有双面打印只能倒着打,所以改用了FASTREPORT了,怀念呀。
 
但我不是在PREVIEW時報錯,而是在free時報錯....
但情況不是時常出現(不停的close 和 free,有時20,30次都沒出錯,有時一次就出錯),我想可能是quickrep的bug吧...
 
freeAndNil放到窗口结束事件里试试!!
 
如何才可以被免內存洩漏!!
 
一般来讲,Application.CreateForm( TForm2, Form2)更安全些。
但这种报错不是这个原因,是QR的版本有问题,我很早就碰到这个问题,升级QR的版本就行了。
--------------------------------------------------
AC Report
http://www.acreport.com
http://www.efile.com.cn/?syy_tfsky
 
多人接受答案了。
 

Similar threads

后退
顶部