Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dialog ausblenden (https://www.delphipraxis.net/61127-dialog-ausblenden.html)

Pump3r 17. Jan 2006 12:30


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

marabu 17. Jan 2006 13:46

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:
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.
Grüße vom marabu

Pump3r 17. Jan 2006 13:55

Re: Dialog ausblenden
 
Zitat:

Zitat von marabu
Delphi-Quellcode:
if (ShowModal <> mrOK) or (Password.Text <> 'marabu')

kannst du mir die zeile noch etwas genauer erklären bitte :)


gruß chris

Kinimod8 17. Jan 2006 14:27

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:

Pump3r 17. Jan 2006 14:33

Re: Dialog ausblenden
 
mrOK da dast er undefinierter bezeichner...

und naja das password dings hab ich weggelassen :)

Cicaro 17. Jan 2006 15:14

Re: Dialog ausblenden
 
Kannst auch folgendes machen:
Erstelle dein Hauptformular und ein untergeordnetes LoginFormular oder LoginDialog.
Diesen Code hinzufügen

Delphi-Quellcode:
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;
und fertig.
Das LoginDialog lässt sich auch in anderen Anwendungen verwenden.

Pump3r 17. Jan 2006 15:19

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

marabu 17. Jan 2006 15:27

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

Pump3r 18. Jan 2006 07:41

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

tigerman33 18. Jan 2006 07:53

Re: Dialog ausblenden
 
Trag einfach ins OnClick des Speedbuttons die Zeile
Delphi-Quellcode:
  ModalResult := mrOK;
ein.

marabu 18. Jan 2006 08:01

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

Pump3r 18. Jan 2006 08:29

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:
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.
er sagt immer undefinierter bezeichner

gruß chris

marabu 18. Jan 2006 09:10

Re: Dialog ausblenden
 
Zitat:

Zitat von marabu
Die ModalResult-Konstanten sind in der Unit Controls deklariert - einfach über USES einbinden.

Du hast die unit Controls ja immer noch nicht eingebunden:

Delphi-Quellcode:
uses
  Forms,
  Controls, // <<-- hier lebt mrOK
  Login in 'Login.pas' {Form1},
  clientC in 'clientC.pas' {Form2};
marabu

Pump3r 18. Jan 2006 10:13

Re: Dialog ausblenden
 
hehe, ok :>
dankeschön

Pump3r 18. Jan 2006 11:22

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