Variablenübergabe Formulare bei Start



  • Hallo,
    da ich eine Variablenübergabe zwischen zwei Formularen benötige, habe ich mir gerade mal den Artikel der FAQ (http://www.c-plusplus.net/forum/viewtopic-var-t-is-39242.html) angesehen und getestet.

    Nun würde ich gerne in der bei Start des Programmes einem Textfeld in Form2 einen Wert zuweisen (konkret aus einer INI-Datei).

    Ich platziere in das Beispiel aus der FAQ auf Form2 ein Edit1.
    Wenn ich in der TForm1::FormCreate des Form1 ein

    Form2->Edit1->Text = "Hallo";
    

    einfüge und starte bekomme ich eine Zugriffsverletzung (schätze mal weil die Form2 zu den Zeitpunkt noch nicht existiert).
    Wann wird Form2 denn erzeugt sodass ich darauf zugreifen kann?

    Danke und Gruß
    Thomas



  • wenn Form1 kreiert wird existiert Form2 noch nicht, deswegen der Fehler.
    Versuche es doch mal in 'TForm2::FormCreate' zu setzen. wobei 'FormCreate' immer mit Vorsicht zu behandeln ist ! oder benutze z.B. Form2 OnShow



  • Wenn ich es in FormShow aufrufe geht es!

    Sinn des Ganzen soll sein, dass ich ein zweites Fenster habe in dem einige Einstellungen gemacht werden sollen. Die Daten würde ich gerne in den Edit-Feldern des zweiten Fensters speichern.

    Bei schließen des Form1 sollen diese Einstellungen auch wieder gespeichert werden. Da stellt sich ja auch die Frage, wie lange ich noch auf die Objekte des Form2 zugreifen kann.



  • Mach das Eintragen in OnShow und das Speichern in OnClose. Da dürfte Form2 noch vorhanden sein.
    Da du Form2 automatisch erzeugen lässte kann man nicht genau sagen wann sie erzeugt wird und wann zerstört. In den oben genannten Events sollte es aber auf jedem Fall gehen.


Anmelden zum Antworten