Fenster zur laufzeit erstellen.



  • hmm, es gab hier mal einen Thread, bei dem es darum ging, ein Fenster während der Laufzeit zu erstellen, doch leider funzt die interne Suchfunktion immer noch nicht recht, bei mir jedenfalls nicht. Hat per Zufall jemand noch den link dazu, oder kann mir auf die schnelle mal mitteilen, wie das schon wieder geht?



  • Hallo wedmer,
    du muss ein Dynamischesarray mit einem Pointer auf TForm erstellen.
    Hier ein Beispiel:
    im Head:
    DaynamicArray<TForm*> fenster;

    in einer Methode:

    fenster.Length++;
    fenster[fenster.Length-1] = new TForm(Handle);
    fenster[fenster.Length-1]->Caption="Ein Fenster";
    fenster[fenster.Length-1]->Parent= Form1 //wenn du das Fenster im Form1 
                                             //ausgeben möchtest
    fenster[fenster.Length-1]->Visible=true;
    ....und so weiter...
    


  • Ein Array wird natürlich nur dann benötigt, wenn mehr als eine Instanz erstellt werden soll.
    Ansonsten gilt, dass Forms auch "nur" Komponenten sind, d.h. siehe FAQ, "Komponenten - zur Laufzeit erstellen ...".



  • Dass erstellen der Fenster klappt, nun hat sich das Problem ergeben, dass ich beim Beenden meines Progamms eine AccessViolation bei Adresse 00000000 erhalte 😕



  • Hallo

    was wohl daran liegt, das du die dynamischen Forms mit einem Owner erstellst. Sicherer ist, den Forms keinen Owner zuzuweisen, und das Löschen selber zu übernehmen.

    bis bald
    akari



  • jetzt gehts danke schön


Anmelden zum Antworten