Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Button zur Laufzeit erzeugt und wenn Click, dann Form erzeug (https://www.delphipraxis.net/23324-button-zur-laufzeit-erzeugt-und-wenn-click-dann-form-erzeug.html)

Christian18 1. Jun 2004 14:23


Button zur Laufzeit erzeugt und wenn Click, dann Form erzeug
 
Hallo,

ich habe mal eine Frage, ich wollte eine form zur laufzeit erzeugen. der button der diese form erzeugen soll, der ist auch schon zu laufzeit erzeugt. wie mache ich das??? ich hatte schon einmal angefangen.

Delphi-Quellcode:
procedure TFFormulare.Button1Click(Sender: TObject);
  var Button : TButton;
      Form  : TForm;
begin
  Button:=TButton.Create(self);
  Button.Top:=100;
  Button.Left:=200;
  Button.Parent:=FFormulare;

  if Button.OnClick then begin
  Form:=TForm.Create(self);
  Form.Width:=100;
  Form.Height:=100;
  Form.ShowModal;
  end;
end;
der fehler kommt

[Fehler] UFormulare.pas(70): Nicht genügend wirkliche Parameter

Steve 1. Jun 2004 15:16

Re: Button zur Laufzeit erzeugt und wenn Click, dann Form er
 
Delphi-Quellcode:
{...}
  TYPE
    TMyButton = Class(TButton)
      PROCEDURE BtnClick(Sender: TObject); // TNotifyEvent
  END;
{...}

implementation

procedure TForm1.Button1Click(Sender: TObject);
var
  btn : TMyButton;
begin
  btn       := TMyButton.Create(Self);
  btn.Parent := Self;
  btn.Left  := 10; // Beispiel-
  btn.Top   := 10; // Werte...
  btn.OnClick := btn.BtnClick; // Ereignisbehandlung zuweisen!
end;

procedure TMyButton.BtnClick(Sender: TObject); // Ereignisbehandlung
var
  form : TForm;
begin
  form := TForm.Create(Application);
  form.ShowModal;
  form.Free;
end;
Jetzt wird halt durch den Button-Klick ein neuer Button erzeugt (zur Laufzeit, wie gewünscht -g-), dessen OnClick-Behandlung wiederum erzeugt ein modales Fenster :)
edit: achja, am ende noch irgendwo btn freigeben (free).. :zwinker:

Gruß
Stephan

keine garantie für gar nix :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz