进度条的数值在for循环执行完才显示?该如何处理

进度条的数值在for循环执行完才显示?
procedure TForm1.Button1Click(Sender: TObject);
var 
  i:integer;
begin
  ProgressBar1.Max:=1000;
  ProgressBar1.Position :=0;
  for i:=0 to 1000 do
  begin
  Application.ProcessMessages;
  ProgressBar1.Position :=ProgressBar1.Position +1;
  end;
  label1.caption:='已下载: '+ intTostr(i);//
end;


问题是:label1.caption一下就显示为1000,我想让其一点一点增长,不知怎么写?谢谢!!!

------解决方案--------------------
这是因为你的for循环中没有什么耗时间的操作
所以,进度条长的太快了,你看起来就象是一下就长满了

label1由于在for循环外面,所以循环完成后才会执行
label1.caption:='已下载: '+ intTostr(i);
这一句
这时,i已经=1000了,当然就一下就显示1000
如果想让它慢慢增加,应该把这句放到for循环中
------解决方案--------------------
这是因为你循环中没有做什么更多的操作,很快就过去了,所以你看不见一步一步增长,你加一句:sleep(300);试试。
------解决方案--------------------
循环内没有实际耗时的代码 执行得太快了
真要一点点显示 可以放个sleep()
------解决方案--------------------
delay(300);或sleep(300);
------解决方案--------------------
for i:=0 to 1000000 do
试试