![]() |
Dialog ausblenden
Hi,
ich hab eine anwendung und zusätzlich hat diese ein formular. Die andwendung ist ein loginfenster. nach dem login soll sich das formular öffnen. das mach ich mich showmodal.. das geht auch. aber wie kann ich jetzt den logindialog schließen und das formular trotzdem geöffnet lassen, oder den logindialognicht sichtbar machen? Gruß Chris |
Re: Dialog ausblenden
Hallo Chris,
nicht der Login-Dialog sollte deine MainForm sein, sondern die andere Form. Entferne dazu den Login-Dialog aus der Liste der automatisch erzeugten Forms und ändere deinen Projektquelltext etwas ab:
Delphi-Quellcode:
Grüße vom marabu
begin
with TLoginDialog.Create(nil) do begin if (ShowModal <> mrOK) or (Password.Text <> 'marabu') then Halt else Free; end; Application.Initialize; Application.CreateForm(TMainForm, MainForm); Application.Run; end. |
Re: Dialog ausblenden
Zitat:
gruß chris |
Re: Dialog ausblenden
Die Procedure "ShowModal" gibt beim Schließen das ModalResult zurück. Wenn du z.B. einen OK- und einen Abbrechen-Button hast, setzt du das ModalResult des OKs auf mrOK und bei Abbrechen mrAbort. Das Formular schließt sich dann automatisch.
Und "Passwort" ist wohl einfach ein Edit-Feld, dessen Text du abfragst :wink: |
Re: Dialog ausblenden
mrOK da dast er undefinierter bezeichner...
und naja das password dings hab ich weggelassen :) |
Re: Dialog ausblenden
Kannst auch folgendes machen:
Erstelle dein Hauptformular und ein untergeordnetes LoginFormular oder LoginDialog. Diesen Code hinzufügen
Delphi-Quellcode:
und fertig.
type
TLoginDialog = class(TForm) ... public Kennung,Passwort:String; function Execute:Boolean; end; var MyLoginDialog:TLoginDialog; function TLoginDialog.Execute:Boolean; begin ShowModal; Result:=(Kennung = "Cicaro") and (Passwort = "HättetIhrWohlGern"); end; // Unit-Wechsel procedure TForm1.FormShow(Sender:TObject); begin if not MyLoginDialog.Execute then Application.Terminate(); ... end; Das LoginDialog lässt sich auch in anderen Anwendungen verwenden. |
Re: Dialog ausblenden
danke.
if (ShowModal <> mrOK) then .... hier sagt er mir das mrOK ein undefinierter bezeichner ist. wo bitte soll ich den definieren? ich benutze einen speed button. also habe ich modalresult := mrOK; gesetz. aber geht net. warum? :) Gruß Chris |
Re: Dialog ausblenden
Chris, in meinem Code-Beispiel habe ich den Password-Dialog aus der D7 Dialog-Galerie verwendet.
Du findest ihn im Menü unter Neu | Weitere | Dialoge. Die ModalResult-Konstanten sind in der Unit Controls deklariert - einfach über USES einbinden. marabu |
Re: Dialog ausblenden
ok danke :)
das hab ich jetzt sweit verstanden, nur ich benutze eben einen speedbutton und ich finde die modalresult option im objektinspektor nicht. wie soll ich das dann machen? gruß pump3r |
Re: Dialog ausblenden
Trag einfach ins OnClick des Speedbuttons die Zeile
Delphi-Quellcode:
ein.
ModalResult := mrOK;
|
Re: Dialog ausblenden
SpeedButton ist eine sehr alte Komponente, quasi der Vorläufer des ToolButton. Du verwendest sie zum Beenden eines modalen Dialogs? Das ist zumindest originell.
Selbstverständlich kannst du die Eigenschaft ModalResult einer Form auch im OnClick-Ereignis eines SpeedButtons oder wo immer du willst setzen. Wenn es bei dir nicht funktioniert hat, dann hattest du zu dem Zeitpunkt vielleicht den Login-Dialog noch als MainForm festgelegt und die wird nicht modal angezeigt. marabu |
Re: Dialog ausblenden
direkt verwenden tu ich ihn nicht zum beenden.
er dient dazu eine verbindung zum server aufzubauen. der löst dann einen timer aus und der sendet dann was an den server. wenn der client eine antwort bekommt, das das passwort etc u. usw stimmt, soll der dialog schließen und eben der maindialog kommen. :>
Delphi-Quellcode:
er sagt immer undefinierter bezeichner
program Client;
uses Forms, Login in 'Login.pas' {Form1}, clientC in 'clientC.pas' {Form2}; {$R *.res} //begin begin with TForm1.Create(nil) do begin if (ShowModal <> mrOK) then Halt else Free; end; Application.Initialize; //Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm2, Form2); Application.Run; end. gruß chris |
Re: Dialog ausblenden
Zitat:
Delphi-Quellcode:
marabu
uses
Forms, Controls, // <<-- hier lebt mrOK Login in 'Login.pas' {Form1}, clientC in 'clientC.pas' {Form2}; |
Re: Dialog ausblenden
hehe, ok :>
dankeschön |
Re: Dialog ausblenden
Liste der Anhänge anzeigen (Anzahl: 1)
hmm kann sichs vllt. doch mal einer nochmal anschauen?
hab immer noch ein problem. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 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