Einzelnen Beitrag anzeigen

Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#1

Dynamisch erstellte Buttons wieder Freigeben

  Alt 18. Mai 2005, 15:10
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<>'Samethen Btns[Index].Btn.Caption:=Cap;
    if App<>'Samethen 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;
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat