我用Delphi7.0写了个固件升级工具,由时升级需要几秒钟,我想弄个进度条好看些。该怎么用showmodal在另个Form窗口中显示进度条?
具体是这样的
 
//升级程序按钮启动,升级开始
procedure TUpdate_Form.Update_SpeedButtonClick(Sender: TObject);
var
...
begin
  
 ...
  showmessage(‘升级完成!’);
end

解决方案 »

  1.   

    不要用showmodal,不然(假如A窗体里ShowModal B窗体)A窗体得等到B窗体关闭了以后才能再往下走,你的进度条怎么来?
    用Show + fsStayOnTop好了
      

  2.   

    别用showmodal了,showmodal后,下面的代码就不执行了,除非你有另外一个线程去单独处理进度把窗体设置成前端显示吧,然后show出来就可以了
      

  3.   

    最好的办法你可以用两个窗口来模拟SHOWMODAL,让你的窗口背景条件下也可以执行,
    你的前边的窗口,在现实的时候可以ENABLEWINDOW父窗口就可以了
      

  4.   

    同意2楼观点将显示进度条的窗体设为fsStayOnTop
    进度开始的时候Show,完成的时候Close
      

  5.   

    大家不要给我讲理论嘛~给小段代码撒,我不会呢~编这个固件升级工具时,我才只学了一个星期的Delphi和PASCAL
      

  6.   

    ...
    var
      vfrmProgress: TfrmProgress;
    begin
      vfrmProgress := TfrmProgress.create(nil);
      try
        vfrmProgress.Show;
        //调用你自己的代码;
      finally
        FreeAndNil(vfrmProgress);
      end;
      
      

  7.   


    如果不想窗体被隐藏,可设置vfrmProgress.formstyle := fsStayOnTop; 
      

  8.   

    调用窗体里使用
    Application.CreateForm(TfrmProgress, frmProgress);
    frmProgress.ShowModal;
    带进度条的升级窗体(frmProgress)中创建一个线程:
    type
      ThreadProgress = class(TThread)
      protected
        procedure Execute; override;
      end; 
    ……
    var
      PT:ThreadProgress;
    //升级函数
    procedure ThreadProgress.Execute;
    begin
      inherited;
      //你升级的程序代码
    end; 
    //在启动升级部分启动线程:
    PT:=ThreadProgress.create(false);
    //在结束部分释放
    PT.free;
      

  9.   

    用ShowModal不行的哦!ShowModal语句后面的语句,在模态窗口不关闭,是不会执行的
    你用个窗口,设置成最前面,然后用个Time不断的增加进度位置就可以了