Bonjour !
Je voudrais savoir comment il est possible de lister tous les noeuds d'un treeview.
Cela doit revenir à parcourir tous les noeuds d'un arbre n-aire ...
Auriez vous un exemple ?
Merci![]()
Bonjour !
Je voudrais savoir comment il est possible de lister tous les noeuds d'un treeview.
Cela doit revenir à parcourir tous les noeuds d'un arbre n-aire ...
Auriez vous un exemple ?
Merci![]()
Voici:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 for i:=0 to TreeView1.Items.Count-1 do { ce que tu veux faire avec TreeView1.Items[i].xxxxx (Text,Level, etc... };
oui, mais non ... :s
Ce que je cherche à faire, c'est une fonction recursive qui fait un parcours en profondeur de l'arbre, quel que soit son nombre de niveaux et d'items...
Voici le code que j'ai ecrit (non fonctionnel):
Une idée pour que ca marche ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 procedure TfrmMain.FillNodeList(nodeList : TList ; firstBranchID : Integer); var i : Integer; branchID : Integer; myCurrentNode : TTreeNode; Begin myCurrentNode := TTReeNode.Create(tvwBiblio.Items); myCurrentNode.Assign(tvwBiblio.Selected) ; branchID := integer(myCurrentNode.Data); with myCurrentNode do while (myCurrentNode.SelectedIndex < myCurrentNode.Count) do Begin showmessage(inttostr(myCurrentNode.SelectedIndex)); nodeList.Add(pointer(branchID)); FillNodeList(nodeList,i); end; myCurrentNode.Free; end;
Salut
J'ai du mal à saisir ce à quoi doit aboutir ton code. Et pourquoi absolument une fonction récursive ?
Un simple parcours de l'arborescence avec l'itération proposée par qi130 ne peut pas convenir ?
@+ Claudius
Le but est de parcourir tous les 'Nodes' d'un TreeView afin de recupérer dans chaque Node la valeur du champs DATA.
La préocupation principale est donc de parcourir tout un arbre quel que soit sa profondeur.
Il faut donc une fonction récursive car on ne connait pas le nombre de branche par noeud.
Voici la solution...
(Ici la fonction remplis une TList en plus)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 procedure TfrmMain.FillNodeList(nodeList : TList ; node : TTreeNode); var i : Integer; branchID : Integer; Begin with Node do Begin i:= 0; while (i < Count) do Begin branchID := integer(Item[i].Data); nodeList.Add(pointer(branchID)); FillNodeList(nodeList,Item[i]); inc(i); end; end; end;
Partager