Das Sleep benutzt werden muss (ist 'ne Vorgabe), dürfte ein Timer ausscheiden.
Delphi-Quellcode:
procedure Tform1.Rennen;
var
iSleep : Integer;
iRandom : Integer;
begin
Randomize; // Je nach Delphiversion (insbesondere bei älteren) erforderlich.
// Sollte aber nur einmal aufgerufen werden, daher ins FormCreate verschieben.
iSleep := 100; // Wertebereich für die Pausen per Sleep, eventuell anpassen.
// Die Pausen werden dadurch unterschiedlich lang.
iRandom := 5; // Wertebereich für die zufällige Verschiebung der Bilder, eventuell anpassen.
// Die Anzahl der Pixel, um die verschoben wird, ändert sich je Schleifendurchlauf und je Bild.
if (Image1.Left < 400) and (Image2.left < 400) and (Image3.left < 400) then begin
repeat
Image1.Left := Image1.Left + Random(iRandom);
Image2.Left := Image2.Left + Random(iRandom);
Image3.Left := Image3.Left + Random(iRandom);
Application.ProcessMessages;
Sleep(Random(iSleep));
until (Image1.left >= 399) or (Image2.Left >= 399) or (Image3.Left >= 399);
end;
end;
Nur als Idee hingedaddelt, keine Ahnung, ob sich dadurch was in zielgerichteter Form ändert.