for i:=1 to n do begin edit:=tedit.create(self); edit.Width:=40; edit.parent:=form1; end;
晕,你这样创建的EDIT有什么用,而且你这样创建叫WINDOWS如何找句柄,不报错就不错了
如果是很多的话,最好用数组来创建与释放 参考: 先声明一个Edit数组,可以是静态的也可以是动态的比如 AEdit: array of TEdit; //创建 Count := 10; SetLength(AEdit,Count+1); for i:=1 to Count do begin EditName := 'Edit' + IntToStr(i); AEdit[i] := TEdit.Create(Self); AEdit[i].Parent := Self; if i = 1 then begin AEdit[i].Top := Top; end else if i > 1 then begin AEdit[i].Top := Top + 10; end; AEdit[i].Left := 405; AEdit[i].Width := 100; AEdit[i].Height := 14; AEdit[i].AutoSize := False; AEdit[i].Name := EditName; AEdit[i].OnKeyDown := EditKeyDown; //释放 for i:=1 to Count do begin EditName := 'Edit' + IntToStr(i); if assigned(TEdit(FindComponent(EditName)) then begin (FindComponent(EditName) as TEdit).Free; (FindComponent(EditName) as TEdit) := nil; end; end; AEdit := nil; ----------------
你事先给控件命名 for i:=1 to n do begin edit:=tedit.create(self); edit.Width:=40; edit.parent:=form1; edit.name:=xxxxx; end;需要释放时 for i:=0 to frmMain.ComponentCount-1 do begin if (frmMain.Components[i] is Tedit) then if (frmMain.Components[i] as Tedit).name=xxxxxx then
begin
edit:=tedit.create(self);
edit.Width:=40;
edit.parent:=form1;
end;
参考:
先声明一个Edit数组,可以是静态的也可以是动态的比如 AEdit: array of TEdit;
//创建
Count := 10;
SetLength(AEdit,Count+1);
for i:=1 to Count do
begin
EditName := 'Edit' + IntToStr(i);
AEdit[i] := TEdit.Create(Self);
AEdit[i].Parent := Self;
if i = 1 then
begin
AEdit[i].Top := Top;
end
else if i > 1 then
begin
AEdit[i].Top := Top + 10;
end;
AEdit[i].Left := 405;
AEdit[i].Width := 100;
AEdit[i].Height := 14;
AEdit[i].AutoSize := False;
AEdit[i].Name := EditName;
AEdit[i].OnKeyDown := EditKeyDown;
//释放
for i:=1 to Count do
begin
EditName := 'Edit' + IntToStr(i);
if assigned(TEdit(FindComponent(EditName)) then
begin
(FindComponent(EditName) as TEdit).Free;
(FindComponent(EditName) as TEdit) := nil;
end;
end;
AEdit := nil;
----------------
for i:=1 to n do
begin
edit:=tedit.create(self);
edit.Width:=40;
edit.parent:=form1;
edit.name:=xxxxx;
end;需要释放时
for i:=0 to frmMain.ComponentCount-1 do
begin
if (frmMain.Components[i] is Tedit) then
if (frmMain.Components[i] as Tedit).name=xxxxxx then
frmMain.Components[i].free;end;