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/)
-   -   TreeView: In TreeNode.Data suchen (https://www.delphipraxis.net/159009-treeview-treenode-data-suchen.html)

Jazzman_Marburg 10. Mär 2011 18:13

TreeView: In TreeNode.Data suchen
 
Hallo Gemeinde,
ich tue mich gerade schwer in einem TreeView für einen bestimmten Eltern-Knoten all seine Kind-Knoten nach Attributen in ihren Node.Data zu suchen. Hört sich merkwürdig an, aber das Problem ist eigentlich schnell erklärt:

- Jedem Kind-Knoten ist ein Objekt (TKnotenData) mit den beiden Feldern 'Content' und 'Attr' zugeordnet.

- Ich möchte nun, dass alle Kind-Knoten des Eltern-Knoten 'Hans' nach z.B. Content = 'Landwirt' durchsucht werden und mir die ItemId dieses Kind-Konten zurückgeliefert wird. Der Content='Landwird' ist eindeuting, es können nicht mehrere Kinder-Knoten diesen Content haben.

Delphi-Quellcode:
- Klaus
|
- Jürgen
|
- Hans
  - Peter (Content = 'Schreiner')
  - Michael (Content = 'Bäcker')
  - Jörg (Content = 'Landwirt')
etc.

(Der Baum sieht merkwürdig aus, aber ich hoffe man versteht was gemeint ist: Nur der Eltern-Knoten 'Hans' soll abgesucht werden.)

Mit meiner GetNodeByText Funktion kann ich nach 'Hans' suchen lassen -- aber wie nun alle drunterliegnden Kinder-Konten nach dem in Node.Data enthaltenen Daten durchsuchen.

Jemand vielleicht eine Idee?

Danke & Gruß
Jazzman

roga 10. Mär 2011 18:30

AW: TreeView: In TreeNode.Data suchen
 
Du könntest alle Knoten durchlaufen, über Level die gewünschte Ebene ermitteln und dann das entsprechende DatenObjekt abfragen.

Jazzman_Marburg 10. Mär 2011 20:14

AW: TreeView: In TreeNode.Data suchen
 
Yepp - das hat's gebracht! :thumb:

Dankeschön!

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:05 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