![]() |
Mit Escape Fenster schliessen bzw. Eingabe zurücksetzen
Hi allerseits,
ich möchte mein Formular mit Escape zusätzlich zu Alt+F4 schliessen können. Das bereitet mir kein Problem, ich habe KeyPreview des Formulars auf True gesetzt und frage beim OnKeyDown des Formulars auf 27 ab, dann Self.Close. Soweit so gut. Falls allerdings zuvor etwas in ein Eingabefeld eingegeben wurde, dann möchte ich den Wert des Eingabefeldes beim Betätigen von ESC zurücksetzen und erst beim nächsten ESC das Fenster schliessen. Das ESC kommt bei dem Eingabefeld allerdings nicht an, da es ja zuvor vom OnKeyDown des Formulars abgearbeitet wird. Wie kann ich dieses gewünschte Verhalten erzwingen? Danke |
Re: Mit Escape Fenster schliessen bzw. Eingabe zurücksetzen
Du kannst ja onformkeydown das machen:
Delphi-Quellcode:
Dann machst du noch dass er beim Editkeydown auch das form1keydown aufruft und bei allen anderen Kompos auch noch.
if key=27 then
if edit1.text='' then close else edit1.text:=''; Allerdings würde ich dir es auf keinen Fall empfehlen so was einzuprogrammieren, weil wenn der (dumme) User jetzt versehentlich 2mal auf ESC kommt oder zu lange draufbleibt oder versehentlich draufkommt oder was auch immer... Die ESC-Taste würde ich nicht mit einer close-Funktion belegen. |
Re: Mit Escape Fenster schliessen bzw. Eingabe zurücksetzen
würde sagen du führst ein flag ein.
das setz du zunächst auf false. im onchange des edits setzt du es auf true. dann beim onkeydown der form überprüfst du folgendes:
Delphi-Quellcode:
und beim onkeydown des edits machst du folgendes:
if key = VK_ESCAPE then
if flag = false then Close;
Delphi-Quellcode:
if key = VK_ESCAPE then
begin Zuruecksetzen; flag := false; end; |
Re: Mit Escape Fenster schliessen bzw. Eingabe zurücksetzen
Danke, funzt!!
Fenster mit Escape schliessen halte ich im Sinne ergonomischer Programmierung für eine gute Idee, braucht man doch nicht zwei Tasten (Alt+F4) gleichzeitig zu drücken. Natürlich muss bei kritischen Dingen eine Abfrage erfolgen ("Wirklich schliessen?"), aber die muss man bei Alt+F4 ohnehin machen. |
Re: Mit Escape Fenster schliessen bzw. Eingabe zurücksetzen
Und wenn Du jetzt noch so schlau bist, die Tab-Taste durch Enter zu ersetzen (besser ergänzen), dann ist das Programm nicht nur lediglich "Windows-Standard" von Mickysofts Segen, sondern es nähert sich einer richtigen Industrienorm zumindest an. ISO88?? :gruebel:
|
Re: Mit Escape Fenster schliessen bzw. Eingabe zurücksetzen
ja, hab ich gemacht, Enter reagiert wie Tab, die Pfeiltasten rauf und runter ebenfalls. Ich denke dass es ganz wichtig ist, eine Bedieneroberfläche intuitiv und vor allem auch ohne Einsatz der Maus bzw. Klammeraffengriff mit 12 Fingern bedienen zu können. Schade nur dass Delphi (und nicht zuletzt Windoof) da so wenig Möglichkeiten von sich aus bietet.
Allen Delphinisten wünsche ich schöne Nikolausgeschenke und einen vollen Stiefel! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 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 by Thomas Breitkreuz