Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.119 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Problem mit Fortschrittsanzeige idHTTP

  Alt 1. Sep 2005, 21:00
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]
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat