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.