进度条的数值在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
试试
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
试试