Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Pfeiltasten benutzen zum Bewegen eines Shapes (https://www.delphipraxis.net/191275-pfeiltasten-benutzen-zum-bewegen-eines-shapes.html)

Maurooon 28. Dez 2016 12:59

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:
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;
LG

a.def 28. Dez 2016 13:11

AW: Pfeiltasten benutzen zum Bewegen eines Shapes
 
Setz in deinem FormCreate-Event mal
Delphi-Quellcode:
KeyPreview := True
dann sollte es klappen. Sicher bin ich mir nicht.

himitsu 28. Dez 2016 13:12

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.

a.def 28. Dez 2016 13:13

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.

stahli 28. Dez 2016 13:37

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.

Maurooon 28. Dez 2016 13:41

AW: Pfeiltasten benutzen zum Bewegen eines Shapes
 
Zitat:

Zitat von a.def (Beitrag 1357340)
Setz in deinem FormCreate-Event mal
Delphi-Quellcode:
KeyPreview := True
dann sollte es klappen. Sicher bin ich mir nicht.


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?

himitsu 28. Dez 2016 13:49

AW: Pfeiltasten benutzen zum Bewegen eines Shapes
 
Zitat:

Zitat von Maurooon (Beitrag 1357345)
Aber trotzdem bewegt sie der Cursor auf den Buttons.
...
Jemand eine Lösung dafür?

stahli


Zitat:

Zitat von a.def (Beitrag 1357342)
Ich persönlich mag es lieber im Code denn dann hat man alles an zentraler Stelle und muss nicht erst im IO suchen.

Du erstellst auch alle Controls manuell und setzt deren Properties im Code?

Papaschlumpf73 28. Dez 2016 13:56

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.

a.def 28. Dez 2016 14:19

AW: Pfeiltasten benutzen zum Bewegen eines Shapes
 
Zitat:

Zitat von Papaschlumpf73 (Beitrag 1357347)
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.


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;

Maurooon 28. Dez 2016 14:28

AW: Pfeiltasten benutzen zum Bewegen eines Shapes
 
Zitat:

Zitat von stahli (Beitrag 1357344)
Nach der Behandlung kann man m.E. Key noch auf #0 setzen, damit ein focusiertes Control nicht noch auf die Taste reagiert.

Da ich aber ja key: word habe, motzt er rum wenn ich key := #0 setzen möchte


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:54 Uhr.
Seite 1 von 2  1 2      

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