![]() |
AW: Buttonabhängiges Schließen des Programms
Danke! Funktioniert jetzt.
Wenn ich das jetzt als Login-Fenster nehmen will, dann hab ich mir das so gedacht, dass man eben seinen Benutzernamen und Passwort eingibt. Diese werden als 'Nachricht' an den Server geschickt, der überprüft, ob die Zugangsdaten korrekt sind und schickt eine Nachricht zurück, die dann das Schließen des Fensters regelt. Wenn alles korrekt war, dann eben das, was man mir hier freundlicherweise gezeigt hat. Wenn die Daten aber nicht stimmen, dann soll das Fenster geöffnet bleiben, möglicherweise auch eine Fehlermeldung kommen. ABER: Wie realisier ich das jetzt? lg, hans ditter |
AW: Buttonabhängiges Schließen des Programms
Das dürfte mit dem jetzigen Lösungsweg schwierig bzw. sehr umständlich werden. Nur so als Gedankengang:
-die Client-/Server-Funktionalität in eine eigene Unit (z.B. ein Datenmodul) auslagern -das LoginForm zum Hauptformular machen -nach erfolgreichem Login verstecken, Form1 erzeugen und anzeigen -um die Anwendung zu beenden, dann eben das versteckte MainForm (also Form2) schließen |
AW: Buttonabhängiges Schließen des Programms
Warum nicht im Constructor des Mainforms den Logindialog öffnen , wenn hier nicht erfolgreich abgearbeitet wird , Meldung anzeigen und ein Terminateflag setzen welches die Anwendung beendet.
|
AW: Buttonabhängiges Schließen des Programms
@ Bummi ... äääääh, weil ich das nicht kann?!:cry:
@ daddyH Ja, ok... ich versteh nicht ganz was du meinst mit Zitat:
|
AW: Buttonabhängiges Schließen des Programms
Ich vermute, dass Du die Socket- (oder Indy, oder welche auch immer) Komponenten auf Form1 hast. Diese kannst Du in ein TDataModule packen und dann von beiden Units darauf zugreifen.
|
AW: Buttonabhängiges Schließen des Programms
Sorry hatte etwas wenig Zeit gehabt, aber DeddyH hat es dir ja erklärt gehabt.
Ich zeig dir mal wie ich mein Login Form benutze:
Delphi-Quellcode:
Exception Behandlung habe ich mal weg gelassen.
Try
QueryLogin.SQL.Text:='Select * from `Table` WHERE username LIKE EINGABE;'; QueryLogin.Open; if QueryLogin.FieldByName('pw').AsString = md5string(EditPasswort.Text) then // PW ist in MD5 gespeichert ModalResult:= mrOk Else Showmessage('Benutzername und Passwort stimmen nicht überein.'); Finally QueryLogin.Close; // Schließe Query zum schluss QueryLogin.Free; End; |
AW: Buttonabhängiges Schließen des Programms
Liste der Anhänge anzeigen (Anzahl: 1)
Aaaaaaaarggggghhhhhhhhhhhh!!!!!!!!!!!!!!!!!!!!:evi l::evil::x:x:x:x:x:x:wall::wall::wall::wall::wall: :wall::wall::wall::kotz: :kotz: :kotz: :kotz: :kotz: :kotz: :kotz:
Jetzt hab ich gerade versucht umzusetzen, was DeddyH gesagt hat... und rausgekommen ist nur, dass mein Chat jetzt wieder Macken hat!!! :kotz::wall: Das mit dem Datenmodul hat leider gar nicht geklappt. Das hab ich jetzt auch mal eben schnell wieder gelöscht, aber jetzt funktionieren auch andere Sachen wieder nicht mehr. Wenn mein Server jetzt nicht online ist, dann bekomme ich so ein **** PopUp-Fenster, dass mir sagt, das ein "Asynchroner Socket Fehler 10061" vorliegt. Mir ist klar, dass das der Fehler ist, wenn der Client den Server nicht erreichen kann, aber ich will dieses blöde Fenster nicht :wall:! Dabei gibt es eigentlich eine Routine, die das verhindern soll. Und jetzt stell ich gerade fest, dass das Programm gar nicht mehr kompiliert werden kann!! :wall::wall::wall::wall::wall::wall::wall::wall::w all::wall::wall::wall::wall::wall::wall::wall: :wall::wall::kotz::kotz::kotz::kotz::kotz::kotz::k otz::kotz::kotz::kotz::kotz::kotz::kotz::kotz: :kotz::kotz: Entschuldigt bitte meinen emotionalen Ausbruch, aber manchmal geht mir das tierisch auf den ****! Hoffe ihr könnt mir nochmal helfen. Ich hab den kompletten Quelltext nochmal angehängt. LG, hans ditter |
AW: Buttonabhängiges Schließen des Programms
Dann behandele die Exception halt.
|
AW: Buttonabhängiges Schließen des Programms
Und benutze ein VersionsSystem Ala SVN (so was geht auch ohne Server), dann könntest du jetzt einfach wieder zurückstellen
|
AW: Buttonabhängiges Schließen des Programms
@ Lucki: Das ist ja das Merkwürdige. Es gibt ja eine Fehlerbehandlung. Bei OnClientError (oder so ähnlich heisst das ja) wird ja auf jeden Fehler reagiert und der Fehlercode auf '0' gestellt, damit kein Fenster aufpoppt.
Aber irgendwie funktioniert das nicht mehr. @ DeddyH: Vielleicht könntest du nochmal für Deppen erklären, wie das funktionieren soll. (Wie du diese Unit machst / wie du auf die Komponenten dann zugreifst) [OFFTOPIC] @SirRufo: Da du das ansprichtst. Könntest du da mal ein paar Links posten, oder Stichwörter nach denen ich suchen kann? [/OFFTOPIC] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 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