J'ai une application qui contient un TreeView,mais j'ai pas trouver une méthode pour enregistrer et charger cet treeview dans une base Interbase, qui peut me donner une démarche pour faire ca,et merci d'avance.
J'ai une application qui contient un TreeView,mais j'ai pas trouver une méthode pour enregistrer et charger cet treeview dans une base Interbase, qui peut me donner une démarche pour faire ca,et merci d'avance.
Il faut le faire manuellement (il se peut qu'il y ait des composants tiers qui le fasse mais je ne les connais pas).
Donc Ventiler ta BD, qui contient pour chaque ligne j'imagine la notion père/fils
puis stocker un à un les éléments ventilés dans le TreeView.
Opération inverse, pareil mais en ventilant le TreeView.
Il faut garder dans le TreeView, une clef pour chaque ligne afin de pouvoir la retrouver dans la table.
Section Delphi
La mine d'or: La FAQ, les Sources
Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
Notre revanche ? l'inverse est aussi vrai ;-)
Bonjour,
En combinant la proprièté "Object" des TTreeNodes et 2 champs de la table de données...
Creation des champs de la table
- CodeUnic : Texte (Unique pour chaque reg)
- CodeParent : Texte (C'est le CodeUnic du noeud parent)
Utilisez la méthode d'insertion des noeuds suivantes (voir convention d'appel dans l'aide de Delphi)
Stocker votre composant complet avec les méthodes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Tree1.AddObject(Matable.FieldByname('CodeUnic').value, 'Le libellé de mon TreeNode');
ou bien construisez le à la volée avec une boucle récurrente sur la table de donnée.
- WriteComponent()
- ReadComponent()
Il vous suffit ensuite de travailler avec les deux champs (non indéxé!) CodeUnic et CodeParent
Cordialement,
Hauwke
[Edit] PS : Vous avez, bien sûr, percu l'avantage de la mèthode dés lors que vous créerez une table particulière pour votre arbre :Structure de la table :
- Id : votre index général
- CodeUnic,
- CodeParent
- NomDeLaBaseDeDonnées
- NomDeLaTableContenantLeNoeud
Gérez l'événement OnClick du TreeView pour faire les connections et les Locate() approriés et vous voilà avec une arborescence qui permet de refléter un nombre illimité de relations Maître/Détail sans avoir nécessité de coder 1000 lignes[/edit]
Moi, j'aurai simplement fait un SaveToStream de ta TreeView puis j'aurai fait un TBlobField.LoadFromStream, tout simplement.
Der§en.
Partager