![]() |
TTreeNode gelöscht - Thread gelöscht...?
Hallo!
Ich weise einem Thread einen TTreeNode zu, indem ich die Create-Procedur des Threads überschrieben habe. Den Thread muss dann die ImageIndex des TTreeNodes ändern und somit so eine Art Fortschrittsanzeige darstellen. Das funktioniert schon mal ganz richtig. Jetzt möchte ich es so machen, dass wenn das TTreeNode gelöscht wird, beendet sich auch der Thread, dem diese TTreeNode zugewiesen wurde. Wie mache ich das? Danke! :-) |
Re: TTreeNode gelöscht - Thread gelöscht...?
1.) Das Thread-Objekt (genauer der Zeiger darauf) in TTreeNode.Data speichern,
direkt nachdem der Thread erzeugt wurde. 2.) im Event OnDeletion des TreeViews:
Delphi-Quellcode:
procedure TForm1.TreeView1Deletion(Sender: TObject; Node: TTreeNode);
begin if Assigned(Node.Data) then begin TThread(Node.Data).Terminate; TThread(Node.Data).Free; end; end; |
Re: TTreeNode gelöscht - Thread gelöscht...?
An erster Stelle vielen Dank!
Zitat:
|
Re: TTreeNode gelöscht - Thread gelöscht...?
Delphi-Quellcode:
procedure TForm1.MakeNewThread(const tname:string);
var thread : TThread; node : TTreeNode; begin thread := TMyThread.Create(True); // neuen Thread erzeugen node := TreeView1.Items.Add(nil, tname); // neuen Knoten erzeugen node.Data := Pointer(thread); // <-- Zeiger auf Thread-Objekt im TreeNode merken thread.Resume; // Thread losrennen lassen end; |
Re: TTreeNode gelöscht - Thread gelöscht...?
@shmia
Danke sehr! Es hat geklappt! Eine andere Frage: kann ich dasselbe auch für zwei und mehr Threads machen, ich meine mehrere Threads mit einen TTreeNode verknüpfen und dann wenn Node gelöscht wird, auch alle verknüpfte Threads beendet werden? Wenn ja, wie? Danke! :P |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz