Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem bei meinem Loginsystem & der Hauptunit (https://www.delphipraxis.net/166668-problem-bei-meinem-loginsystem-der-hauptunit.html)

Back2Code 24. Feb 2012 07:20

Delphi-Version: XE2

Problem bei meinem Loginsystem & der Hauptunit
 
Hallo DP,

bei meiner neusten Übung ist ein kleines Loginsystem herausgekommen. (Unit3.pas). Der Code sieht wie folgt aus :

Delphi-Quellcode:
unit Unit3;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Imaging.pngimage,
  Vcl.ExtCtrls, Vcl.ComCtrls, Unit1;

type
  TForm3 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Image1: TImage;
    Image2: TImage;
    procedure Button1Click(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form3: TForm3;
  trys: integer = 3;

const
    pwd = 'password';
    usr = 'admin';


implementation


{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
begin
  if (edit1.Text= pwd) and (edit2.Text= usr) then
  Form3.Caption:=('Correct password')
else
  Form3.Caption:=('Wrong password');
  trys := trys-1;
  if trys=0 then close();
end;

end.
Jetzt habe ich noch eine neue Unit hinzugefügt (VCL Anwendungsform Unit1.pas) und würde diese gerne nach erfolgreichem einloggen öffnen lassen und das Loginfenster sollte sich schließen. Wie verwirkliche ich das in der Praxis?

:?::(

haentschman 24. Feb 2012 07:24

AW: Ptroblem bei meinem Loginsystem & der Hauptunit
 
Moin...
beim Ablauf der Versuche machst du es doch auch. Warum nicht auch bei richtigem Paßwort ?
Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
begin
  if (edit1.Text= pwd) and (edit2.Text= usr) then
  Caption:=('Correct password');
  Close;
else
  Caption:=('Wrong password');
  trys := trys-1;
  if trys=0 then Close;
end;
- "Form3" entfernt
- Close hinzugefügt

Back2Code 24. Feb 2012 07:31

AW: Ptroblem bei meinem Loginsystem & der Hauptunit
 
Zitat:

Zitat von haentschman (Beitrag 1152614)
Moin...
beim Ablauf der Versuche machst du es doch auch. Warum nicht auch bei richtigem Paßwort ?
Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
begin
  if (edit1.Text= pwd) and (edit2.Text= usr) then
  Caption:=('Correct password');
  Close;
else
  Caption:=('Wrong password');
  trys := trys-1;
  if trys=0 then Close;
end;
- "Form3" entfernt
- Close hinzugefügt

Versteh nicht so wirklich was du mir damit sagen willst...:|

haentschman 24. Feb 2012 07:40

AW: Problem bei meinem Loginsystem & der Hauptunit
 
Um eine Form zu schließen benutzt man den Befehl "Close". In deiner Anweisung
Delphi-Quellcode:
if trys=0 then Close;
hattest du ihn schon drin. Nur in der Abfrage ob Paßwort korrekt fehlte er.
...Ich sehe grade daß begin/end noch fehlt. (Koffeinmangel :oops:)
Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
begin
  if (edit1.Text= pwd) and (edit2.Text= usr) then
  begin
    Caption:=('Correct password');
    Close;
  end
  else
  begin
    Caption:=('Wrong password');
    trys := trys-1;
    if trys=0 then Close;
  end;
end;

Back2Code 24. Feb 2012 07:51

AW: Problem bei meinem Loginsystem & der Hauptunit
 
Zitat:

Zitat von haentschman (Beitrag 1152619)
Um eine Form zu schließen benutzt man den Befehl "Close". In deiner Anweisung
Delphi-Quellcode:
if trys=0 then Close;
hattest du ihn schon drin. Nur in der Abfrage ob Paßwort korrekt fehlte er.
...Ich sehe grade daß begin/end noch fehlt. (Koffeinmangel :oops:)
Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
begin
  if (edit1.Text= pwd) and (edit2.Text= usr) then
  begin
    Caption:=('Correct password');
    Close;
  end
  else
  begin
    Caption:=('Wrong password');
    trys := trys-1;
    if trys=0 then Close;
  end;
end;

Soweit war ich ja schon die ganze Zeit...:( Ich möchte nach erfolgreichem eingeben des Passworts die neue Form öffnen lassen...

haentschman 24. Feb 2012 07:53

AW: Problem bei meinem Loginsystem & der Hauptunit
 
Zitat:

und das Loginfenster sollte sich schließen
...Form3 ist doch das LoginFenster ? :gruebel: Welche neue Form ? Schreibe mal die Formnamen und die Verwendung dazu. Ein kleiner Ablauf (wie du dir das vorstellst) wäre auch nicht verkehrt.

Angel4585 24. Feb 2012 07:54

AW: Problem bei meinem Loginsystem & der Hauptunit
 
War es nicht so, dass wenn Form3 das Hauptformular der Anwendung ist und man close aufruft, dass sich die Anwendung dann schliesst? :gruebel:

Ich mach sowas immer über modale Fenster:

Delphi-Quellcode:

function TLoginForm.TryLogin:Boolean;
begin
Result := ShowModal = mrYes;
end;

function TLoginForm.LoginClick(Sender: TObject);
begin
  if (edit1.Text= pwd) and (edit2.Text= usr) then
  begin
    Caption:=('Correct password');
    ModalResult:=mrYes;
  end
  else
  begin
    Caption:=('Wrong password');
    trys := trys-1;
    if trys=0 then ModalResult:=mrNo;
  end;
end;
Dann kann ich die Loginform an anderer Stelle schön verwenden:
Delphi-Quellcode:
with TLoginForm.Create() do
  try
    if TryLogin then
      begin
      //Show other Form    
      NewForm.Show; // Falls noch nicht erzeugt erst NewForm := TNewForm.Create() aufrufen
      end
    else
      begin
      //Go back or close App
      end;
  finally
    Free;
  end;
Alternativ kann man TryLogin auch statisch machen und TLoginForm dort drin erzeugen.

P.S.: Hab den Code jetz nirgends rauskopiert sondern wollte nur das Prinzip darstellen

Back2Code 24. Feb 2012 07:56

AW: Problem bei meinem Loginsystem & der Hauptunit
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier ein Screenshot

Angel4585 24. Feb 2012 08:03

AW: Problem bei meinem Loginsystem & der Hauptunit
 
Kann es sein, dass du nur den Befehl "Form1.Show;" suchst? Einfach nach "Caption:=('Correct Password');"

Back2Code 24. Feb 2012 08:06

AW: Problem bei meinem Loginsystem & der Hauptunit
 
Zitat:

Zitat von Angel4585 (Beitrag 1152627)
Kann es sein, dass du nur den Befehl "Form1.Show;" suchst? Einfach nach "Caption:=('Correct Password');"

Jap. :-D

Jetzt gehts

Delphi-Quellcode:
    Caption:=('Correct password');
    Form1.Show;
    Form3.Hide;


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr.
Seite 1 von 2  1 2      

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