Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Überprüfen, ob ein TListItem existiert???

  Alt 1. Feb 2005, 13:43
Zitat von romber:
Der Thread kann dan problemlos auf den Item zugreifen und Daten ändern.

Wie kann ich im Thread überprüfen, ob Item in der ListView noch vorhanden ist, ich meine noch nicht gelöscht wurde?
Andersrum wird ein Schuh draus.
Beim Löschen eines Items musst du 1.) den Thread terminieren und 2.) den Thread freigeben (falls du FreeOnTerminate nicht gesetzt hast)
Delphi-Quellcode:
procedure DelItem(Item: TListItem);
var
 Thread: TThread;
begin
  Thread:=TThread(Item.Data);
  if Assigned(Thread) then
  begin
     Thread.Terminate;
     Thread.Free; // nur wenn FreeOnTerminate=False
  end;
end;
Im Thread musst du obacht geben und nur auf das Item zugreifen, wenn der Thread noch nicht Terminiert ist:
Delphi-Quellcode:
if Terminated then
   Exit; // Execute verlassen, wenn Thread terminiert ist
// Thread ist nicht terminiert, also darf ich auf das Item zugreifen
FItem.Caption := 'working ' +IntToStr(x);
Andreas
  Mit Zitat antworten Zitat