您的位置:首页 > 理论基础 > 计算机网络

用idhttp打开网页或下载文件时如何显示进度

2013-11-27 22:48 706 查看
在它的workbegin work事件中写代码

procedure TfrmDownLoad.IdHTTP1WorkBegin(Sender: TObject;
AWorkMode: TWorkMode; const AWorkCountMax: Integer);
begin
ProgressBar1.Max := AWorkCountMax ;
end;

procedure TfrmDownLoad.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
begin
ProgressBar1.Position := AWorkCount ;
end;

显示下载速度
idhttp有一个方法就是OnWork,有一个参数AWorkCount,就是当前下载的大小(K)
用一个全局变量记录时间
在onWorkBegin的时候取一下时间
然后在OnWorK里再取一下时间,做差得到下载用的时间,然后用下载的大小除以时间就是下载的速度
全局变量:lastc,lastt
procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);
begin
nsize.Caption := '已下载:'+floattostr(ByteToStr(AWorkCount))+'MB';
speeds.Caption := '下载速度:'+floattostr((AWorkCount-lastc)*3600*24/(lastt-now)))+'kb/s';
ProgressBar1.Position:=AWorkCount;
lastc:=AWorkCount; //用ProgressBar1.Position做lastc也可以
lastt:=now;
end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: