clique sur un node de treeview pour récupérer une info
13 réponses
michael
Bonjour, je me suis débrouiller pour construire mon treeview, et j'ai réussi...
Malheureusement l'aide de microsoft est quand même bien léger, car je ne
trouve rien sur les infos d'un node à part:
tvwMyTree.Nodes(10).Parent.Text
Mais apriori, on n esais pas sur quel node l'utilisateur va cliquer...
Dois je utilisier : Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)???
Mais quelle est la syntaxe pour récupérer la key du node par exemple en
utilisant cet évenement??
Très bonne idée, mais pour la 2° si je clique sur le premier niveau (root) il me fait une erreur (je suppose parcequ'il n'y a pas de niveau au dessus)... Comment je peux compter combien de .Parent il existe?? je vais en attendant utilisé la première solution qui me parait bien!! merci
"Vincent Guichard" wrote:
michael a écrit : > En fait je viens d'essaier un de tous, alors fullPath retourne un path, ca > c'est OK, et e fait c'était node.text que je cherchais, il me retourne > exactement ce qui est sélectionner mais.... > Je remarque que ca ne résoud pas vraiment tout mon problème, même si c'est > utile... Je voudrais savoir si il existe un moyen de différencier les niveau > dans l'arborescence?? premier niveau(root) deuxieme niveau, troisième niveaux > car à chaque niveaux correspond un type de donnée (2° niveau des station de > mesure, et 3° niveau des paramètre de mesure), et j'arrive pas à différencié > cela... > c'est clair j'espère... >
Pas vraiment, mais on va faire avec.
En principe, si tu construits le treeview, tu devrais être capable de connaître à quel niveau se situe chaque node. Je supposes donc que sa construction est automatisée et variable. Pour connaître la profondeur dans l'arbre d'un node quelconque, je vois deux solution rapides.
1- Tu récupères Node.FullPath et tu comptes le nombre de séparateurs de chemin ( '' par défault).
2- Tu comptes combien de .Parent sont accessibles depuis ton node.
Vincent Guichard
Très bonne idée, mais pour la 2° si je clique sur le premier niveau (root) il
me fait une erreur (je suppose parcequ'il n'y a pas de niveau au dessus)...
Comment je peux compter combien de .Parent il existe??
je vais en attendant utilisé la première solution qui me parait bien!!
merci
"Vincent Guichard" wrote:
michael a écrit :
> En fait je viens d'essaier un de tous, alors fullPath retourne un path, ca
> c'est OK, et e fait c'était node.text que je cherchais, il me retourne
> exactement ce qui est sélectionner mais....
> Je remarque que ca ne résoud pas vraiment tout mon problème, même si c'est
> utile... Je voudrais savoir si il existe un moyen de différencier les niveau
> dans l'arborescence?? premier niveau(root) deuxieme niveau, troisième niveaux
> car à chaque niveaux correspond un type de donnée (2° niveau des station de
> mesure, et 3° niveau des paramètre de mesure), et j'arrive pas à différencié
> cela...
> c'est clair j'espère...
>
Pas vraiment, mais on va faire avec.
En principe, si tu construits le treeview, tu devrais être capable de
connaître à quel niveau se situe chaque node. Je supposes donc que sa
construction est automatisée et variable. Pour connaître la profondeur
dans l'arbre d'un node quelconque, je vois deux solution rapides.
1- Tu récupères Node.FullPath et tu comptes le nombre de séparateurs de
chemin ( '' par défault).
2- Tu comptes combien de .Parent sont accessibles depuis ton node.
Très bonne idée, mais pour la 2° si je clique sur le premier niveau (root) il me fait une erreur (je suppose parcequ'il n'y a pas de niveau au dessus)... Comment je peux compter combien de .Parent il existe?? je vais en attendant utilisé la première solution qui me parait bien!! merci
"Vincent Guichard" wrote:
michael a écrit : > En fait je viens d'essaier un de tous, alors fullPath retourne un path, ca > c'est OK, et e fait c'était node.text que je cherchais, il me retourne > exactement ce qui est sélectionner mais.... > Je remarque que ca ne résoud pas vraiment tout mon problème, même si c'est > utile... Je voudrais savoir si il existe un moyen de différencier les niveau > dans l'arborescence?? premier niveau(root) deuxieme niveau, troisième niveaux > car à chaque niveaux correspond un type de donnée (2° niveau des station de > mesure, et 3° niveau des paramètre de mesure), et j'arrive pas à différencié > cela... > c'est clair j'espère... >
Pas vraiment, mais on va faire avec.
En principe, si tu construits le treeview, tu devrais être capable de connaître à quel niveau se situe chaque node. Je supposes donc que sa construction est automatisée et variable. Pour connaître la profondeur dans l'arbre d'un node quelconque, je vois deux solution rapides.
1- Tu récupères Node.FullPath et tu comptes le nombre de séparateurs de chemin ( '' par défault).
2- Tu comptes combien de .Parent sont accessibles depuis ton node.
Par exemple, mais il y a moyen de faire autrement:
Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node) Dim i As Integer Dim n As Node i = 0 Set n = Node While Not n Is Nothing Set n = n.Parent i = i + 1 Wend Debug.Print i End Sub
Par exemple, mais il y a moyen de faire autrement:
Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
Dim i As Integer
Dim n As Node
i = 0
Set n = Node
While Not n Is Nothing
Set n = n.Parent
i = i + 1
Wend
Debug.Print i
End Sub
Par exemple, mais il y a moyen de faire autrement:
Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node) Dim i As Integer Dim n As Node i = 0 Set n = Node While Not n Is Nothing Set n = n.Parent i = i + 1 Wend Debug.Print i End Sub
Vincent Guichard
michael
merci je vais essaier cette méthode aussi, la 1° marche très bien j'ai essaier! merci beaucoup pour votre aide
"Vincent Guichard" wrote:
michael a écrit : > Très bonne idée, mais pour la 2° si je clique sur le premier niveau (root) il > me fait une erreur (je suppose parcequ'il n'y a pas de niveau au dessus)... > Comment je peux compter combien de .Parent il existe?? > je vais en attendant utilisé la première solution qui me parait bien!! > merci > Par exemple, mais il y a moyen de faire autrement:
Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node) Dim i As Integer Dim n As Node i = 0 Set n = Node While Not n Is Nothing Set n = n.Parent i = i + 1 Wend Debug.Print i End Sub
Vincent Guichard
merci je vais essaier cette méthode aussi, la 1° marche très bien j'ai essaier!
merci beaucoup pour votre aide
"Vincent Guichard" wrote:
michael a écrit :
> Très bonne idée, mais pour la 2° si je clique sur le premier niveau (root) il
> me fait une erreur (je suppose parcequ'il n'y a pas de niveau au dessus)...
> Comment je peux compter combien de .Parent il existe??
> je vais en attendant utilisé la première solution qui me parait bien!!
> merci
>
Par exemple, mais il y a moyen de faire autrement:
Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
Dim i As Integer
Dim n As Node
i = 0
Set n = Node
While Not n Is Nothing
Set n = n.Parent
i = i + 1
Wend
Debug.Print i
End Sub
merci je vais essaier cette méthode aussi, la 1° marche très bien j'ai essaier! merci beaucoup pour votre aide
"Vincent Guichard" wrote:
michael a écrit : > Très bonne idée, mais pour la 2° si je clique sur le premier niveau (root) il > me fait une erreur (je suppose parcequ'il n'y a pas de niveau au dessus)... > Comment je peux compter combien de .Parent il existe?? > je vais en attendant utilisé la première solution qui me parait bien!! > merci > Par exemple, mais il y a moyen de faire autrement:
Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node) Dim i As Integer Dim n As Node i = 0 Set n = Node While Not n Is Nothing Set n = n.Parent i = i + 1 Wend Debug.Print i End Sub