Re: While Schleife um Application.Run
2. Jun 2006, 10:07
Hallo Backdraft,
deine Idee ist logisch gesehen richtig, du musst aber wissen, dass wie SirThornberry bereits angemerkt hatte Application.Run nicht dein Hauptformular darstellt.
Du müßtest also das Hauptformular ebenfalls in der Schleife erzeugen, womit wir zum nächsten Problemchen kommen.
Deine Delphianwendung kennt nur ein Hauptformular, dieses definiert sich darüber welches Form zuerst erzeugt wird (ist evtl. über das APplication-Objekt im nachhinnein änderbar, bin mir da aber nicht sicher). Wird dieses "Hauptforumlar" geschlossen, wird das Application.Run, also deine Nachrichtenschleife verlassen und die Anwendung beendet sich normalerweise.
An deiner Stelle würde ich das so machen, dass ich das Loginform vor der Schleife erzeuge, in der Schleife mit showModal anzeige und den Rückgabewert auswerte.
Wenn der Rückgabewert ok ist, zeige ich das eigentliche Forumlar an. Somit ist das Loginform das Hauptformular und es sollte eigentlich funktionieren. Ein Action:= caHide; in der OnClose des Loginforms müßtest du allerdings auch verwenden. In die OnClose des Hauptformulars schreibst du sendMessage(Application.handle, WM_QUIT, 0, 0); Dies durchbricht die Nachrichtenschleife in Application.run, somit brauchst du dir keine eigene Programmieren, die nur solange läuft, wie das Form existiert.
Oder du machst ein drittes Form zur Hauptform, lässt alles wie es ist und die beiden Login+Hauptschirm rufen sich nur gegenseitig auf.
Wer später bremst ist eher tot.
|