Du mußt den Verbschiebevorgang unterteilen. Hier ein Beispiel mit Timer.
Für das Beispiel brauchst du einen Timer und einen Button:
Delphi-Quellcode:
const
AnzahlSchritte = 10;
var
VerschiebenUm: Integer = 0;
procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Interval := 40;
Timer1.Enabled := False;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Tag := AnzahlSchritte; // 10'er Schritte
VerschiebenUm := 500; //Anzahl Pixel
Timer1.Enabled := True;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Timer1.Tag > 0 then
begin
Timer1.Tag := Timer1.Tag - 1;
Button1.Left := Button1.Left + (VerschiebenUm div AnzahlSchritte);
end
else
begin
Timer1.Enabled := False;
VerschiebenUm := 0;
end;
end;