Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Key Event weitergabe verhindern,oder frage woher Event kommt (https://www.delphipraxis.net/52083-key-event-weitergabe-verhindern-oder-frage-woher-event-kommt.html)

Sven Janssen 23. Aug 2005 17:16


Key Event weitergabe verhindern,oder frage woher Event kommt
 
Nabend,

ich hab ein unschönes Verhalten und möchte dies endlich einmal in den Griff bekommen.
Zum einen wäre da das beim Drücken der Eingabetaste (Return) in einem Messagedlg die Ereignisse keyDown und keyUp das Return auch noch geschickt bekommen.
Wenn ich z.b auf einem Editfeld bei vk_return etwas ausführe und eine messagedlg Anzeige und diese per Return wegdrücke, dann wird das vk_return direkt wieder an das Editfeld gesendet weil es noch den Fokus hat und man befindet sich in einer Endlosschleife.

Zum anderen habe ich das Problem, das in einer Form auf einem TListView bei vk_return etwas ausgeführt wird. Ich schließe das Fenster und lande in der vorherigen Form wo der Fokus auf einem Editfeld sitz. Und schon habe ich das Problem von oben wieder.

Wie kann ich in Delphi die Eventqueue unterbrechen?
Ich kenne es von anderen Sprachen das ich eigentlich das Event selber weitergeben muss, aber Delphi scheint dies von selber zu machen.
In einem key Event die var Variable key auf #0 zu setzen bringt übrigens gar nichts.

Gruß Sven

marabu 24. Aug 2005 19:46

Re: Key Event weitergabe verhindern,oder frage woher Event k
 
Hallo Sven,

eine Kette von Ereignis-Behandlungsroutinen kannst du - hoffentlich auch in D4 - zuverlässig über eine stumme Exception unterbrechen:

Delphi-Quellcode:
Abort;
Grüße vom marabu

tigerman33 25. Aug 2005 18:18

Re: Key Event weitergabe verhindern,oder frage woher Event k
 
In den dunklen Untiefen meines Hirns in die nie die Sonne scheint meine ich mich zu erinnern, dass man wenn man direkt die Ereignisbehandlungsroutinen (also die, die die Message abfangen) einen Parameter Handled (entweder als Var-Parameter oder im TMessage record) auf true setzen kann, damit die Eventqueue beendet wird. Kanns bloß jetzt leider nicht nachprüfen.

Schlagt mich, wenns nicht stimmt. :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17: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 by Thomas Breitkreuz