Aquí tienes parte del movimiento:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
x: integer;
begin
for x:= 1 to 100 do
begin
shape1.Top := shape1.Top + 1;
shape1.Refresh;
Sleep(10);
end;
end;
Como verás le he agregado un refresh para obligarlo a que se dibuje antes de dar el siguiente paso. Por otro lado, tenías
shape1.Top:= +1;
Imagino que estabas pensando en una sintaxis tipo C
shape1.Top += 1;
sólo que no existe en Delphi.
// Saludos