关于DELPHI删除动态创建的组件的语句问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 15:52:58
type
TForm1 = class(TForm)
Creatbtn: TButton;
RemoveBtn: TButton;
procedure CreatbtnClick(Sender: TObject);
procedure RemoveBtnClick(Sender: TObject);
private
IsLableCreated:Boolean;
Labels:array[0..2] of TLabel;
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
I: Integer;

implementation
{$R *.dfm}

procedure TForm1.CreatbtnClick(Sender: TObject);
begin
if not IsLableCreated then
begin
for I := 0 to 2 do
begin
Labels[I]:=TLabel.Create(Self);
with Labels[I] do
begin
Parent:=self;
Caption := 'Label ' + IntToStr(I);
Top := 175;
Width := 75;
Height :=75;
Left := I*Width +10;
end;
IsLableCreated := True;
end;
end;
end;
proced

//窗体中放一个ScrollBox,一个Edit,两个Button

var
lx :integer;//全局变量

procedure TForm1.FormCreate(Sender: TObject);
begin
lx := 0;//初始化全局变量
end;

//Button1的单击事件,用来创建Label,创建的Label的数目由edit1来决定
procedure TForm1.Button1Click(Sender: TObject);
var
i :integer;
begin
Button2.Click;//创建时先删除原来已创建的
for i := 1 to strtoint(edit1.Text) do
begin
with TLabel.Create(self) do
begin
Parent := ScrollBox1;
Left := lx;
lx := lx + Width + 10;
Caption := 'Label ' + inttostr(i);
end;
end;
end;

//Button2的单击事件用来释放删除已经创建的Label
procedure TForm1.Button2Click(Sender: TObject);
var
i :integer;
begin
for i := ScrollBox1.ControlCount - 1 downto 0 do
if ScrollBox1.Controls[i] is TLabel then
(ScrollBox1.Controls[i] as TLabel).Free;
lx := 0;
end;

应该很清楚了吧?不清楚再问吧

for I := 0 to 2 do
La