Ordonner une Arborescence

cs_Lolux Messages postés 159 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 15 septembre 2005 - 10 juin 2004 à 16:52
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 - 29 août 2004 à 14:39
Bonjour,

Je souhaite créer une arborescence avec des éléments qui se placent dans un ordre bien précis.
Je veux que l'utilisateur puisse monter ou descendre des éléments ou changer leur identation.

c'est exactement ce que fait l'outil de création de menus de VB6.

Existe t il un contrôle spéciale qui fait cela ?
Dans le cas contraire avez vous une solution ?

J'ai déja essayé avec le contrôl treeview mais c'est un bordel incroyable dès qu'il s'agit de déplacer des objets...

Je n'ai peut être pas la bonne méthode ?!!

Merci pour votre aide.

Lolux

12 réponses

crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
10 juin 2004 à 16:55
Ben non, c'est avec le treeview que tu pourras représenter une arborescence !!

Christophe R.
0
cs_Lolux Messages postés 159 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 15 septembre 2005
10 juin 2004 à 17:05
Je ne souhaite pas la représenter, je souhaite la configurer.

Comme je le disais, l'outil de création de menus de Vb6 permer de créer des menus et non de les représenter.

Lolux
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
10 juin 2004 à 17:26
Ouais mais pour que ton utilisateur puissent déplacer tes items, il faut bien que tu les lui montre non ? ou alors je ne comprends pas ce que tu veux !!

Christophe R.
0
cs_Lolux Messages postés 159 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 15 septembre 2005
10 juin 2004 à 17:40
Tu comprend pas ce que je veux ;p)

Quand tu cré une arbo, il y a des noeud pères et des noeuds fils. Le problème c'est que les noeuds sont ordonnés dans leur ordre de création. Et oui ! Il n'y a pas de propriété qui indique le rang du noeud fils.
Donc ce que je voudrai c'est une sorte de liste simple dans laquel je peux (comme dans l'outil de créations de menu) monter et déscendre des lignes et modifier leur identation sans qu'il y ai de notion de noeuds pères ou fils.
Une fois que l'utilisateur a ordonné tout ça dans la liste, l'appli cré l'arborescence dans un treeview.

Simple non ?

Bon je vais continuer à cogiter.

Merci a toi

Lolux
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
10 juin 2004 à 17:46
Je capte rien ! Pourquoi tu ne veux pas faire travailler directement ton utilisateur sur une treeview !?
Ca simplifierai grandement les choses, non ?
Bouger les noeuds dans les treeview, ce n'est pas si complexe que cela !

Christophe R.
0
cs_Lolux Messages postés 159 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 15 septembre 2005
10 juin 2004 à 18:03
"Bouger les noeuds dans les treeview, ce n'est pas si complexe que cela "

Admetons que l'utiliateur a créé l'arbo suivante :

A
---> B
      ---> C
      ---> D
      ---> E
---> F



S'il veut modifier l'Ordre des noeuds C, D, E en D, E, C

A
---> B
      ---> D
      ---> E
      ---> C
---> F


Tu fais comment ?

Lolux
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
10 juin 2004 à 18:19
Comme cela :
Ajoute une Treeview nommé Treeview1 à une form, et deux boutons nommés Command1 et Command2
Ajoute ce code à celui de la form :
Private Sub Command1_Click()
Dim Textbuffer As String, KeyBuffer As String, KeyBuffer2 As String

    On Error GoTo NoMore
    With TreeView1.SelectedItem
        Textbuffer = .Next.Text
        KeyBuffer = .Next.Key
        .Next.Text = .Text
        .Next.Key = "NewKey"
        .Text = Textbuffer
        KeyBuffer2 = .Key
        .Key = KeyBuffer
        .Next.Key = KeyBuffer2
        .Next.Selected = True
    End With

NoMore:
End Sub

Private Sub Command2_Click()
Dim Textbuffer As String, KeyBuffer As String, KeyBuffer2 As String

    On Error GoTo NoMore
    With TreeView1.SelectedItem
        Textbuffer = .Previous.Text
        KeyBuffer = .Previous.Key
        .Previous.Text = .Text
        .Previous.Key = "NewKey"
        .Text = Textbuffer
        KeyBuffer2 = .Key
        .Key = KeyBuffer
        .Previous.Key = KeyBuffer2
        .Previous.Selected = True
    End With

NoMore:
End Sub

Private Sub Form_Load()
    With TreeView1.Nodes
        .Add , , "a", "a"
        .Add "a", tvwChild, "b", "b"
        .Add "a", tvwChild, "c", "c"
        .Add "a", tvwChild, "d", "d"
        .Add "a", tvwChild, "e", "e"
        .Add "a", tvwChild, "f", "f"
        .Item("f").EnsureVisible
    End With
    Command1.Caption = "Descendre"
    Command2.Caption = "Monter"
End Sub

Et ca fonctionne
Christophe R.
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
10 juin 2004 à 18:21
J'ai oublié de préciser ! l'utilisateur doit sélectionner un noeud (le noeud "b" par exemple, puis cliquer sur les boutons "Monter" ou "descendre" pour faire bouger le noeud !
A noter qu'il ne faut surtout pas qu'un noeud ait pour clé la chaine "NewKey" !! mais cela peut se contourner assez facilement !

Christophe R.
0
cs_Lolux Messages postés 159 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 15 septembre 2005
11 juin 2004 à 10:19
Ahhhhh ! Très intéréssant !

Je n'avais jamais utilisé les commandes Next et Previous du TreeView et c'est ça qui me manquait.

Il me faut maintenant approfondir tout ça car cette problématique n'est qu'une partie de mon module.

Grand merci à toi pour cette info qui je n'en doute pas va enfin me faire avancer.

Tchô !

Lolux
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
11 juin 2004 à 10:23
Si tu as encore des pb avec ta treeview, tu peux m'appeler !!
Je l'utilises assez régulièrement alors je commence à la connaitre par coeur !!

Christophe R.
0
flipper49 Messages postés 6 Date d'inscription jeudi 29 juillet 2004 Statut Membre Dernière intervention 11 août 2007
27 août 2004 à 09:10
Bonjour qq 'un serait t'il comment on reduit les noeuds ? Soit tt les noeuds apres le chargement du treeview soit certains noeud en spécifiant leur key.
Merci Manu
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
29 août 2004 à 14:39
1- Teste la métode Collapse d'un noeud
2- Pose plutot une nouvelle question sur le forum, car la, personne ne la retrouvera s'il en a besoin ...

Christophe R.
0