TreeView - Remplissage recurssif d'une table
Salut,
Voila mon probleme
J'ai une table SQL dans laquelle j'ai la description d'une arborescence.
en gros :
Code:
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
... |
Le but est de remplir un TreeView avec ces données chaque element (ID) sera un noeud fils avec un element 'parent' ...
pour avoir un truc, suivant la table :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
-a
|
|_erd
|_r
|_bbb
|
|_zzz
-aaa
-se
|_fdf
etc... |
Le but est un algo récursif. La question a ete en partie résolue ici :
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)
Code:
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; |
Après le next; end; , il me faudrait une 2ème boucle qui appelle la récursive pour démeler les branches....
mais je n'arrive pas à l'implémenter... :oops: :oops: :oops:
Note : tview est un treeview créé dans mon MainForm.
Merci pour votre aide... :)