Die Lösung steht schon im vom Thread-Wizard eingefügten RIESIGEN Kommentar:
Delphi-Quellcode:
{ Wichtig: Methoden und Eigenschaften von Objekten in visuellen Komponenten dürfen
nur in einer Methode namens Synchronize aufgerufen werden, z.B.
Synchronize(UpdateCaption);
und UpdateCaption könnte folgendermaßen aussehen:
procedure TMyTest.UpdateCaption;
begin
Form1.Caption := 'Aktualisiert in einem Thread';
end; }
Das heißt, Du musst eine Routine im Thread anlegen, die mit Synchronize die OnProgress Methode aufruft.
Falsch (in einem Thread):
Delphi-Quellcode:
procedure TMyTest.Progress(const AProgress: Integer);
begin
if Assigned(FOnProgress) then
FOnProgress(AProgress);
end;
So sollte es gehen
Delphi-Quellcode:
private
FProgress : integer; // Zur Zwischenspeicherung von AProgress
procedure TMyTest.DoOnProgress;
begin
FOnProgress(FProgress);
end;
procedure TMyTest.Progress(const AProgress: Integer);
begin
if Assigned(FOnProgress) then
begin
FProgress := AProgress;
Synchronize(DoOnProgress);
end;
end;