进度条最大值100,最小值0,步长1,可是如下代码运行进度条乎一下就到100了,我想让他慢点显示,一点一点增加怎么办?谢谢
for i:=1 to 100 do
begin
 progressbar1.Position:=progressbar1.Position+i;end;

解决方案 »

  1.   

    for i:=1 to 100 do
    begin
     progressbar1.Position:=progressbar1.Position+i;
     sleep(500);
    end;
      

  2.   

    for i:=1 to 100 do
    begin
     Application.ProcessMessage;
     progressbar1.Position:=progressbar1.Position+i;
     sleep(500);
    end;
      

  3.   

    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    if progressbar1.Position = 100 then Timer1.Enabled := False;
    progressbar1.Position:=progressbar1.Position+1;
    end;
      

  4.   

    for i:=1 to 100 do
    begin
     Application.ProcessMessage;
     progressbar1.Position:=progressbar1.Position+i;
     sleep(500);
     mainForm.update;
    end;
      

  5.   

    汗,纯粹为了要效果而而写的代码,等到你真正能够用到的时候(处理时间比较长)再用吧。用sleep延出来的时间有啥意思啊!
      

  6.   

    这个问题用睡到自然醒的Timer事件可以实现,但是我这个进度条的窗体是个子窗体想当这个进度条窗体show时Timer才开始要不然还没等调用这个窗体时进度条在幕后就进行了。谢谢大家!
      

  7.   

    把Timer的Enabled设置为False;
    在进度窗体上的OnShow事件里:
    Timer1.Enabled := True;
      

  8.   

    完全做效果的话用Timer好了,timer里就progressbar1.StepIt;
    不过一般progressbar用来弄效果好象都得用线程