Würde es Dir viel ausmachen, mir das vom Grundsatz zu skizzieren?
Na, das ist dich ziemlich ersichtlich. Wenn du als Parameter für ThreadEnde nicht die ID sondern z.B. TheObject: TMyObject deklarierst,
Delphi-Quellcode:
procedure TForm1.ThreadEnde(TheObject: TMyObject);
begin
Memo1.Lines.Append('Event for ID ' + IntToStr(TheObject.ID) + ' received');
if TheObject.ID > 2 then
begin
TheObject.PNGStream.SaveToFile('bild.png');
TheObject.JPGStream.SaveToFile('bild.jpg');
end;
// Bei ID < 3 läuft alles durch. Es muss also Probleme beim Speichern geben.
Button1.Enabled:=true;
Memo1.Lines.Append('... all done - object ID is ' + IntToStr(TheObject.ID));
end;
und dann in FireOnEnde sowas
if assigned(fOnEnde) then fOnEnde(fMyObject);
schreibst, dann kannst du den Zugriff über die Liste sparen.