ale já bych to upravil takto:
procedure TForm1.MyIdleHandler(Sender: TObject; var done: Boolean);
begin
if ProgressBar1.Position <100 then ProgressBar1.Position := ProgressBar1.Position + 1
else ProgressBar1.Position := 0;
Done := False;
end;
Pro nějakou trvalou činnost v době "nečinnosti" aplikace bych ovšem tuto činnost umístil do separátního threadu a přiřadil mu prioritu tpIdle.