Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Programm reagiert nicht bei Spacetaste (https://www.delphipraxis.net/215154-delphi-programm-reagiert-nicht-bei-spacetaste.html)

DelphiUser123 18. Mai 2024 15:05

Delphi Programm reagiert nicht bei Spacetaste
 
Hallo liebes Forum,
ich habe ein kleines Computerspiel das man mit den Pfeiltasten bedienen kann sowie mit der Enter Taste. Es ist eine Firemonkey App (FMX). Das OnKeydown Event sieht so aus:
Code:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char;
  Shift: TShiftState);
begin ... if (Key=vkspace) then begin Showmessage('TEST'); end; end;
Das Programm reagiert auf alle möglichen Tasten außer der Space Taste. Ich habe mir daran die Zähne ausgebissen.
Vielen Dank für Antworten.

Uwe Raabe 18. Mai 2024 15:31

AW: Delphi Programm reagiert nicht bei Spacetaste
 
Hast du mal versucht, den Code zu ermitteln, der bei der Leertaste ankommt? Oder wird die Routine gar nicht ausgeführt?

Michael II 18. Mai 2024 16:29

AW: Delphi Programm reagiert nicht bei Spacetaste
 
Frag doch stattdessen KeyChar = ' ' ab.
Key hat für viele Tasten den Wert 0.

himitsu 18. Mai 2024 16:40

AW: Delphi Programm reagiert nicht bei Spacetaste
 
Key sollte doch immer einen Wert haben, also quasi die ID der Taste.
VK_SPACE, bzw. vkSpace

Aber jede Taste kann je nach Zustand unterschiedliche Chars haben.
Shift-State (Shift, Strg und Alt), sowie vorherige Tasten, das Tastaturlayout und dann noch der Eingabemodus (IME).
So kann vkSpace auch ein ^ oder ` oder ´ sein (deutsches Tastaturlayout).

Aber natürlich bekommt nur der die Tastaturereignisse, welcher aktiv ist.
Hmmmmm, ein KeyPreview gibt es im FMX nicht?
PS: Die Form bekommt bei einem z.B. TEdit mit ControlType=Styled kein Event, aber bei einem TEdit mit ControlType=Platform schon (Windows).
Hätte es eher andersrum erwartet :stupid:

Michael II 18. Mai 2024 17:23

AW: Delphi Programm reagiert nicht bei Spacetaste
 
Ich habe das key=0 auch nicht erwartet. Aber ist offenbar so in FMX/Windows (getestet D11.2).

jaenicke 18. Mai 2024 21:33

AW: Delphi Programm reagiert nicht bei Spacetaste
 
Den Sinn verstehe ich nicht (steht in der WndProc):
Delphi-Quellcode:
      if (([ssAlt, ssCtrl, ssCommand] * Shift) = []) then
        Key := 0;
Der Zeichencode wird absichtlich entfernt, wenn nicht Strg, Alt oder Windows gedrückt ist.

Warum der Zeichencode nicht immer drin ist und das Textzeichen nur, wenn es Sinn macht, verstehe ich nicht.

DelphiUser123 21. Mai 2024 13:55

AW: Delphi Programm reagiert nicht bei Spacetaste
 
Zitat:

Zitat von Michael II (Beitrag 1536836)
Frag doch stattdessen KeyChar = ' ' ab.
Key hat für viele Tasten den Wert 0.

Danke, es hat geklappt mit diesem Befehl!


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