Тогда примерно так(пишу с головы, не проверял):
var
cube:image;
key,oldkey:integer;
x:integer;
b:boolean;
begin
cube:=loadimage('/1.png');
repeat
b:=true;
key:=KeyToAction(GetKeyPressed);
oldkey:=key;
//--блок проверки клавиши
if (key=GA_LEFT)and b then
while (x<pw-5)and(key=oldkey) do
begin
b:=false;
DrawImage(cube,x,y);
repaint;
x:=x+1;
key:=KeyToAction(GetKeyPressed);
Delay(50);
end;
//--конец блока проверки клавиши
//--блок проверки клавиши
if (key=GA_RIGHT)or b then
while (x>=5)and(key=oldkey) do
begin
b:=true;
DrawImage(cube,x,y);
repaint;
x:=x-1;
key:=KeyToAction(GetKeyPressed);
Delay(50);
end;
//--конец блока проверки клавиши
//Аналогично [блок проверки клавиши] для GA_UP и GA_DOWN
Delay(50);
until false;
По логике примерно так, хотя набирать не пробовал.