procedure ...    begin
         procedure1;  //此过程对应进度条1         procedure2;  //此过程对应进度条2
    end;  这个程序有两过程,procedure1及procedure2,     如何实现当执行procedure1时显示一个进度条1,procedure1执行完后进度条1消失   接着执行进度条2,procedure2执行完后进度条2消失。
     即如何实现进度条与相关过程同步。

解决方案 »

  1.   

    这样的示列:
    (如copy 文件夹,里面的文件数量很多 )可用 
    progressBar1.max = i ;{ i 只要与文件数量大致相当就可以,
                          不很精确控制进程条的 position,但用户也看不出来}
    reapt
    copyFile(f1,tof1)
    progressBar1.Setpby(1) 
    until 所有文件copy结束
    if progressBar1.Position < progressBar1.Max then
    progressBar1.position := progressBar1.Max; 
    //----------------- 过程1完成
    如果copy 一个(少量)很大的文件(上十M)
    可用TFileStream   copy文件
    这样可以时刻的到文件的已复制的大小与总的大小(这样可以精确控制进程条的position)
    //----------------------过程1完成你要进度条消失,把它的visible :=False 也可以
      

  2.   

    if ProgressBar1.Position = ProgressBar1.Max then
    begin
      ProgressBar1.Visible :=False;
      ProgressBar2.Visible :=True;
      Progress2Step;
    end
    else
      ProgressBar1.StepIt;procedure Progress2Step;
    begin
      while (ProgressBar2.Position < ProgressBar2.Max) do
        ProgressBar2.StepIt;
    end;
      

  3.   

    一个进度条就可以了, 加一个Label, 不就可以标识吗你要的又不是总体进度与部分进度的功能procedure1完了以后
    改一下Label的提示
    再设一下ProcessBar的Max,Postion就可以了
      

  4.   

    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      ProgressBar1.Position:=ProgressBar1.Position+10;
      if ProgressBar1.Position=100 then
      begin
      ProgressBar1.Hide;
      ProgressBar2.Position:=ProgressBar2.Position+10;
      end;
    end;