Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Login auf form2 (https://www.delphipraxis.net/99372-login-auf-form2.html)

MondoShiva 11. Sep 2007 09:24

Datenbank: keydb • Zugriff über: delphi

Login auf form2
 
Hallo ich habe ein kleines problem welches sich in form eines logins darstellt....
ich versuche einen login auf ein programm zu setzten quasi der standart mit :

- Login Name
- Passwort
- Button OK
- Button Abbrechen

Jeodch steht zu zeit nur eine Tabelle in der datenbank welche die felder loginname und passowrt enthält
Ich weiss leider nicht wie ich es in delphi als code schreiben soll das er es tut!
Es soll erst die Form2 auf der sich der login befindet geöffnet werden und anschließend bei erfolgreichem login dann Form1.

Ich danke euch schonmal im vorraus ;)

hoika 11. Sep 2007 09:46

Re: Login auf form2
 
Hallo,

1. Nenne Form2 um ... ;)
2. packe den Aufruf des Form2 in die dpr
vor dem Application.ExecuteForm (Form1).


Heiko

SirTwist 11. Sep 2007 10:28

Re: Login auf form2
 
Also das Umbenennen ist nicht zwingend notwendig.

ich selbst löse solche Anmeldefenster (oder auch Splash-Fenster), indem ich sie in der FormShow-Routine des Hauptformulars aufrufe:

Delphi-Quellcode:
procedure TForm1.FormShow;
begin
  if Form2.ShowModal <> mrOK then begin
    Application.Terminate; halt; exit;
  end;
  ...
end;
Wobei halt Form2 den Wert ModalResult auf mrOK setzen muss, wenn der Login geklappt hat und auf mrCancel, wenn der Login fehlgeschlagen ist bzw. der Anwender die Anmeldung abgebrochen hat.

MondoShiva 11. Sep 2007 13:05

Re: Login auf form2
 
ja wunderbar ich danke euch!
hatte es im oncreat von form1 schon ma reingehauen nur dumm das man halt immer auf form1 switchen konnte ;)
thx

SirThornberry 11. Sep 2007 14:47

Re: Login auf form2
 
ich mache bei mir in aller Regel eine Execute-Methode. In dieser rufe ich FormShow auf und wenn das mit mrOk geschlossen wird liefert meine Execute-methode True zurück. Somit muss ich nicht mit Application Terminate arbeiten sondern handhabe es genau wie einen Aufruf eine OpenDialogs.Execute

SirTwist 11. Sep 2007 15:45

Re: Login auf form2
 
Zitat:

Zitat von SirThornberry
ich mache bei mir in aller Regel eine Execute-Methode.

Hm, dann änderst Du aber auch das Programmgrundgerüst, oder? Weil normalerweise ja Form1 immer angezeigt wird, und das Program wird beendet, wenn Form1 geschlossen wird.

Vielleicht bin ich blind, aber ich sehe da keine andere Möglichkeit, außer im Form1.FormCreate/FormShow eine Login-Box darzustellen, und bei Falscheingaben halt mit Application.Terminate die Notbremse zu ziehen.

Dass man den Aufruf der Loginbox schöner gestalten kann, da gebe ich Dir recht. Normalerweise lasse ich diese Forms gar nicht erst automatisch erstellen, sondern habe eine function SqlLogin: Boolean, die die Form zur Laufzeit erzeugt und abschließend zerstört:

Delphi-Quellcode:
function SqlLogin: Boolean;
var dlg: TDlgSqlLogin;
begin
  dlg := TDlgSqlLogin.Create(nil);
  with dlg do begin
    result := (ShowModal = mrOK);
    Free;
  end;
end;
(so runtergetippt, ungetestet)

SirThornberry 11. Sep 2007 15:58

Re: Login auf form2
 
bei mir sieht es so aus:

unit2 (benennung sieht bei mir natürlich besser aus)
Delphi-Quellcode:
TForm2 = class(TForm)
[...]
public
  class function Execute(): Boolean;
end;
[...]
class function TForm2.Execute(): Boolean;
var
  lForm: TForm2;
begin
  lForm := TForm2.Create(nil);
  try
    result := lForm.ShowModal = mrOK;
  finally
    lForm.Free;
  end;
end;
[...]
procedure TForm2.ButtonOKClick(Sender: TObject);
begin
  if PasswortRichtig() then
    ModalResult := mrOK;
end;

Projektdatei
Delphi-Quellcode:
[...]
Application.Initialize;
if TForm2.Execute() then
begin
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end;
[...]

SirTwist 11. Sep 2007 16:37

Re: Login auf form2
 
Ah, auch eine Möglichkeit. Aber ich bleib bei meiner :-) Oder hat Application.Terminate irgendwelche Nachteile, von denen ich wissen sollte?

DeddyH 11. Sep 2007 16:57

Re: Login auf form2
 
Der Vorteil ist, dass die ganzen weiteren Formulare bei einem fehlerhaften Login gar nicht erst erzeugt und somit nicht wieder freigegeben werden müssen.

Nuclear-Ping 11. Sep 2007 20:16

Re: Login auf form2
 
Deddy, wäre hier nicht Platz für deine Login-Kompo? :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:23 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