Hi Yanni,
ich möchte jetzt kein komplettes Bsp. programmieren dazu fehlt mir im Moment die Zeit, außerdem gibt es hier noch genug andere die das auch hinbekommen.
Aber hier mal ein Ansatz für Dich:
Ich gehe mal davon aus das Du eine Progressbar aktualisieren willst, während des Downloads.
Deshalb must Du Deine ThreadKlasse um eine Eingenschaft TargetProgressBar : TProgressbar erweitern.
Außerdem eine private Variable in Thread iProgress : integer;
Und ganz wichtige eine private Procedure UpdateProgressbar;
Unrwe dann beim erzeugen der Threads:
Delphi-Quellcode:
Var
httpthd1 : IdhttpThread ;
httpThd2 : IdhttpThread ;
httpThd3 : IdhttpThread ;
begin
// ....
httpThd1 := IdHttpThread.Create(true);
httpThd1.TargetProgressbar := MainForm.Progressbar1;
httpThd2 := IdHttpThread.Create(true);
httpThd2.TargetProgressbar := MainForm.Progressbar2;
httpThd3 := IdHttpThread.Create(true);
httpThd3.TargetProgressbar := MainForm.Progressbar3;
// ... Threads starten
httpThd1.resume; // ab hier läuft Thead 1
httpThd2.resume; // ab hier Thread 2
HttpThd3.resume; // ...
Im OnBegin, OnWork und OnWorkEnd setzt Du die Variable iProgress und dann
syncronisierst du UpdateProgress mit :
syncronize(UpdateProgress);
Die procedure UpdateProgress sieht dann ungefähr so aus:
Delphi-Quellcode:
procedure idhttpThread.updateProgress;
begin
if Assigned(TargetProgressbar) then
TargetProgressbar.position := iProgress;
end;
Das muss jetzt aber reichen,
Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.