在它的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;