Moin Stresslein,
also für einen Progressbar bei TidHTTP.Get verwende ich die Ereignisse OnWorkBegin, und OnWork.
Beispiel:
Delphi-Quellcode:
procedure TForm1.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
begin
ProgressBar1.Max := AWorkCountMax;
Label1.Caption := IntToStr(AWorkCountMax);
Application.ProcessMessages;
end;
procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
begin
ProgressBar1.Position := AWorkCount;
Label2.Caption := IntToStr(AWorkCount);
Application.ProcessMessages;
end;
In OnWorkBegin werden die ProgressBar initialisiert, und die gefundene Dateigrösse in ein Label geschrieben.
In OnWork dient dann dazu den Fortschrittsbalken laufen zu lassen, und den aktuellen Stand der heruntergeladenen Bytes anzuzeigen.
Application.ProcessMessages sorgt dann dafür, dass die Label aktualisiert werden.
Nicht schön, aber funktioniert
[EDIT]
Bei erneutem durchsehen Deines Sourcecodes:
Ich denke mal, dass Dein Problem dadurch verursacht wird, dass Du das ganze in einem OnTimer-Event aufrufst.
In diesem Falle solltest Du den Timer zu beginn der Routine ab-, und beim Verlassen wieder einschalten.
Beispiel:
Delphi-Quellcode:
begin
Timer4.Enabled := false;
try
// Was so alles passieren soll
finally
Timer4.Enabled := true;
end;
end;
try/finally um sicherzustellen, dass der Timer auch bei einem Fehler weiterläuft.
[/EDIT]