Hallo,
ich habe ein kleines Problem.
Und zwar habe ich ein Formular mit mehreren TButtons TPageControls.
Außerdem befindet sich ein TImage im Formular.
Wenn sich der Mauszeiger innerhalb des TImage befindet, dann soll der Nutzer den Mauszeiger auch mittels der Pfeiltasten bewegen können. Aber eben nur, wenn sich der Mauszeiger innerhalb des Image befindet.
Habe es wie folgt programmiert:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| procedure Tfrm_haupt.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if inside_farbdruck = True then begin if key = VK_LEFT then SetCursorPos(Mouse.CursorPos.X - 1, Mouse.CursorPos.Y); if key = VK_RIGHT then SetCursorPos(Mouse.CursorPos.X + 1, Mouse.CursorPos.Y); if key = VK_UP then SetCursorPos(Mouse.CursorPos.X, Mouse.CursorPos.Y - 1); if key = VK_DOWN then SetCursorPos(Mouse.CursorPos.X, Mouse.CursorPos.Y + 1); end; end;
procedure Tfrm_haupt.img_welle_farbdruckMouseEnter(Sender: TObject); begin inside_farbdruck := True; img_welle_farbdruck.Cursor := crCross; end;
procedure Tfrm_haupt.img_welle_farbdruckMouseLeave(Sender: TObject); begin inside_farbdruck := False; img_welle_farbdruck.Cursor := crDefault; end; |
Das geht soweit auch, nur leider passiert es manchmal, dass nicht der Mauszeiger bewegt wird, sondern der Fokus auf den Buttons springt, wenn man die Pfeiltasten drückt. Oder die PageControls durchgeschaltet werden.
Habe dann gedacht: "gut, dann nehme ich nicht die Pfeiltasten, sondern, A, S, D, W".
Habe dann die Virtual Key Codes durchgeschaut und für A wäre es dann:
Delphi-Quelltext
1: 2:
| if key = (41) then SetCursorPos(Mouse.CursorPos.X - 1, Mouse.CursorPos.Y); |
Aber das geht gar nicht, beim Debuggen habe ich gesehen, dass er die if-Anweisung einfach überspringt.
Wie kann ich das Problem denn am Besten lösen?
Danke für eure Tipps!
Tom