![]() |
Pfeiltasten in eigener Komponente abfangen
Hi,
Ich meine Komponente müsste auf das Drücken einer Pfeiltaste reagieren können. Zumindest VK_LEFT und VK_RIGHT. Das erste Problem ist (bzw war), dass meine Komponente den Focus verliert, bei einem Tastendruck auf eine Pfeiltaste. Gelöst habe ich es jetzt so:
Delphi-Quellcode:
Das funktioniert, ist aber imo nicht wirklich schön. Zudem habe ich ein Problem, wenn meine Komponente die einzige auf der Form sein sollte... Dann kann sie nämlich den Focus gar nicht verlieren. Allerdings erhält sie trotzdem keine Benachrichtigung über den Tastendruck einer Pfeiltaste. Weder per WM_KEYDOWN noch per WM_CHAR.
procedure TConsole.WMKillFocus(var Msg: TWMKillFocus);
var key: TWMKey; begin SetFocus; if GetAsyncKeyState(VK_LEFT) < 0 then begin key.CharCode := VK_LEFT; WMChar(key); end else if GetAsyncKeyState(VK_RIGHT) < 0 then begin key.CharCode := VK_RIGHT; WMChar(key); end; end; Kann man da was tricksen? Gruß Neutral General |
Re: Pfeiltasten in eigener Komponente abfangen
Hallo!
Delphi-Quellcode:
... und das Control verliert den Fokus nicht mehr.
type
TMyClass = class protected procedure WMGetDlgCode(var Message: TWMGetDlgCode); message WM_GETDLGCODE; end; { ... } procedure TMyClass.WMGetDlgCode(var Message: TWMGetDlgCode); begin Message.Result := DLGC_WANTARROWS; end; |
Re: Pfeiltasten in eigener Komponente abfangen
Hey danke! :)
Ich schätze, wenn ich Arrows wante (Denglisch :love: :stupid: ), dann bekomm ich sie auch im KeyDown oder/und WM_CHAR oder? |
Re: Pfeiltasten in eigener Komponente abfangen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:58 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