Clique droit treeview [Résolu]

Signaler
Messages postés
265
Date d'inscription
dimanche 3 août 2003
Statut
Membre
Dernière intervention
29 mars 2010
-
Messages postés
265
Date d'inscription
dimanche 3 août 2003
Statut
Membre
Dernière intervention
29 mars 2010
-
Bonsoir !

J'aurai aimer pouvoir; lors du clique droit su l'un des noeu, faire apparétre un menu. (que si le clique droit a été fait sur un noeu et non sur un espace vide)
Merci de bien vouloir de donné un pti coup de pouce ;)

Clad

13 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
dans ton Treeview_Mousedown

Dim oNode as Node

Set oNode = TreeView1.HitTest ( x , y)

If Not oNode Is Nothing Then

      Msgbox oNode.Text

End If

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
tout bêtement :

oNode.Selected = True

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
Private Sub TreeView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim oNode As Node
    If Button = VbRightButton Then
      Set oNode = TreeView1.HitTest(x, y)
      If Not oNode Is Nothing Then
         If oNode.Chilrdren = 0 Then
                oNode.Selected = True
                PopupMenu mnu
         End If
      End If
   End If
End Sub

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
265
Date d'inscription
dimanche 3 août 2003
Statut
Membre
Dernière intervention
29 mars 2010

C'est nikel je te remerci beaucoup ;)

Je suis en train d'étudier le fonctionnement des treeview, et il ma l'aire très complet !
Jvé m'attaquer a la couleur du texte bientot :)

merci encore

Clad
Messages postés
265
Date d'inscription
dimanche 3 août 2003
Statut
Membre
Dernière intervention
29 mars 2010

re
en faite g encore un pti sousi !

voici le code que j'utilise :

Private Sub TreeView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim oNode As Node
Set oNode = TreeView1.HitTest(x, y)If Not oNode Is Nothing And Button 2 And clic True Then
      PopupMenu mnu
End If
End Sub

Le pb c'est que si je fait un clique droit sur un autre Child (après en avoir sélectionné un autre au paravent), il m'affiche toujour le menu pour le premier Child selectionner. Comment faire pour selectionner l'autre Child sélectionner par le pointeur et d'activer le menu ?

Clad
Messages postés
265
Date d'inscription
dimanche 3 août 2003
Statut
Membre
Dernière intervention
29 mars 2010

Oui effectivement c'était simple !
voici ca donne au final (si ca peut intéréser quelqu'un) :

Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
If Not Node Is Nothing Then
If Node.Child Is Nothing Then
clic = True
Else
clic = False
End If
End If
End Sub


Private Sub TreeView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim oNode As Node
Set oNode = TreeView1.HitTest(x, y)
Call TreeView1_NodeClick(oNode)If Not oNode Is Nothing And Button 2 And clic True Then
      oNode.Selected = True
      PopupMenu mnu
End If
End Sub

Merci a toi Renfield

Clad
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
pas compris le but du flag 'clic'

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
265
Date d'inscription
dimanche 3 août 2003
Statut
Membre
Dernière intervention
29 mars 2010

j'ai oublié la ptite explication de ce code :)

Alors lors d'un clique sur un enfant et que si on clique sur un enfant on affiche un menu.

Clad
Messages postés
265
Date d'inscription
dimanche 3 août 2003
Statut
Membre
Dernière intervention
29 mars 2010

clic permet de savoir si on a cliqué sur un parent ou un enfant

Clad
Messages postés
265
Date d'inscription
dimanche 3 août 2003
Statut
Membre
Dernière intervention
29 mars 2010

ben je ne sais comment te remercier ;)

ca marche nikel et c'est 10x plus simple que ce que j'avais fait :)

Merci beaucoup

ps : ptite erreur de frape : Children

Clad
Messages postés
265
Date d'inscription
dimanche 3 août 2003
Statut
Membre
Dernière intervention
29 mars 2010

hihi tu va dire que j'abuse mais tant que tu es là :)

Pour changer la couleur du text j'ai trouvé un system d'api SendMessageLong: le problé c'est que ca ne me change pas la couleur ! en faite ca me la change mais que lespace d'un moment, entre deux clique !
Aurai tu une idée ?
Pour info j'utilise des image ca pourai venir de ca ?

Clad
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
tout dépend de quand tu fait cet appel.
n'as tu pas la propriété ForeColor de ton objet Node ?

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
265
Date d'inscription
dimanche 3 août 2003
Statut
Membre
Dernière intervention
29 mars 2010

oui si c bon ! en faite il ny a méme pas besoin de l'api !

voici le code qui me permet de changer la couleur de tout les enfants :

Dim i As Integer

For i = 1 To TreeView1.Nodes.Count
   If TreeView1.Nodes.Item(i).Children = 1 Then
      TreeView1.Nodes.Item(i).Child.ForeColor = 12632319
   End If
Next

Mici

Clad