Startseite ¦  was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews ¦  sonstiges
kylix ¦  tutorials ¦  online shop ¦  fotos ¦  Add&Win Gewinnspiel


Willkommen Gast. Bitte einloggen oder registrieren.
17.05.2012, 03:27:36
Übersicht Hilfe Suche Einloggen Registrieren

+  SwissDelphiCenter Forum
|-+  German Forums
| |-+  Datenbank Forum
| | |-+  Ein DELPHI-Tastatur-Ereignis canceln / killen ?
« vorheriges nächstes »
Seiten: [1] Drucken
Autor Thema: Ein DELPHI-Tastatur-Ereignis canceln / killen ?  (Gelesen 1821 mal)
delph5
Jr. Member
**
Offline Offline

Beiträge: 74



« am: 11.03.2002, 15:14:10 »

096 Ein DELPHI-Tastatur-Ereignis canceln / killen ?

1) Situation: In einem TDBGrid bewirkt ein Druck auf die ESC-Taste, daß es unsichtbar wird und die anderen "hidden" Grids wieder sichtbar werden. Das soll so bleiben.

Leider haben die DELPHI-Entwickler anscheinend vergessen, den Abbruch einer Insert- oder Edit-Aktion per ESC so zu gestalten, daß der Druck auf die ESC-Taste NICHT weiter-gereicht wird an die Anwendung. Das verwirrt den Anwender, der nur die Feld-Bearbeitung ab-brechen wollte.

[FONT COLOR="red"]2) Frage:[/FONT] Wie kann man im Ereignis "AfterCancel" den ESC-TastenDruck noch "zurück-pfeifen" ?

3) Eigene Tests: In der Online-Hilfe habe ich nichts gefunden, was einem "ClearDelphiKeyBuffer" o.ä. ent-sprechen würde.

Und alle anderen Ereignisse wie TForm.OnKeyPress (KeyPreView = True) und TDBGrid.OnKeyPress o.ä. erhalten zwar die Nachricht vom ESC-TastenDruck, können aber nicht entscheiden, ob es ein Tastur-Ereignis NACH einem CancelEdit gewesen war. (Also ein Fall für Key-Event-Experten ?).

Vermutlich ist die bedingungslose Löschung aller Tasten-Ereignisse im Ereignis "OnAfterCancel" die beste Lösung, oder ?

Danke für alle / "any" Tips !

.
Gespeichert
Thomas Stutz
Global Moderator
Hero Member
*****
Offline Offline

Beiträge: 1784



WWW
« Antworten #1 am: 11.03.2002, 15:36:58 »

Hi,

Folgender Code löscht alle Keys aus der Keyboard Queue:

[font  size=2 face="Courier New" color="#000000"]procedure EmptyKeyQueue;
var
  
Msg: TMsg;
begin
  while 
PeekMessage(Msg, 0, WM_KEYFIRST, WM_KEYLAST,
                    PM_REMOVE or PM_NOYIELD) do;
end;
[/font]
Gespeichert

(¯`·._tom_.·´¯)

Tipp: Viele Antworten auf Fragen gibt's hier:
http://www.swissdelphicenter.ch/de/tipsuchen.php
delph5
Jr. Member
**
Offline Offline

Beiträge: 74



« Antworten #2 am: 11.03.2002, 16:10:04 »

danke.
Gespeichert
Seiten: [1] Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC Prüfe XHTML 1.0 Prüfe CSS