TForm allgemein!



  • Hallo zusammen,

    ich habe zwei kleine Probleme!

    Ich habe zwei TForms.
    Im Konstruktor der einen Form "Form1" wird eine Überprüfung gemacht. Je nachdem wie diese Überprüfung ausfällt, möchte ich entweder Form1 anzeigen, oder Form2.

    Wenn ich nun versuche über

    Form2->Visible = true
    

    das Form2 anzuzeigen, dann spuckt er mir folgenden Fehler aus:

    Zugriffsverletzung bei Adresse 400EE72E in Modul 'vcl60.bpl'....

    Wie kann ich diesen Fehler beheben und machen, dass Form2 angezeigt wird?

    Wenn ich nicht Form2 nach der Überprüfung anzeigen möchte, sondern Form1 so macht er das auch. Nur wird das Fenster nicht am Bildschirm angezeigt, sondern es wird minimiert in die Startleiste geschoben. Aber es sollte gleich auf dem Bildschirm zu sehen sein. Mit welcher Einstellung kann man das beheben?

    Vielen Dank für die Antworten

    Gruß



  • Im Konstruktor der Form1 kannst Du keine Form anzeigen.
    Baue das lieber in OnShow ein.

    Dein Punkt zwei klingt nach WindowState.

    Gruss



  • Hallo

    ich vermute Form1 ist dein MainForm, das normalerweise beim Start der Anwendung gleich angezeigt wird.
    Dann ist klar warum der Speicherfehler erscheint : Auch Form-Instanzen werden der Reihe nach erstellt, und zwar das Mainform zuerst. Und dann ist bei Ausführung des Konstruktors von Form1 die Instanz von Form2 noch gar nicht vorhanden.

    bis bald
    akari



  • Stimmt das hört sich logisch an 😉

    Jetzt klappt es fast genau so wie ich das gerne hätte;
    Habe in OnShow von Form1 jetzt die Überprüfung eingebaut; Nun wird auch das Form2 angezeigt, doch immer hinter dem Form1. Wie kann ich jetzt das Form2 nach vorne holen??



  • Hallo

    Wenn Form2 dann gültig ist, mit Form2->BringToFront()

    bis bald
    akari



  • Je nach Anwendungslogik könnte auch ein Form2->ShowModal() sinnvoll sein.


Anmelden zum Antworten