Ich versuche zur Zeit durch einen Button-klick ein Panel mit einem weiteren Button darauf zu erstellen.
Das funktioniert soweit.
Problematisch ist, daß der zur Laufzeit erstellte Button das Panel und sich selbst wieder löschen soll.
Das endet bei mir leider in einem Fehler "..Exception-Klasse External..."
Ich kann mir vorstellen das es so nicht möglich ist das sich ein Button quasi selbst löscht, bezieungsweise das ja eigentlich über das Panel passiert
Wie kann ich das Problem aber lösen?
Gruß
Michael
Das ist mein Code (Auf der Oberfläche ist nur ein einfacher Button (Button1), der Rest wird zur Laufzeit erstellt.
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
ExtCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure LaufzeitButtonOnClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
// Panel und Button zur Laufzeit erstellen
procedure TForm1.Button1Click(Sender: TObject);
var
Panel : TPanel;
Button: TButton;
begin
// Panel zur Laufzeit erstellen
Panel:=TPanel.Create(Self);
Panel.Parent := Self;
Panel.Width := 300;
Panel.Left := 0;
Panel.Top := 0;
// Button auf Panel zu Laufzeit erstellen
Button := TButton.Create(Panel);
Button.Parent := Panel;
Button.Width := 100;
Button.Caption := 'Lösche Panel';
Button.OnClick := @LaufzeitButtonOnClick;
end;
// Panel und Button löschen
procedure TForm1.LaufzeitButtonOnClick(Sender: TObject);
begin
TButton(Sender).Owner.Free;
end;
end.