IdHTTP下载文件,怎么加个进度条?

---____--- 2014-11-23 01:45:10
怎么加一个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;
...全文
2152 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
joanagle 2017-06-07
  • 打赏
  • 举报
回复

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;

zengtian006 2015-01-12
  • 打赏
  • 举报
回复
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;
levonsoft 2014-11-24
  • 打赏
  • 举报
回复
进度同楼上.. 另外,如果只是下载文件,更简单可直接调用api 函数.UrlDownloadToFile
pathletboy 2014-11-23
  • 打赏
  • 举报
回复
处理3个事件 OnWorkBegin AWorkCountMax则为下载的总字节数 OnWork AWorkCount则为已下载的字节数 OnWorkEnd 下载结束 进度条最大值设置为100,在OnWorkBegin中记录总字节数,在OnWork中用 AWorkCount/总字节数*100取整后设置给进度条。
  • 打赏
  • 举报
回复
IdHTTP 事件OnWork 写入 pb1.Position := AWorkCount OnWorkBegin 写入 pb1.Max := AWorkCountMax; pb1.Position := 0; 就行了

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧