I wrote that.
It was very easy.
I didn't see that onworkbegin send filesize.
This is code, i tested under linux.
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
ComCtrls, StdCtrls, IdHTTP, IdComponent, IdAntiFreeze;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
IdAntiFreeze1: TIdAntiFreeze;
IdHTTP1: TIdHTTP;
Label1: TLabel;
ProgressBar1: TProgressBar;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
AWorkCount: Int64);
procedure IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
AWorkCountMax: Int64);
procedure IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{ TForm1 }
procedure TForm1.IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
begin
//label1.caption:='abbbaa';
end;
procedure TForm1.Button1Click(Sender: TObject);
var
pk:string;
begin
pk:=idhttp1.Get('http://download.thinkbroadband.com/20MB.zip');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
end;
procedure TForm1.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
AWorkCount: Int64);
begin
label1.caption:=inttostr(aworkcount);
progressbar1.position:=aworkcount;
end;
procedure TForm1.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
AWorkCountMax: Int64);
begin
progressbar1.max:=AWorkCountMax;
end;
initialization
{$I unit1.lrs}
end.