我定义了一个数组
private
Info:array [0..27,0..17] of TQRLabel;
然后在formcreat中创建
info[i,j]:=TQRLabel.Create(self);
但我第二次调用时,它还保留的上次的信息(窗体关闭时没有释放)
请问要怎样释放阿?
private
Info:array [0..27,0..17] of TQRLabel;
然后在formcreat中创建
info[i,j]:=TQRLabel.Create(self);
但我第二次调用时,它还保留的上次的信息(窗体关闭时没有释放)
请问要怎样释放阿?
try
for i:=0 to 数组的最大个数 do
begin
if self.Components[i] is TQRLabel then
TQRLabel(self.Components[i]).Free;
end;
Except
exit;
end;或者
for I := 1 to 27 do
begin
for j:=0 to 17 do
info[i,j].Parent:=nil;
info[i,j].Free;
end;前面一个不知道行不行,但后面一个可以的,亲测过的。
========================
这句静态的数组可以这样写吗?动态对那样写吧
你是在formcreat中创建 那再一次运行时 又重新创建了才对 怎么会保留上次的记录呢
或者你用的是非模态窗体 关闭只是隐藏起来 而不是销毁 下次打开的时候并没有重新创建 所以保留了上次的记录
for i:= Low(Info) to High(Info) do
if (Info[i] <> nil) then TQRLabel(Info[i]).Free;
info[i,j]:=TQRLabel.Create(self);
改到FormShow里面
info[i,j]:=TQRLabel.Create(self);
在FormClose中加下
for I := 1 to 27 do
for j:=0 to 17 do
info[i,j].Free;
所以在窗体没有Destroy,是不会释放的
你可以在需要显示前分配内存,把前一次释放掉