怎么加一个ProgressBar进度条,显示进度?
function TFrAutoUpdate.DownLoadFile(sURL, sFName: string): boolean;
var
  tStream: TMemoryStream;
begin
  Result := False;
  tStream := TMemoryStream.Create;
  try { 防止不可预料错误发生 }
    sURL := IdHTTP1.URL.URLEncode(sURL); { 下载路径进行编码转换 }
    try
      IdHTTP1.Get(sURL, tStream); { 保存到内存流 }
      tStream.SaveToFile(sFName); { 保存为文件 }
      Result := True;
    except
    end;
  finally { 即使发生不可预料的错误也可以释放资源 }
    tStream.Free;
  end;
end;

解决方案 »

  1.   

    IdHTTP 事件OnWork 写入 pb1.Position := AWorkCount
                           OnWorkBegin 写入  pb1.Max := AWorkCountMax;                                                           pb1.Position := 0;就行了
      

  2.   

    处理3个事件
    OnWorkBegin AWorkCountMax则为下载的总字节数
    OnWork AWorkCount则为已下载的字节数
    OnWorkEnd 下载结束进度条最大值设置为100,在OnWorkBegin中记录总字节数,在OnWork中用 AWorkCount/总字节数*100取整后设置给进度条。
      

  3.   

    进度同楼上..另外,如果只是下载文件,更简单可直接调用api  函数.UrlDownloadToFile
      

  4.   

    procedure TUpdatefrm.IdHTTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
    begin
      ProgressBar1.Position := ProgressBar1.Max;
    end;procedure TUpdatefrm.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCount: Integer);
    begin
      ProgressBar1.Position := AWorkCount;
    end;procedure TUpdatefrm.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCountMax: Integer);
    begin
      ProgressBar1.Max := AWorkCountMax;
      ProgressBar1.Min := 0;
      ProgressBar1.Position := 0;
    end;
      

  5.   


    procedure TfrmMain.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCountMax: Integer);
    begin
      ProgressBar1.Max:=AWorkCountMax;
      ProgressBar1.Min:=0;
      ProgressBar1.Position:=0;
    end;procedure TfrmMain.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCount: Integer);
    begin
     ProgressBar1.Position:=ProgressBar1.Position+AWorkCount;
    end;