Man ruft eben nicht Destroy us, sondern Free. (sollte sogar in der
OH erwähnt werden)
Zitat:
Delphi-Quellcode:
FormE.Destroy; //Eingabe-Formular schließen
Form1.Show;
Sowas
Application.CreateForm(TForm1,Form1);
gehört in die
DPR, sonst hat dieses woanders nicht unbedingt etwas zu suchen.
>
Form1 := TForm1.Create(Self);
oder
Form1 := TForm1.Create(FormE);
Wobei ich dir dringend Empfehle diese globalen Variablen, wie FormE und Form1 garnicht zu verwenden.
Innerhalb einer Komponente nutzt man nicht die externe Variable, also innerhalb der Methoden von TFormE wird nicht FormE verwendet. höchstens Self oder man läßt es weg, wenn möglich.
So und nun zum Problem.
Wie dir schon gesagt wurde, wird das Programm beendet, wenn man die Hauptform schließt.
FormE ist deine Hauptform, da sie als erstes Erzeugt und bei Application angemeldet wurde.
FormE.Destroy; Self.Free;
oder
Free;
, aber eigentlich besser
Self.Close;
oder
Close;
schließt die Form.
Schließen = Close
Zerstören = Destroy
Freigeben = Free
So, nun gibst du also die Hauptform frei, welches intern auch alle, bei Application registrierten, Forms schließt/freigibt.
Somit vrschwindet nun auch Form1, weswegen nun Form1.Show nicht klappen kann, aber bei dir durch einen Fehler doch zufäälig mal halbwegs gut geht.
Delphi-Quellcode:
// Application.Destroy;
Application.Free; // ...kommt der gleiche Fehler
Man gibt Application nicht frei.
Schau dir mal eine
DPR an, wie se standardmäßig aussieht.