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 :
Mais ca ne charge que les racines et les sous categorie directes enfant
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
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;
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.
Partager