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
Findcomponent kannst Du den Button wieder finden und damit arbeiten.