![]() |
Programm beenden bevor Mainform angezeigt wird
Moin
ist es möglich eine Delphi-Anwendung "sauber" zu beenden, bevor überhaupt Application.Run ausgeführt wird und das Hauptfenster sichtbar ist. Ich habe hier ein Programm vor, in dem zunächst diverse DataModule und Formulare erzeugt werden. Und im OnCreate eines dieser Formulare wird dann "festgestellt" daß das Programm gar nicht erst starten soll (in einem DB-Anmeldefenster wird auf Abbrechen geklickt). |
Re: Programm beenden bevor Mainform angezeigt wird
was verstehst du unter "sauber" beenden?
du könntest zum einen "Halt" verwenden. Oder die sauberste Variante ist "Application.Run" nur auszuführen wenn eine Bedingung erfüllt ist. |
Re: Programm beenden bevor Mainform angezeigt wird
Zitat:
|
Re: Programm beenden bevor Mainform angezeigt wird
Ich habe es in die DPR geschrieben:
Delphi-Quellcode:
Die Anwendung wird so sauber beendet.
{----------------------------------------------------------------------------}
{$IFDEF MEMCHECK} MemCheckLogFileName := 'mc.log'; MemChk; {$ENDIF} {----------------------------------------------------------------------------} Application.Initialize; {----------------------------------------------------------------------------} if not LoginDialog then begin // Achtung, sonst Exception, wird nicht ganz fertig Application.ProcessMessages; Exit; end; {----------------------------------------------------------------------------} Application.CreateForm(TFRMMain, FRMMain); Application.Run; Cu, Frank |
Re: Programm beenden bevor Mainform angezeigt wird
Das Problem ist aber, daß die Login-Funktion aus dem MainWindow aufgerufen werden muß, da als Parameter die Statusbar übergeben wird.
|
Re: Programm beenden bevor Mainform angezeigt wird
Dein Ansatz ist falsch: Im OnCreate sollte man nicht abbrechen (wie Du ja gemerkt hast)
Ich mache es so: 1. Das eigentliche Hauptfenster, sei es 'TfmMain', wird erst zur Laufzeit erzeugt. 2. Ich habe einen kleinen Login-Dialog 3. Ich erzeuge im Hauptprogramm nur die Datenmodule und als Letztes den Login-Dialog. Also ist der Logindialog die Hauptform der Anwendung! Der Login-Dialog hat 2 Knöppels (OK und Abbruch, btOk und btCancel) sowie zwei Eingabefelder (edLogin und edPassword).
Delphi-Quellcode:
Also sauberer hab ich es bisher nicht hinbekommen.
Procedure TfmLoginDialog.btOkClick (Sender : TObject);
Begin If DM.LoginOk (edLogin.Text, edPassword.Text) Then Begin Self.Hide; With TfmMain.Create (Nil) Do Begin ShowModal; Release; End; Self.Show; End Else Raise Exception.Create('Login inkorrekt'); End; Procedure TfmLoginDialog.btCancelClick (Sender : TObject); Begin If AskUserYesNo('Wirklich beenden?') = mrYes Then Close; End; Oje: Neue Beiträge... Die Sache mit der Statusbar... Na dann so: Mein Hauptfenster ist im Gegensatz zum o.g. Ansatz weiterhin das Hauptfenster. Ich habe ein Panel, das über allen Controls liegt. In der Mitte des Panels ist ein Login-Edit sowie die bekannte Ok/Abbruch-Knöpfe. Das Panel ist beim Start sichtbar und überdeckt ALLES (bis auf -von mir aus- die Statusbar). Der Login 'dialog' befindet sich auf dem Panel. Wer sich Mühe gibt, verwendet eine Pagecontrol mit 2 Seiten (tcLogin und tcMain). Die Page-Reiter sind unsichtbar. Wenn der Login ok ist, wird das dicke Panel einfach unsichtbar gemacht und die Hauptanwendung wird sichtbar. Vom Rumwerkeln im Projekt-Quellcode halte ich Nichts. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz