Re: Loginform soll geschlossen werden bevor MainForm erschei
Zitat:
|
Re: Loginform soll geschlossen werden bevor MainForm erschei
@moonwhaler: MuTzE :mrgreen: ) seine Version ist aber doch ein klein wenig kürzer. Und auch gilt, das ich den Projektquelltext nicht so gerne anfasse. Da kommt dann Delphi ab und an doch durcheinander.
Die Version im OnCreate ist latürnich noch eleganter. Sagen wir: MuTzE's Version mit meiner Anmerkung und MuTzE's abschließenden Kommentar ist optimal*, ergo:
Delphi-Quellcode:
* jedenfalls meine Meinung.
Procedure TMyMainForm.OnCreate (Sender : TObject);
Begin If Not LoginCorrect then Application.Terminate; End; |
Re: Loginform soll geschlossen werden bevor MainForm erschei
Also ich hab ja hier schon nen Programm, aber da haut das nich hin, wenn ich das Passwortformular zeige im OnCreate! Es geht bei mir nur im OnShow Modus, wobei, das wie du schon sagtest immer kommt, wenn das Formular eingeblendet wird.
Man könnte aber noch eine 2. Varible einbinden, anhand der überprüft wird, ob das Passwort bereits richtig eingegeben wurde. Hauptformular:
Delphi-Quellcode:
public
Passed: Booloean; end; procedure TMainFrm.FormShow(Sender: TObject); begin if not Passed then PasswordFrm.ShowModal; end; Passwortformluar:
Delphi-Quellcode:
procedure TPasswordFrm.AcceptBtnClick(Sender: TObject);
begin if PasswordEdit.Text = 'Passwort' then begin Accepted := True; MainFrm.Passed := True; Close; end else begin ShowMessage('Das Passwort ist ungültig!'); PasswordEdit.Clear; end; end; |
Re: Loginform soll geschlossen werden bevor MainForm erschei
Ich kenn das Problem. Weil ich Dir erstmal gar nicht geglaubt habe, hab ich also einen Drei-Zeiler geschrieben, mit der Passwortabfrage im OnCreate. Dann darf aber kein anderes Formular automatisch instantiiert werden.
Dr Projekt-Quelltext sieht also so aus:
Delphi-Quellcode:
Und die MyMainForm wie oben beschrieben. Dann kann ich mich einloggen (oder nicht).
Begin
Application.Initialize; Application.CreateForm(TMyMainForm, MyMainForm); Application.Run End.
Delphi-Quellcode:
wichtig ist, das das 'Application.Terminate' ja nicht sofort aufhört, sondern nur eine WM_QUIT Message in die Messagequeue schiebt. Das Application.Run fängt dann an, die Messages zu verarbeiten. Mehr oder minder früh wird dann das WM_QUIT entdeckt. Deshalb ist es imho wichtig, wirklich nur die eine Form im Hauptprogramm der Anwendung zu instantiieren.
Procedure TMyMainForm.FormCreate (Sender : TObject);
Begin If InputBox('Login','Benutzername','') <> 'MuTzE' Then Application.Terminate Else Begin // Initialize application's datamodules, forms etc. End; End; |
Re: Loginform soll geschlossen werden bevor MainForm erschei
Hi,
vielen Dank euch allen hier. Werd mich da mal durchwurschteln heute abend! |
Re: Loginform soll geschlossen werden bevor MainForm erschei
Zitat:
So wie es aussieht, scheint nur die Methode von igel457 und moonwahler diesbezüglich was zu taugen (allerdings fehlte irgendwie im positiven Login-Fall jeweils noch ein Free, oder?). Nur durch ein erstes Aufrufen von Application.CreateForm scheint die MainForm definiert zu werden, so dass mittels 'nur' TForm.Create-Anweisungen ohne Schwierigkeiten davor andere Formen erzeugt und genutzt werden können. ..und warum nicht im Projekt-File herumschreiben. Das ist imo Raum für Quellcode wie jeder andere! |
Re: Loginform soll geschlossen werden bevor MainForm erschei
:roll:
|
Re: Loginform soll geschlossen werden bevor MainForm erschei
Zitat:
edit: gut gut, ich meinte jetzt natürlich das MainForm-Flackern, welches ebenfalls für einen Bruchteil einer Sekunde in dem Falle zu sehen ist, in dem man den Login abbricht. Dann nämlich taucht das MainWindow nochmal ganz kurz auf, weil es ja eben schon createt ist. Und ich nehme doch mal sehr schwer an, dieses Flackern mag Mackhack mindestens genausowenig.... :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: |
Re: Loginform soll geschlossen werden bevor MainForm erschei
Genau,
ich will kein Flackern des Login-Fensters. Also muss ich als MainForm das Login-Fenster in den Projekt-Optionen einstellen sehe ich das richtig? |
Re: Loginform soll geschlossen werden bevor MainForm erschei
Bei mir flackert nicht das Loginfenster, sondern das Hauptformular, wenn man das Programm schon beim Loginfenster beendet.
Du müsstest dich mal entscheiden, ob du willst das es nicht flackert oder ob du etwas im projectcode veränderst, das du ja nicht gerne machst, wie du meintest. Ich denke mehr Optionen gibt es nicht, es sei denn jemand finde eine. ____________ EDIT: Ähhhhhh, der letzte Absatz kommt einfach weg, da hab ich mich wohl verlesen :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz