glob. Funktion um dyn. Komponente zu erstellen

McHorst

Grünschnabel
Servus allerseits...

Ich möchte eine dyn. Anzahl an Buttons mittels einer Funktion erzeugen.
Da die Funktion von mehreren Events aufgerufen werden soll, möcht ich sie global deklarieren:

z.B.:
void ButtonsErstellen() {
TButton *Test= new TButton(this);
(...)
}

'this' kann ich nicht verwenden, weil es nicht in einer Memberfunktion steht.
Was muss ich daran ändern?

Vielen Dank schon mal!
 

Turri

Erfahrenes Mitglied
Hallo,

Du kannst als Owner für den Button im Konstruktor "Form1" angeben... oder eben das Form wo der Button zu sehen sein soll.

MfG Turri
 

McHorst

Grünschnabel
Danke für die schnelle Antwort. Leider hab ich nicht viel Erfahrung mit Owner und so. Kannst du des ein bisschen ausfürhlicher erläutern, wo ich was als Owner von Form1 bezeichnen soll?

Mein kläglicher versuch sah so aus:

TButton *pButton(TForm1* Owner);

void ButtonErstellen() {
pButton = new TButton(this);
(...)
}
 

Turri

Erfahrenes Mitglied
Code:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

void ButtonErstellen()
{
    TButton* button = new TButton(Form1);
    button->Caption = "Neuer Button";
    button->Parent = Form1;
    button->Left = 200;
    button->Top = 50;
}

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    ButtonErstellen();
}
//---------------------------------------------------------------------------

Den Button1 hab ich mir nur so auf das Form gelegt zum testen.
Wenn dieser Button1 gedrückt wird, erscheint ein neuer Button.

MfG Turri