label标签的释放(此问题是否觉得老土,不过也比较急!)(40分)

  • 主题发起人 主题发起人 圆月刀
  • 开始时间 开始时间

圆月刀

Unregistered / Unconfirmed
GUEST, unregistred user!
有如下程序:
var
lab:Tlabel;
begin
for i:=1 to 6do
begin
lab:=Tlabel.Create(self);
lab.Parent:=form1;
lab.Left:=i*2;
lab.top:=i*10
lab.Caption:=inttostr(i);
end;
end;
动态创建了6个标签,当我按下一个按钮时6个标签全部释放掉
请问程序该如何实现!
 
这个容易
var
i:integer;
lab:Tlabel;
begin
for i:=1 to 6do
begin
lab:=Tlabel.Create(self);
lab.Parent:=form1;
lab.Left:=i*2;
lab.top:=i*10;
lab.tag:=100+i;
//加上个标记
lab.Caption:=inttostr(i);
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
j:Integer;
begin
for j:=ComponentCount-1do
wnto 0do
if (Components[j] is TLabel)and(TLabel(Components[j]).Tag>100) then
Components[j].free;//把带标记的tlabel 释放
end;
 
menxing,你的反应好快,我自己也找到了一个方法

var
lab:array[1..6] of Tlabel;
在利用循环lab.create,lab.free;
但是我连续单击两次free按钮,程序会报错而你的却不会为什么!
 
他先判断再释放没问题,你释放了再释放当然不行了
 
呵呵,谢了
没创建怎么能释放,当然出错了
 
多人接受答案了。
 
后退
顶部