Salut,
Voila mon probleme
J'ai une table SQL dans laquelle j'ai la description d'une arborescence.
en gros :
Le but est de remplir un TreeView avec ces données chaque element (ID) sera un noeud fils avec un element 'parent' ...
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 ID | Name | Parent 1 a 2 aaa 3 sse 4 erd 1 5 fdf 3 6 r 1 7 zzz 8 8 bbb 1 9 ccc 3 10 ... 11 12 ...
pour avoir un truc, suivant la table :
Le but est un algo récursif. La question a ete en partie résolue ici :
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 -a | |_erd |_r |_bbb | |_zzz -aaa -se |_fdf etc...
http://www.developpez.net/forums/sho...d.php?t=267013
Mais la solution n'est pas bonne, car on ne s'ocupe pas des branches filles et des filles de celles-ci.
Voici le code que j'ai écrit (en Delphi)
Après le next; end; , il me faudrait une 2ème boucle qui appelle la récursive pour démeler les branches....
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32 procedure TfrmMain.makeTreeNodes(id : Integer; node : TTreeNode); var tvwNode : TTreeNode; listOfNodes : Array[0..255] of Integer; tempID, numberOfChilds, i : Integer; tempName : String; Begin numberOfChilds := 0; With DataModule1.qry_ForTreeView do Begin SQL.Clear; SQL.Add('SELECT * FROM TREE_VIEW_TABLE WHERE (PARENT = ' + IntToStr(id) + ')'); Open; while NOT EOF do Begin tempID := FieldByName('ID').AsInteger; tempName := FieldByName('BRANCH_NAME').AsString; tvwNode := tview.Items.AddChild(tvwNode , tempName); listOfNodes[numberOfChilds] := tempID; inc(numberOfChilds); next; end; ////---> Jusqu'ici ca devrait être bon /// ---> Après ca foire !!! makeTreeNodes(listOfNodes[i],tvwNode.Item[i]); Close; end; end;
mais je n'arrive pas à l'implémenter...
Note : tview est un treeview créé dans mon MainForm.
Merci pour votre aide...
Partager