![]() |
Showmodal - modalresult
Hi,
ich möchte gern ein Login realisieren, wie mach ich das am besten? Ich hatte gedacht es am besten so zurealisieren: Login Form anzeigen --> eingabe ok --> login Form schließen --> Main Form öffnen. Wenn ich dies aber so realisier, wird unten in der Taskleiste mein Programm nicht mehr angezeigt, da das Login Fenster als Hauptanwendungs-Fenster deklariert ist und mit Hide verschwindet. Wie kann ich dies besser per Showmodal realisieren? Häng grad fest. |
Re: Showmodal - modelresult
Erzeuge dein Login-Form im OnCreate des Hauptformulars.
Und bei fehlerhaften Login beende das Hauptformular mit PostMessage(self.Handle, WM_CLOSE, 0, 0); |
Re: Showmodal - modelresult
Man kann das Loginformular auch einfach im Projektquelltext erzeugen. Dann spart man sich die Verrenkung mit der Message und auch gleich das Erzeugen des Hauptfensters, wenn der Login nicht erfolgreich war.
Man darf das Loginfenster nur nicht mit Application.CreateForm erzeugen, sondern muss ganz normal den Konstruktor benutzen, dann geht das... |
Re: Showmodal - modelresult
Zitat:
|
Re: Showmodal - modelresult
OnCreate wird vor OnShow ausgelöst. Das heißt du könntest an der Stelle auch einfach ein Flag setzen, ob das ausgeführt werden soll.
Aber das ist wie gesagt alles gar nicht notwendig, erzeuge das Hauptformular einfach gar nicht erst, wenn der Login nicht erfolgreich war. |
Re: Showmodal - modelresult
Zitat:
|
Re: Showmodal - modelresult
Naja, wie ich geschrieben habe...
Delphi-Quellcode:
Application.Initialize;
frmLogin := TfrmLogin.Create(nil); try if (frmLogin.ShowModal <> mrOk) or (frmLogin.UserName <> 'Test') then Exit; finally frmLogin.Free; end; Application.CreateForm(TfrmMain, frmMain); Application.Run; |
Re: Showmodal - modelresult
âh danke
|
Re: Showmodal - modelresult
Ich habe gerade noch die Freigabe des Formularobjekts hinzugefügt, das hatte ich eben vergessen. ;-)
|
Re: Showmodal - modelresult
Delphi-Quellcode:
Edit ok hab
Application.Initialize;
FormLogin := Application.Initialize; FormLogin := FormLogin.Create(nil); try if Login_exist then Exit; finally FormLogin.Free; end; Application.CreateForm(TFormMain, FormMain); Application.CreateForm(TFormKunden, FormKunden); Application.CreateForm(TFormPosition, FormPosition); Application.Run;
Delphi-Quellcode:
in
FormLogin.Create(nil);
Delphi-Quellcode:
geändert dummer Fehler meinerseits, allerdings wenn ich nun starte, wird trotzdem wieder FormMain.Show gestartet und ich krieg logischerweise eine Fehlermeldung, da meine Objekte alle noch af nil stehen.
TFormLogin.Create(nil);
Jedoch sollte das Ereignis FormShow des Hauptformulars noch warten bis der Login erfolgreich war. |
Re: Showmodal - modalresult
keiner eine Idee ich versteh das mit Modalresult und Showmodal einfach nicht.
Hier nochmal der Ausgangspunkt:
Delphi-Quellcode:
Ich möchte das FormLogin nicht das MainFomular ist, da wenn ich es schließe die Anwendung geschlossen wird und wenn ich Hide die Anwendung in der Taskleiste verschwindet.
Application.Initialize;
Application.MainFormOnTaskBar:= true; Application.Title:= 'Kunden Verwalrungsmanager'; Application.CreateForm(TFormLogin, FormLogin); Application.CreateForm(TFormMain, FormMain); Application.CreateForm(TFormKunden, FormKunden); Application.CreateForm(TFormPosition, FormPosition); Application.Run; Es soll also nur ein dazwischen geschoebenes Fenster sein. Allerdings das FormMain welches das eigentliche Hauptformular sein soll, nicht bei Anwendungsstart das Ereigenes OnShow ausgführt werden, da Die Objekte erst in FormLogin Initialisiert werden bei efolgreichen Login. |
Re: Showmodal - modalresult
Statt das Loginfenster anzuzeigen, hast du ja da auch nur Login_exist abgefragt, was auch immer das bedeuten soll...
Du musst zuerst das Loginfenster anzeigen. Dann fragst du den Login ab und wenn der nicht erfolgreich ist, dann springst du einfach raus. Dann wird das Hauptfenster weder erzeugt noch angezeigt noch irgendwas. Und was haben Objektinitialisierungen im Loginfenster verloren? Das ist doch nur zum Login da... Die kannst du doch in OnShow machen, wenn der Login erfolgreich war. |
Re: Showmodal - modalresult
Ich versteh nur das ganze Prinzip noch nicht, als ich es so machte wie du geschrieben hattest sagte er mir mrOk ist nicht deklariert.
Kannst du mir das einmal für dumme mit etwas Code erklären, ich hab total den hänger. Nach erfolgreichen Login wird ein Objekt mit Daten gefüllt des jeweiligen Users, diese Daten werden dann im Programm ständig benutzt. |
Re: Showmodal - modalresult
mrOk steht in der Unit Controls, wenn ich mich recht entsinne, die müsste oben in die uses.
Ach ja: Und zum Prinzip: Du setzt ModalResult z.B. von einem Ok-Button auf mrOk. Wenn der gedrückt wurde, dann prüfst du die Eingaben. Und nur wenn Ok gedrückt wurde und die Eingaben stimmen, springst du nicht mit Exit raus. Wenn das Programm also beim Erzeugen und Anzeigen des Formulars ankommt, dann war der Login erfolgreich und du kannst in OnShow alles initalisieren etc., am besten solltest du das auch zusätzlich noch anders prüfen. |
Re: Showmodal - modalresult
Danke habs mit der Erklärung nun geschaft umzusetzen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:54 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