![]() |
OnExit wird beim Drücken von <Return> nicht aufgerufen
Hallo zusammen!
Warum wird die OnExit-Procedure eines Edits nicht aufgerufen, wenn die <Return>-Taste drücke und somit der OK-Button (mit Einstellung Default=true) den Focus erhält und dessen OnClick-Procedure ausgeführt wird? Klicke ich dagegen auf den OK-Button, wird die OnExit-Procedure ausgeführt! Beide Male verliert das Edit-Feld doch den Focus! Vielen Dank für Eure Hilfe. |
AW: OnExit wird beim Drücken von <Return> nicht aufgerufen
Zitat:
Bei mir behält das Editfeld korrekt den Fokus, wenn durch die Enter-Taste der Button ausgelöst wird und das wird auch korrekt so dargestellt. (Warum sollte dabei auch der Fokus wechseln?) Mit Turbo Delphi wie in deinem Profil steht kann ich diesen Grafikfehler genauso wenig reproduzieren wie mit Delphi XE2. Mit welcher Delphiversion und welchem Betriebssystem passiert das denn bei dir? |
AW: OnExit wird beim Drücken von <Return> nicht aufgerufen
Ich arbeite z.Zt. noch - wie beschrieben - mit Turbo Delphi unter WinXP.
Vielleicht ist meine Annahme, dass das Edit-Feld beim Drücken von <Return> den Focus verliert, der Fehler. Wenn das so gewollt ist, stellt sich für mich die Frage, wie ich das in diesem Fall "korrigieren" kann!? Das OnExit des Edits im OnClick des Buttons aufzurufen dürfte nicht die Lösung sein, da beim Klicken auf den Ok-Button das Ganze ja u.U. 2x aufgerufen werden würde - einmal bei Focus-Verlust des Edits UND im OnClick. Andere Alternativen? |
AW: OnExit wird beim Drücken von <Return> nicht aufgerufen
Zitat:
Delphi-Quellcode:
Ob die Logik insgesamt so sinnvoll ist, musst du selbst wissen.
procedure DoSomething;
begin end; procedure TfrmSomething.btnStartClick(Sender: TObject); begin if edtSomething.Focused then DoSomething; end; procedure TfrmSomething.edtSomethingExit(Sender: TObject); begin DoSomething; end; |
AW: OnExit wird beim Drücken von <Return> nicht aufgerufen
Warum so kompliziert?
Einfach im OnClick des Burtons den Focus auf den selbigen setzen lassen, dann hat man genau die Reaktion, als ob man auf den Button klicken würde ;) |
AW: OnExit wird beim Drücken von <Return> nicht aufgerufen
Das klappt soweit ganz gut!
Allerdings kriege ich Probleme, wenn in der OnExit-Procedure Tests vorgenommen werden und 'ne Sicherheitsabfrage erscheint. Wird die Sicherheitsabfrage bejahrt, so erhält das Edit wieder den Focus - aus der OnOkClick funktioniert das natürlich nicht, da die OnExit keinen Wert zurück liefert und der Dialog geschlossen wird - muss ich wohl 'nen Flag im Dialog setzten - oder gibt's da Alternativen? |
AW: OnExit wird beim Drücken von <Return> nicht aufgerufen
Du hast nicht etwa beim Button, im IO, etwas bei ModalResult angegeben?
Wenn ja, dann ist das der Fehler. Setz dieses besser im Erfolgsfall manuell im OnClick des Buttons. |
AW: OnExit wird beim Drücken von <Return> nicht aufgerufen
Was mir sauberer vorkommt:
Lagere das Überprüfen der Editinhalte in eine extra Methode auf, die du in OnExit und in ButtonClick aufrufst. Sind die im ButtonClick Werte korrekt, führe die eigentliche Aufgabe des Buttons durch. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:11 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