Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TTreeNode gelöscht - Thread gelöscht...? (https://www.delphipraxis.net/20176-ttreenode-geloescht-thread-geloescht.html)

ralfi 14. Apr 2004 12:26


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! :-)

shmia 14. Apr 2004 12:41

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;

ralfi 14. Apr 2004 13:04

Re: TTreeNode gelöscht - Thread gelöscht...?
 
An erster Stelle vielen Dank!

Zitat:

Zitat von shmia
1.) Das Thread-Objekt (genauer der Zeiger darauf) in TTreeNode.Data speichern,
direkt nachdem der Thread erzeugt wurde...

wie mache ich das? :oops:

shmia 14. Apr 2004 13:44

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;

romber 3. Mai 2004 19:35

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 11:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz