我用idhttp下载,
怎样用进度条显示下载进度?

解决方案 »

  1.   

    onwork里做。
    procedure TfrmUpdate.objHttpWorkBegin(Sender: TObject;
      AWorkMode: TWorkMode; const AWorkCountMax: Integer);
    begin
    PBar1.Position:=0;
    PBar1.Max:=AWorkCountMax;
    PBar1.Min:=0;
    if AWorkCountMax > 0 then
      LogMessage('正在传送...' + IntToStr(AWorkCountMax));end;procedure TfrmUpdate.objHttpWork(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCount: Integer);
    begin
     if PBar1.Max > 0 then
      begin
        LogMessage('已完成...'+IntToStr(AWorkCount) + ' bytes /' + IntToStr(PBar1.Max) + ' bytes.');
        PBar1.Position := AWorkCount;
      end
      else
        LogMessage(IntToStr(AworkCount) + ' bytes.');
    end;procedure TfrmUpdate.objHttpWorkEnd(Sender: TObject; AWorkMode: TWorkMode);
    begin
    LogMessage('本数据包传送完毕...');
    end;
      

  2.   

    先谢谢 ChinaOk(授人以鱼,不如授人以渔) 大虾。
    但我使用起来还是有些问题。1、HttpWorkBegin里面,LogMessage('正在传送...' + IntToStr(AWorkCountMax));直到把文件下载完时才显示出文件的大小,并不是当开始下载时就已经显示出大小。2、HttpWork里面,LogMessage('已完成...'+IntToStr(AWorkCount) + ' bytes /' + IntToStr(PBar1.Max) + ' bytes.');
    并不是实时的显示已完成的下载大小,而是等文件下载全部完成后,才一次性把下载过程中所有的进度显示出来。意思就是说,下载时没显示,等下载完成后一起显示了每阶段的下载进度,如13 435 5422 133565 3211335 bytes,怎样才能实时的显示当前下载进度呢?请各位大虾帮忙解决以上两个问题!谢谢!