PasswordDlg



  • Abend,

    Nach Richtiger Passwort Eingabe soll sich ein neues Fenster öffnen, bei falscher Eingabe soll eine Message kommen "Falsches Passwort" mir fehlt einiges steh nur imoment aufem Schlauch, kann mir jmd. weiter helfen ?

    mfg

    void __fastcall TPasswordDlg::OKBtnClick(TObject *Sender)
    {
    
    if (PasswordDlg->Password == "test")
    {
    Form3->Show();
    }
    if (PasswordDlg->Password =="")
    {
    
    ShowMessage ("Passwort Falsch!");
    }
    
    }
    


  • Was funktioniert denn daran nicht?

    void __fastcall TPasswordDlg::OKBtnClick(TObject *Sender)
    {
    
       if (PasswordDlg->Password == "test")
       {
          Form3->Show();
       }
       else // wozu noch ne Bedingung drin? die Message soll doch sicher 
       {    // kommen egal ob Passwort falsch oder einfach leer?
          ShowMessage ("Passwort Falsch!");
       }
    
    }
    

    Auch wenn ich grad keine Komponente namens PasswordDlg bei mir finden kann, denk ich mal, dass da alles normal ist...



  • wenn ich test eingebe passiert nicht es öffnet sich kein fenster und wenn ich nichts eingebe kommt keine message...^^



  • Weiß grad auch nicht, was das für eine Komponente sein soll.
    Aber machs doch einfach so:

    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
      Edit1->PasswordChar = '*';
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      if(Edit1->Text == "")
      {
       ShowMessage("Bitte ein Passwort eintippen!");
       Edit1->SetFocus();
      }
      else if(Edit1->Text == "test")
       Form3->Show();
      else
       ShowMessage("Falsches Passwort!");
    }
    

    Grüße



  • ah vielen dank genau das was ich gesucht habe 🙂



  • U-Boot schrieb:

    Auch wenn ich grad keine Komponente namens PasswordDlg bei mir finden kann, denk ich mal, dass da alles normal ist...

    Das ist keine Komponente sondern eine Form. Die findstst du bei Datei->Neu->Weitere->Dialoge->Passwort Dialog (glaub ich).



  • Hallo

    OnCreate und OnDestroy sollte man nicht benutzen, stattdesen Konstruktor und Destruktor.
    Da aber die Eigenschaft PasswordChar auch im Objektinspektor angezeigt wird, ist hier keines von beiden nötig.

    bis bald
    akari



  • akari schrieb:

    OnCreate und OnDestroy sollte man nicht benutzen, stattdesen Konstruktor und Destruktor.

    Wieso nicht? Wenn ich manche Dinge im Konstruktor anstatt im OnCreate erledige, gibts häufiger mal eine Exception.. (Vielleicht sinds auch einfach nur die falschen Dinge 😉 )
    Habs jetzt überhaupt mit in den Source geschrieben, damit ich nicht sagen muss, dass er's im Objektinspektor machen muss.. (bzw bei dynamisch erstellten Kompontenn)
    Grüße



  • Hallo

    Wieso nicht?

    Genaue Erklärung findest du mit der Suchfunktion hier im Forum. Kurz :
    - In C++ gibt es per Standard Konstruktor und Destruktor. OnCreate und OnDestroy sind nur Delphi-Ersatzlösung, die in C++ nicht nötig sind
    - Aufrufreihenfolge dieser Events ist nicht genau festlegbar, so das Initialisierungen in der falschen Reihenfolge abgearbeitet werden könnten

    Wenn ich manche Dinge im Konstruktor anstatt im OnCreate erledige, gibts häufiger mal eine Exception.

    Dann machst du irgendwas falsch

    bis bald
    akari



  • akari schrieb:

    Wenn ich manche Dinge im Konstruktor anstatt im OnCreate erledige, gibts häufiger mal eine Exception.

    Dann machst du irgendwas falsch

    Ich dachte da ein eine MessageBox o.Ä.. Hab grad keine Möglichkeit zu testen, aber ich meine wenn eine im Konstruktor aufgerufen wird, gibts eine Exception (bei OnCreate nicht..)
    Grüße



  • Hallo

    Eine MessageBox im Konstruktor alleine veruracht in meinen BCB5 keinen Fehler.

    bis bald
    akari


Anmelden zum Antworten