да, лучше на таймер поставить а если хочешь независающий цикл, то Code: procedure sleep(ms:cardinal); var i:cardinal; begin i:=GetTickCount; repeat Application.ProcessMessages; until GetTickCount-i>=ms; end;