Nimm statt des Ereignisses FormKeyDown einfach FormShortCut (OnShortCut) des Formulars.
Die Tasten kannst du da so auswerten:
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;