Frage zum TForm Konstruktor



  • Hi,

    normalerweise schreibe ich meine 1. Funktion immer in den
    Konstruktor vom TForm.

    Jedoch kommt mir das irgendwie falsch vor.

    Kann man nicht so ne Art Main Funktion erstellen
    die erst dann aufgerufen wird wenn der Form Konstruktor
    komplett durch ist?

    Also nicht:

    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
       (...)
    
    Form1->MeineFuntion();
    
    }
    

    Denn das führt manschmal zu Fehlern wenn das Form und seine Komponenten
    noch nicht vollstämdig aufgebaut sind.

    Für gewöhnlich hab ich da immer einen Timer genommen der etwas wartet,
    nur irgendwie ist das ein wenig umständlich.

    Gruß
    Jeg



  • Hallo

    Der Konstruktor ist dazu da um die Instanz aufzubauen. Dabei werden alle Konstruktoren der abgeleiteten Klassen vorher aufgerufen. Daraus folgt das bei TForm1 bereits TForm aufgerufen wurde, wo alle IDE-Komponenten bereits erstellt wurden. Es gibt keine Methode "Nach dem Konstruktor". (OnCreate sollte nie benutzt werden).
    Der Konstruktor ist natürlich nicht gleichzusetzen mit dem Anzeigen der Form. Das passiert erst nach dem Aufruf von Show(), und dafür gibt es das OnShow-Ereignis.

    bis bald
    akari


Anmelden zum Antworten