怎么加一个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;
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;
OnWorkBegin 写入 pb1.Max := AWorkCountMax; pb1.Position := 0;就行了
OnWorkBegin AWorkCountMax则为下载的总字节数
OnWork AWorkCount则为已下载的字节数
OnWorkEnd 下载结束进度条最大值设置为100,在OnWorkBegin中记录总字节数,在OnWork中用 AWorkCount/总字节数*100取整后设置给进度条。
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;
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;