procedure StepIt(const APB: TProgressBar; const APos: Integer);
begin
APB.Position := APos;
//workaround for progressbar animation bug(vista+)
if APos < APB.Max then
begin
APB.Position := APos + 1;
APB.Position := APB.Position - 1;
end
else
begin
APB.Max := APB.Max + 1;
APB.Position := APB.Max;
APB.Position := APB.Position - 1;
APB.Max := APB.Max - 1;
end;
//end workaround
Sleep(200);
end;
procedure TForm1.ButtonStartClick(Sender: TObject);
begin
Progressbar1.Visible := True;
StepIt(ProgressBar1, 3);
StepIt(ProgressBar1, 13);
StepIt(ProgressBar1, 20);
StepIt(ProgressBar1, 25);
StepIt(ProgressBar1, 30);
StepIt(ProgressBar1, 40);
StepIt(ProgressBar1, 45);
StepIt(ProgressBar1, 53);
StepIt(ProgressBar1, 60);
StepIt(ProgressBar1, 70);
StepIt(ProgressBar1, 80);
StepIt(ProgressBar1, 92);
StepIt(ProgressBar1, 100);
Progressbar1.Visible := False;
end;