Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Prism Mit Escape Fenster schliessen bzw. Eingabe zurücksetzen (https://www.delphipraxis.net/58308-mit-escape-fenster-schliessen-bzw-eingabe-zuruecksetzen.html)

eddie11 5. Dez 2005 13:33


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

ichbins 5. Dez 2005 13:38

Re: Mit Escape Fenster schliessen bzw. Eingabe zurücksetzen
 
Du kannst ja onformkeydown das machen:

Delphi-Quellcode:
if key=27 then
  if edit1.text='' then
    close
  else
    edit1.text:='';
Dann machst du noch dass er beim Editkeydown auch das form1keydown aufruft und bei allen anderen Kompos auch noch.

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.

mumu 5. Dez 2005 13:38

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:
  if key = VK_ESCAPE then
    if flag = false then
      Close;
und beim onkeydown des edits machst du folgendes:
Delphi-Quellcode:
  if key = VK_ESCAPE then
  begin
    Zuruecksetzen;
    flag := false;
  end;

eddie11 5. Dez 2005 15:35

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.

Hansa 5. Dez 2005 17:12

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:

eddie11 6. Dez 2005 06:35

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 08:46 Uhr.

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