Thema: Delphi Formular öffnen

Einzelnen Beitrag anzeigen

Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#19

Re: Formular öffnen

  Alt 11. Okt 2006, 09:06
Hallo lorus,

warum Forms2.Show zum "Krachen" geführt hat, möchte ich noch kurz genauer erläutern (das ist zwar bereits gelöst, aber die Erklärung fehlt mir dabei):

In der Projektdatei oder in den Projektoptionen steht, in welcher Reihenfolge die Formulare erstellt werden. Zuerst muss natürlich das Hauptformular kommen. (Das kann auch anders ablaufen - Stichwort SplashForm -, aber ich möchte es jetzt nicht zu kompliziert machen.) Delphi bzw. Application ruft also nacheinander folgende Methoden auf:
Delphi-Quellcode:
Form1.FormCreate() // durch Application.CreateForm(TForm1, Form1);
Form2.FormCreate() // durch Application.CreateForm(TForm2, Form2);
Form1.FormShow() // durch Application.Run;
Während Form1.Create() ist deshalb Form2 noch nicht erzeugt worden und kann deshalb noch nicht für Form2.Show benutzt werden; während Form1.FormShow() ist dies aber möglich.

Offen bleibt die Frage: Was willst Du mit Form2.Show; eigentlich erreichen?
  • Wenn beim Programmstart nicht Form1 im Vordergrund stehen soll, sondern Form2, dann ist das ein richtiges Vorgehen.
  • Auch geeignet dürfte (@vlees91) sein: Form2.SetFocus;
  • Wenn Du nur willst, dass Form2 zur Verfügung steht (der Normalfall), dann genügt Folgendes:
    • Setze Form2 im OI auf Visible := true.
    • Stelle sicher, dass (siehe oben) Form2 automatisch erzeugt wird.
    Dann kannst Du jederzeit - z.B. durch Form1.Button1Click - Form2.Show aufrufen.
Ich hoffe, ich habe zur Klarheit beigetragen. Gruß Jürgen

PS. Bitte nicht verwirren lassen: Weil ich jetzt fast ausschließlich mit C# arbeite, benutze ich auch solche Bezeichnungen. Oben stehen deshalb keine Delphi-Quelltexte, sondern nur Erläuterungen.
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat