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/)
-   -   Delphi OnKeyUp soll nur auf Entf Taste reagieren aber nicht auf Strg+Alt+Ent (https://www.delphipraxis.net/200321-onkeyup-soll-nur-auf-entf-taste-reagieren-aber-nicht-auf-strg-alt-ent.html)

Piro 9. Apr 2019 13:29

OnKeyUp soll nur auf Entf Taste reagieren aber nicht auf Strg+Alt+Ent
 
Moin zusammen,

irgendwie stehe ich auf dem Schlauch und finde keine passende Lösung.

In meiner Anwendung habe ich im OnKeyUp Event meines Grid folgende Logik programmiert.

Delphi-Quellcode:
procedure Tfrm_main.vst_tasksKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if Key = VK_DELETE then
   tbtn_tasks_menu_deleteClick(Self);

 if Key = VK_F5 then
 begin
   tbtn_tasks_menu_refreshClick(Self);
 end;
end;
Das funktioniert auch super. Nur wenn der Rechner mit Strg+Alt+Entf gesperrt wird und der Fokus auf der Anwendung liegt, wird das Event unfreiwilig ausgelöst.

Gibt es einen Zähler, der mir sagt, wie viele Tasten gedrückt wurden? Oder muss ich OnKeyPress nehmen damit es nicht passiert?

Wie kann ich dafür sorgen, dass kontrolliert wird, ob nur eine Taste gedrückt wurde. Also nur Entf oder F5 oder Insert zum Beispiel und nicht eine Kombination, wo eine Taste drin vorkommt.

Vielen Dank im Voraus.
Sven

hoika 9. Apr 2019 13:31

AW: OnKeyUp soll nur auf Entf Taste reagieren aber nicht auf Strg+Alt+Ent
 
Hallo,
GetKeyboardState vielleicht?

Ein Bsp.:
https://stackoverflow.com/questions/...have-the-focus

DieDolly 9. Apr 2019 13:38

AW: OnKeyUp soll nur auf Entf Taste reagieren aber nicht auf Strg+Alt+Ent
 
Kann es sein, dass das ein XE2 Problem ist? Oder Windows? Unter Rio 10.3 nicht nachstellbar. Ich frage in einer ListView OnKeyDown VK_DELETE ab. STRG+ENTF+DELETE führt meinen Code dennoch nicht aus.
Versuche es mal mit KeyDown statt KeyUp.

------

Uwe Raabe hatte die Lösung denke ich. Klappt zumindest bei mir ohne Probleme. Obwohl ich mit KeyDown auch keine hatte.

Uwe Raabe 9. Apr 2019 13:39

AW: OnKeyUp soll nur auf Entf Taste reagieren aber nicht auf Strg+Alt+Ent
 
Vielleicht hilft ein Seitenblick auf den ShiftState, in etwa so:

Delphi-Quellcode:
 if (Key = VK_DELETE) and (Shift = []) then

Schokohase 9. Apr 2019 13:42

AW: OnKeyUp soll nur auf Entf Taste reagieren aber nicht auf Strg+Alt+Ent
 
http://docwiki.embarcadero.com/Libra...es.TShiftState

Manchmal fragt man sich, warum die Doku so schlecht gepflegt wird, und dann und wann wozu es die überhaupt gibt, wenn dort keiner nachschaut.

Piro 9. Apr 2019 13:47

AW: OnKeyUp soll nur auf Entf Taste reagieren aber nicht auf Strg+Alt+Ent
 
Danke für die vielen Antworten und sorry wenn einige denken, ich würde die Doku nicht lesen.

Wenn ich weiß wo ich das Problem angehen, kann ich es auch besser nachlesen.

Werde die Tipps versuchen und es euch wissen lassen.

Schokohase 9. Apr 2019 14:07

AW: OnKeyUp soll nur auf Entf Taste reagieren aber nicht auf Strg+Alt+Ent
 
Zitat:

Zitat von Piro (Beitrag 1429906)
Danke für die vielen Antworten und sorry wenn einige denken, ich würde die Doku nicht lesen.

Wenn ich weiß wo ich das Problem angehen, kann ich es auch besser nachlesen.

Du hättest das Problem mit Neugier („Was macht dieses seltsame TShiftState eigentlich?“) lösen können, und die (Neugier) kommt vor dem Wissen und auch praktischerweise ganz ohne (Wissen) aus.

Piro 9. Apr 2019 14:16

AW: OnKeyUp soll nur auf Entf Taste reagieren aber nicht auf Strg+Alt+Ent
 
Ich habe TShiftState naiv mit der Shift-Taste verbunden.

Werde mich mal schlau machen.

Also wenn ich die Logik ins OnKeyDown Event verschieben, ist das Problem gelöst.

Danke alle für die schnellen Antworten und Anregungen.

Piro 9. Apr 2019 14:26

AW: OnKeyUp soll nur auf Entf Taste reagieren aber nicht auf Strg+Alt+Ent
 
Ok,

Danke Uwe. Das ist die beste Lösung.

Zitat:

Vielleicht hilft ein Seitenblick auf den ShiftState, in etwa so:
Delphi-Quellcode:
 if (Key = VK_DELETE) and (Shift = []) then

Tja, hätte ich mal meine Neugier etwas spielen lassen.

Nochmals an alle vielen Dank. Das ist ein geniales Forum hier.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 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