非常着急的我问题,请教大家。(20分)

  • 主题发起人 主题发起人 delphiboy
  • 开始时间 开始时间
D

delphiboy

Unregistered / Unconfirmed
GUEST, unregistred user!
我在做一个报表动态生成系统,用的是DELPHI自己带的Qreport的一套控件,开始在窗体上面放quickrep,qrband,然后根据用户选择的条件动态创建qrlabel,qrdbtext等控件,然后用户使用时候会产生报表,并且用户可以预览报表,这个时候如果用户不满意,关闭了这个预览窗体,重新选择条件在次创建报表,这个时候我遇到问题了,
会报:list index out of bounds(14);这个错误
我想是不是刚才创建的qrlabel,qrdbtext必须释放掉,问题是怎么来释放呢》?
在preview之后释放
quickrep1.preview;
for i:=0 to fm.componentcount-1 do
begin
if fm.components is tqrlable then
fm.components.free ;
if fm.components is tqrdbtext then
fm.components.free ;
end;
没有用啊?请大家帮忙看看问题出在哪里了?
这样好象不可以啊?
 
是不是这个原因:
QRLaList:=TQRLabel.Create(Form);应该改成QRLaList:=TQRLabel.Create(Self);
每次报表用完后把TForm的实例Free掉就OK了。
如 with TForm.Create(Application) do
try
CreateReport; //动态创建控件
ShowModal;
finally
Release; //由于你在创建QRLabel等时指定Self为Owner,故在此时直接被Free掉
end;
 
你的错误提示不是没有释放资源的问题,
是访问越界了,
比如一个数组你定义到了A[0。。。3],
那么你访问A[4]就会出一个类试的错误提示,
当然具体的错误还是你找了!
 
后退
顶部