Treeview et affichage de contenu de table
Salut
Je vais entrer au vif du sujet :
Le but est d'afficher le contenu d'une table dans un Treeview :
La table "CATEGORIES" a la structure suivante :
Index, CatgeoryName, ParentCat
Par exemple :
1, Delphi, 0
2, Base de Données, 1
3, Composants, 1
4, Graphisme, 1
5, HTML, 0
6, Scripts, 5
7, Animations, 5
Ce qui peut interprété comme :
La categorie Delphi (Enregistrement N°1) n'a pas de categorie parent.
La categorie Base de données, composants et graphisme ont pour categorie parent l'enregistrement N°1 (soit la cat Delphi) etc.
Aussi il est possible d'avoir :
8, Flash, 7
Qui est une categorie dont la cat parent est l'enreg N°7 (Animation) qui est en lui meme un sous categorie de HTML.
Pour charger le contenu de cette table dans un TV j'ai fait :
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 33 34 35 36 37 38 39
| Var
I:Integer;
N:TTreeNode;
Begin
With FDATA.IBCAT Do
Begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM "Categories" WHERE SUB = 0');
Open;
DisableControls;
First;
While Not Eof Do
Begin
N:=TVURI.Items.Add(Nil,FieldByName('NAM').AsString);
N.ImageIndex:=FieldByName('IDX').AsInteger;
Next;
End;
For I:=TVURI.Items.Count-1 DownTo 0 Do
Begin
If TVURI.Items[I].Parent=Nil Then
Begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM "Categories" WHERE SUB = '+IntToStr(TVURI.Items[I].ImageIndex)+')');
Open;
First;
While Not Eof Do
Begin N:=TVURI.Items.AddChild(TVURI.Items[I],FieldByName('NAM').AsString);
N.ImageIndex:=FieldByName('IDX').AsInteger;
Next;
End;
End;
End;
EnableControls;
Close;
End;
End; |
Mais ca ne charge que les racines et les sous categorie directes enfant
Je voudrais avoir un code complémentaire a celui ci qui puisse charger recursivement tout les enregistrement dans le treeview parceque je ne sais pas combien de niveau de souscat ma table sera remplie.
J'espere été assez clair merci pour votre aide.