De l'aide SVP a propos du treeview

Signaler
Messages postés
37
Date d'inscription
mercredi 22 septembre 2004
Statut
Membre
Dernière intervention
11 juin 2008
-
Messages postés
37
Date d'inscription
mercredi 22 septembre 2004
Statut
Membre
Dernière intervention
11 juin 2008
-
Mon probleme persiste,

Je suis avec le chargement dynamique d'un treeview.

j'ai un treeview avec le premier noeud (racine)
et j'ai une fonction qui a pour parametre entree (noeud) qui permet de générer les noeuds fils de ce noeud dans un tableau.

Donc ce que je veux c'est que quand je decide du niveau voulu atteindre dans le treeview qu'on appelle n.

Je cree le treeview en faisant appel a cette fonction de facon qu'on va construire le treeview jusqu'a atteindre le niveau (n).

une chose c'est que chaque noeud d'un seul niveau possede toujours des fils.(c a d si on fait appel a cette fonction avec ce noeud elle va nous generer ses neouds fils)

Ca fait plus que deux semianes que je travaille dessus et j'arrive a rien.

SVP aidez moi.

5 réponses

Messages postés
1467
Date d'inscription
samedi 13 mars 2004
Statut
Membre
Dernière intervention
5 mai 2010
3
Ecris moi à cette adresse :
scalpweb@hotmail.com

Ton problème m'intéresse, mais j'aurais besoin de plus d'infos.

@+, bonne prog,
scalpweb
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
29
Dim niveau As Long
Dim Level  As Long
Dim nb     As Long
Dim nod1   As Node
Dim nod2   As Node
Dim Str    As String

Private Sub Form_Load()
    TV.Nodes.Add , , "Root1", "Root1"
    TV.Nodes.Add , , "Root2", "Root2"
    Set nod1 = TV.Nodes.Add("Root1", tvwChild, "Fils1-1", "Fils1-1")
    nod1.EnsureVisible
    Set nod1 = TV.Nodes.Add("Root1", tvwChild, "Fils1-2", "Fils1-2")
    nod1.EnsureVisible
    Set nod1 = TV.Nodes.Add("Root2", tvwChild, "Fils2-1", "Fils2-1")
    nod1.EnsureVisible
    Set nod1 = TV.Nodes.Add("Fils1-1", tvwChild, "Fils1-1-1", "Fils1-1-1")
    nod1.EnsureVisible
    Set nod1 = TV.Nodes.Add("Fils1-1", tvwChild, "Fils1-1-2", "Fils1-1-2")
    nod1.EnsureVisible
End Sub

Private Sub Command1_Click()
    niveau = 5
' à partir du premier noeud ou pas ?
    FirstNode    Level niveau: nb 0
' choix du sélectionné ? 
'(ou celui séléctionné par Firstnode si fait avant)
    Gener TV.SelectedItem, Level
End Sub

Private Sub FirstNode()
    Set nod1 = TV.SelectedItem
    Do While (nod1 Is Nothing) = False
       Set nod2 = nod1
       Set nod1 = nod1.Parent
       Loop

'   on remonte au premier ou au tout premier ?
'    Set nod1 = nod2
    Set nod1 = nod2.FirstSibling

    nod1.Selected = True
    TV.SetFocus
End Sub

Private Sub Gener(n As Node, Level As Long)
    Dim i  As Integer
    If Level > 0 Then
       n.EnsureVisible

       For i = 1 To n.Children
           Gener n.Child, Level - 1
           Next
       
       If nb = 0 Then
'ici je crée les noeuds et sous-noeuds à ma façon
'je suppose que tu vas les créer à partir d'un Tableau ?
          nb = 1
          Set nod1 = n
          For i = 1 To Level - 1
              Str = nod1.Text & "-1"
              Set nod2 = TV.Nodes.Add(nod1.Key, tvwChild, Str, Str)
              nod2.EnsureVisible
              Set nod1 = nod2
              Next
          End If
              If Level 1 Then n.Expanded False
          
       End If

'   on s'arrête à la racine ou pas ?
'   If Level = niveau Then Exit Sub
    If Not n.Next Is Nothing Then
       nb = 0
       Gener n.Next, Level
       End If

End Sub
Messages postés
37
Date d'inscription
mercredi 22 septembre 2004
Statut
Membre
Dernière intervention
11 juin 2008

dans cette partie lo ou tu m'a ecrit

'ici je crée les noeuds et sous-noeuds à ma façon
'je suppose que tu vas les créer à partir d'un Tableau ?

j'ai fait appel a ma fonction avec quel noeud et apres qu'est ce que je fais si j'ai les resultats dans un tableau.

merci
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
29
quand j'ai fait Set nod1 = n
ben c'est à partir de ce noeud là qu'il faut ajouter les niveaux qui manquent.
tu as le nom avec n.text et le chemin complet avec n.FullPath
peut être tu peux faire la recherche dans ton tableau avec ces éléments.par exemple si tu as demandé 5 niveaux maxi et que je me retrouve avec Level 3 au dernier niveau au lieu de 1, il me manque donc 3-1 2 niveaux.

si tu as dans ton tableau:
root/fils/sousfils/soussousfils/soussoussousfils/
et que le n.FullPath te donne:
root/fils/sousfils

tu sais qu'il faut ajouter les deux suivants:
soussousfils/soussoussousfils/

Daniel
Messages postés
37
Date d'inscription
mercredi 22 septembre 2004
Statut
Membre
Dernière intervention
11 juin 2008

Le probleme c'est que ma fonction qui genere les neouds permet de mettre dans un tableau seulement les noeuds fils du noeud en entree donc elle genere un seul niveau pour un seul noeud .

c'est ca qui fait ma fonction.

Est ce que tu peux me trouver une solution.

merci d'avance.