Moin,moin.
War auch grad auf der Suche nach einer Statusanzeige für einen Download... So, ich dachte mir, einfach mal ich probier mal den Quelltext aus, der hier ganz am Anfang gepostet wurde und, tatsache bei mir funzte er zuerst auch net, habe aber den Fehler gefunden!!!
Bei mir war nämlich die Variable AMaxCount = 0. Deshalb ist ja klar, dass die Progressbar nicht weiter läuft... Außerdem habe ich rausgefunden, dass der Wert AWorkCount beim Download die Anzahl der heruntergeladenen Bytes enthält. D.h. wenn man einfach
Code:
Progressbar1.position := AWorkCount
machen würde, wäre die Progressbar nach dem ersten Mal WorkCount ganz am Ende, oder aber immer noch leer
Hab des jetzt net ausprobiert...
Habe also noch ein wenig dazu geproggt, damit die ProgressBar auch ungefähr das Richtige anzeigt, wäre hier aber auch noch über Verbesserungsvorschläge dankbar!
So, genug der Erklärung hier nun der Quellcode:
Delphi-Quellcode:
procedure TForm1.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
begin
ProgressBar1.Position := 0;
end;
procedure TForm1.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
var n : longint;
a : real;
begin
statusbar1.Panels[0].Text := inttostr(AWorkcount div 1000)+' kB';
{size in byte}
n := size div 32768;
{n = 100%}
a := n / 100;
a := round(a);
if a > 1 then
begin
inc(b);
if b >= a then
begin
ProgressBar1.Position := AWorkCount div 32768;
ProgressBar1.Refresh;
b := 0;
end;
end
else
begin
ProgressBar1.Position := AWorkCount div 32768;
ProgressBar1.Refresh;
end;
end;
Die 32768 ist die Größe des Empfangs-Puffers. Achso was ich auch noch schnell loswerden wollte, habe nicht diese idfreeze- oder wie auch immer Komponente benutzt, klappt auch wunderbar ohne
MFG Henrik