Einzelnen Beitrag anzeigen

Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#7

Re: dynamisches Erstellen von Oberfläche und Speicherung in

  Alt 19. Jan 2004, 08:42
Zitat von Berndd:
Habe mich nun auch mit dem dynamischen Erstellen von Komponenten befasst.
Kann schon die Buttons in der Laufzeit erstellen. Bekomme es aber leider absolut nicht hin, diese anzusprechen(/ihnen OnClick ereignisse zuzuweisen) oder sie auf die TabControls Komponente zu bringen.
...
Das is schon das nächste Problem, die TabControls Komponente. Wie kann ich bei dieser in der Laufzeit neue Tabs/Reiter erstellen, den einzelnen Tabs Namen zuweisen und die Buttons gleichzeitig drauf platzieren.
Du erstellst eine Methode auf dem Formular:
Delphi-Quellcode:
procedure TForm1.DynButtonClick(sender: TObject);
begin
   if sender is TButton then
   begin
      // hier die Methodik - z.B. Button erkennen
   end;
end;
Beim erstellen der Buttons machst Du ja sowas wie:
Delphi-Quellcode:
var
   myVar: TButton;
begin
   myVar := TButton.Create(self);
   myVar.Parent := TTabPage1; // der 'Parent' ist die TabPage, auf der der Button erscheinen soll
   myVar.OnClick := DynButtonClick; // hier die OnClick - Methode.
   myVar.Name := 'Button'; // anhand des Namens kannst Du oben in der OnClick - Methode den Button identifizieren: ( TButton(sender).Name )
end;
Der Code ist freilich nicht getestet, sollte aber den Ablauf prinzipiell erklären. Die Methode wird übrigens für _jeden_ Button zugewiesen, d.H. Du musst tatsächlich über den Sender herausfinden, welcher Button gedrückt wurde.

Ich würde in Deinem Fall empfehlen, den Button eine Konstante und eine durchlaufende Nummer zu geben. Mit Hier im Forum suchenFindcomponent kannst Du den Button wieder finden und damit arbeiten.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat