Hi
ich erstelle ein paar Buttons Dynamisch.
erst mal was code:
Delphi-Quellcode:
TBtn = record
Btn: TButton;
App: String;
end;
TForm_Main = class(TForm)
public
Btns: array of TBtn;
Count: Integer;
procedure AddBtn(Cap, App: String);
procedure ChangeBtn(Index: Integer; Cap, App: String);
procedure DelLastBtn;
end;
Delphi-Quellcode:
procedure TForm_Main.AddBtn(Cap, App:
String);
begin
Inc(Count);
SetLength(Btns,Count);
with Btns[Count-1]
do
begin
Btn:=TButton.Create(Form_Main);
Btn.
Name:='
Btn_'+IntToStr(Count);
Btn.Caption:=Cap;
Btn.Parent:=Form_Main.Grp_Prog;
Btn.Show;
Btn.Left:=8;
Btn.Height:=25;
Btn.Width:=122;
Btn.Top:=24+(Count-1)*33;
Btn.Tag:=Count;
Btn.OnClick:=BtnClick;
end;
end;
procedure TForm_Main.ChangeBtn(
Index: Integer; Cap, App:
String);
begin
if Index<Count
then
begin
if Cap<>'
Same'
then Btns[
Index].Btn.Caption:=Cap;
if App<>'
Same'
then Btns[
Index].App:=App;
end;
end;
procedure TForm_Main.DelLastBtn;
begin
Btns[Count].Btn.Free;
//<-- Fehler!!!
Btns[Count].App:='
';
Dec(Count);
SetLength(Btns,Count);
end;
So, alles klappt soweit, die Buttons werden wie gewünscht erstellt, angezeigt und geändert.
nun klappt aber das löschen nicht.
muss ich irgendwie den button in der groupbox wieder austragen?
Edit: Achso, folgendes funzt:
Delphi-Quellcode:
procedure TForm_Main.FormClose(Sender: TObject; var Action: TCloseAction);
var i:Integer;
begin
for i:=0 to Count-1 do Btns[i].Btn.Free;
SetLength(Btns,0);
end;