Naja, was soll denn da nicht stimmen? Hier mal der Code. (Mit
Indy 9 hatte alles noch wunderbar funktioniert)
Achso: Der Download findet in einem Thread statt.
Die Zuweisung für das OnWork-Ereignis (Hauptprogramm / Main-Thread)
UpdateDownloader.OnWork:=OnThreadWork;
Die Progressbars
Delphi-Quellcode:
//Prozeduren-Kopf in private
procedure OnThreadWork(Sender: TThread; const AWorkCount: Integer);
procedure TForm4.OnThreadWork(Sender: TThread; const AWorkCount: Integer);
begin
Progressbar1.Position:=AWorkCount;
Progressbar2.Position:=geladen+AWorkCount;
//Bringt nix:
//Progressbar1.Refresh;
//Progressbar2.Refresh;
end;
Im DownloadThread
Delphi-Quellcode:
TOnWorkEvent = procedure(Sender: TThread; const AWorkCount: Integer) of object;
TDownloadUpdates = class(TThread)
private
procedure InternalOnWork(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);
procedure DoNotifyWork;
published
property OnWork: TOnWorkEvent read FOnWorkEvent write FOnWorkEvent;
end;
procedure TDownloadUpdates.InternalOnWork(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);
begin
FWorkCount:=AWorkCount;
Synchronize(DoNotifyWork);
end;
procedure TDownloadUpdates.DoNotifyWork;
begin
if (Assigned(OnWork)) then
OnWork(Self, FWorkCount);
end;
Das hat so alles funktioniert. Ich hoffe, ich habe alles Wichtige jetzt kopiert.