![]() |
Delphi-Version: 5
Pfeiltasten benutzen zum Bewegen eines Shapes
Hallo,
ich hoffe ihr hattet alle schöne Feiertage. Hier zu meiner Frage: Ich habe ein Shape und mehrere Buttons auf meiner Maske. Ich möchte nun das Shape mit den Pfeiltasten bewegen. drücke ich aber die Pfeiltasten, dann bewegt sich der Cursor sag ich mal nur auf den Buttons, wie man das eben kennt. was muss ich tun, damit sich tatsächlich NUR das Shape beweget? Meine Prozedur sieht wie folgt aus:
Code:
LG
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState
); begin if key = vk_left then Shape16.Left := Shape16.Left - 2; if key = vk_right then Shape16.Left := Shape16.Left + 2; if key = vk_up then Shape16.Top := Shape16.Top - 2; if key = vk_down then Shape16.Top := Shape16.Top + 2; end; |
AW: Pfeiltasten benutzen zum Bewegen eines Shapes
Setz in deinem FormCreate-Event mal
Delphi-Quellcode:
dann sollte es klappen. Sicher bin ich mir nicht.
KeyPreview := True
|
AW: Pfeiltasten benutzen zum Bewegen eines Shapes
Ich würde das ja gleich im OI setzen. :angle:
Und dann muß man aufpassen, dass der Fokus nicht in einem Control liegt, welches diese Tasten vorher abfängt. |
AW: Pfeiltasten benutzen zum Bewegen eines Shapes
Oder so :thumb:
Ich persönlich mag es lieber im Code denn dann hat man alles an zentraler Stelle und muss nicht erst im IO suchen. |
AW: Pfeiltasten benutzen zum Bewegen eines Shapes
Nach der Behandlung kann man m.E. Key noch auf #0 setzen, damit ein focusiertes Control nicht noch auf die Taste reagiert.
|
AW: Pfeiltasten benutzen zum Bewegen eines Shapes
Zitat:
Also jetzt funktioniert schon mal das Bewegen des Shapes, vielen Dank! Aber trotzdem bewegt sie der Cursor auf den Buttons. Da ich unter den Buttons auch eine Trackbar hab verstellt diese sich auch unglücklicherweise noch und führt so noch andere Dinge aus.... Jemand eine Lösung dafür? |
AW: Pfeiltasten benutzen zum Bewegen eines Shapes
Zitat:
Zitat:
|
AW: Pfeiltasten benutzen zum Bewegen eines Shapes
Nimm statt des Ereignisses FormKeyDown einfach FormShortCut (OnShortCut) des Formulars.
Die Tasten kannst du da so auswerten:
Delphi-Quellcode:
if Msg.CharCode = VK_LEFT then begin [DeinCode]; Handled:=true; end;
Durch das Handled:=true wird dann der Tastenanschlag nicht mehr an andere Komponenten weiter gegeben. |
AW: Pfeiltasten benutzen zum Bewegen eines Shapes
Zitat:
Oder so
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin if Key = vk_left then Shape1.Left := Shape1.Left - 2; if Key = vk_right then Shape1.Left := Shape1.Left + 2; if Key = vk_up then Shape1.Top := Shape1.Top - 2; if Key = vk_down then Shape1.Top := Shape1.Top + 2; Key := 0; // <== end; |
AW: Pfeiltasten benutzen zum Bewegen eines Shapes
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:27 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