我已经用 TIdHTTP 组件实现自动升级程序的所有功能,唯一遗憾的是无法获知当前的下载进度,曾看见有文章介绍使用TIndHTTP的OnWork, OnWorkBegin, OnWorkEnd 事件,但没有成功,还望各位老鸟帮忙解决。
     分多的是,不够的可以另外开贴。

解决方案 »

  1.   

    下面是一个简单的例子,你仔细看看就可以解决:procedure TForm1.HTTPWorkBegin(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCountMax: Integer);
    begin
      ProgressBar1.Position := 0;
      ProgressBar1.Max := AWorkcountMax;
      if AWorkCountMax > 0 then
        StatusBar1.Panels[1].Text := 'Transfering: ' + IntToStr(AWorkCountMax);
    end;procedure TForm1.HTTPWorkEnd(Sender: TObject; AWorkMode: TWorkMode);
    begin
      StatusBar1.Panels[1].Text := 'Done';
      ProgressBar1.Position := 0;
    end;procedure TForm1.HTTPWork(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCount: Integer);
    begin
      if ProgressBar1.Max > 0 then
      begin
        StatusBar1.Panels[1].Text := IntToStr(AWorkCount) + ' bytes of ' +
          IntToStr(ProgressBar1.Max) + ' bytes.';
        ProgressBar1.Position := AWorkCount;
      end
      else
        StatusBar1.Panels[1].Text := IntToStr(AworkCount) + ' bytes.';
    end;
      

  2.   

    dotfly(Above the Clouds)  我用过了,结果还是不行,甚至在调试时都不能进入这3个函数
      

  3.   

    dotfly给的代码是没有错的,调试时不能进入这三个函数可能是根本没有产生调用这三个函数的消息或是你不小心关闭了调试开关。可以通过在这三个消息中加入showmessage信息来确定是哪个原因。
      

  4.   

    bpkr1981(无聊子)        给个示例程序吧。
           lightrain1002◎gmail.com
      

  5.   

    问题已解决,原来是要自己手动给添加 TIdHTTP 的事件处理函数,,,新手的愚蠢问题,望各位老大见谅哈。