Si estas programando algun tipo de juego y necesitas, ademas de los movimientos de arriba, abajo, izquierda y derecha, movimientos en diagonal puedes usar algo como esto:
Código Delphi
[-]
if (GetKeyState(VK_LEFT) and $80) > 0 then
Imagen.Left:= Imagen.Left - 10;
if (GetKeyState(VK_RIGHT) and $80) > 0 then
Imagen.Left:= Imagen.Left + 10;
if (GetKeyState(VK_UP) and $80) > 0 then
Imagen.Top:= Imagen.Top - 10;
if (GetKeyState(VK_DOWN) and $80) > 0 then
Imagen.Top:= Imagen.Top + 10;