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:
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;
Also sauberer hab ich es bisher nicht hinbekommen.
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.