Перехват курсорных клавиш

Вы можете перехватывать нажатие курсорных клавиш на уровне приложения:

Создайте HandleMessages как метод формы и затем назначьте его Application.HandleMessages.

Procedure tMessages ( Var Msg : tMsg; Var Handled : Boolean );
Begin

If ( Msg.Message = WM_KeyDown ) And
( Msg.wParam In [VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT] ) Then
Begin
Case Msg.wParam Of
VK_UP    : ShowMessage ( 'Нажата стрелка вверх' );
VK_DOWN  : ShowMessage ( 'Нажата стрелка вниз' );
VK_LEFT  : ShowMessage ( 'Нажата стрелка влево' );
VK_RIGHT : ShowMessage ( 'Нажата стрелка вправо' );
End;
Handled := True;
End;
End;

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage := HandleMessages;
end;