Clic droit TreeView multipage

JackleKija Messages postés 8 Date d'inscription lundi 22 août 2011 Statut Membre Dernière intervention 29 septembre 2011 - 28 sept. 2011 à 16:43
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 - 30 sept. 2011 à 20:16
Bonjour à tous,

J'aimerais savoir si il est possible d'effectuer un clic droit afin d'afficher un menu contextuel sur un noeud spécifique d'un treeview se trouvant dans une page d'un multipage?

En espérant avoir été assez précis

Merci d'avance.

7 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
28 sept. 2011 à 17:02
Salut

Et pourquoi penses-tu que cela ne soit pas possible ?
Quelle mauvaise expérience endures-tu ?

A priori, qu'un objet soit installé dans un autre ne l’empêche pas de gérer ses évènements normalement.

On est sur un forum, pas sur un chat : donne le maximum d'info sur ton environnement et ton problème technique, ça fera gagner du temps à tout le monde.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
JackleKija Messages postés 8 Date d'inscription lundi 22 août 2011 Statut Membre Dernière intervention 29 septembre 2011 1
28 sept. 2011 à 17:26
J'ai un multipage sur un UserForm contenant 17 pages et chacune d'elle contient un treeview

TreeView1
TreeView2
...
...
...
TreeView17

Quand j'applique une procédure d'événement clic sur le TreeView1 ou TreeView2 ou ... (n'importe)
rien ne se déclenche

Private Sub TV_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Long, ByVal Y As Long)
 
    MsgBox "Test"
 
End Sub


Logiquement quand je clique sur un élément du TreeView cela devrait m'afficher la message box mais rien...

Si j'execute cette procédure avec MultiPage1 ou UserForm cela fonctionne

Private Sub MultiPage1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Long, ByVal Y As Long)
 
    MsgBox "Test"
 
End Sub



Je me demande juste si ma procédure est placée, au bon endroit ou s'il faut faire quelque chose en pluse pour qu'il reconnaisse un TreeView quelconque.
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
28 sept. 2011 à 18:35
Bonjour,

Utilises AddHandler pour ajouter des gestionnaire d'événements à des événements des controles.

Sinon, tu peux aussi faire un collection ( List(Of)(...) ) de TreeView pour automatiser le code.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
28 sept. 2011 à 20:32
C'est simplement que tu ne passe pas dans la bonne procédure :
Private Sub TV_MouseDown(ByVal ...
s'applique à un objet nommé TV.
Or tes objets s'appellent TreeView1, TreeView2 ...
On devrait lire
Private Sub TreeView1_MouseDown(ByVal ...

A moins que tu n'aies pas encore tout dit entre le lien entre les TreeView1 (...) et ce TV ...
Si, comme le laisse présager la catégorie de ta question, tu travailles en vb.Net sous Excel, dans ce cas la réponse de NHenry résoudra le problème, mais la déclaration que tu nous montre ne ressemble pas à une déclaration d'évènement de .Net.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0

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

Posez votre question
JackleKija Messages postés 8 Date d'inscription lundi 22 août 2011 Statut Membre Dernière intervention 29 septembre 2011 1
29 sept. 2011 à 10:56
Bonjour,

J'ai fait le con dans le premier code que je vous ai montré, bien sur à la place de TV c'est TreeView1 mais ca vient d'un absurde copier/coller.

Sinon la réponse de NHenry m'a mis sur la bonne voie, j'ai groupé mes TreeView et mis le bout de code dans un module de classe.
J'ai également changé les paramètres car ils n'ont pas la même dimension dans un multipage je pense

Par contre c'est bien du VBA et non du .NET

Private Sub GroupTreeView_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As stdole.OLE_XPOS_PIXELS, ByVal Y As stdole.OLE_YPOS_PIXELS)

    'code clic droit

End Sub
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
30 sept. 2011 à 10:52
NHenry t'a proposé cela en pensant au .Net où une même procédure peut être associée à plusieurs objets, du moment qu'ils sont de même type.
Or de propos en VBA.
Le groupement n'aura aucun effet, oublie.

Donc, je me répète : il faut que la procédure que tu tentes d'exécuter appartienne au composant qui génère l'évènement - Lapalisse (1470-1525)
Si plusieurs TreeView doivent exécuter une procédure commune, il te faut créer cette procédure extérieurement aux évènements et l'appeler (Call) depuis les procédures évènement de chaque composant - impossible de grouper (en VBA).
Donc, les procédures qui se déclencheront au clic seront celles ressemblant à
Private Sub TreeView1_MouseDown(ByVal ...
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
30 sept. 2011 à 20:16
Bonjour,

En effet, je me suis trompé de langage, dsl.
Je ne devais pas être très réveillé.

---------------------------------------------------------------------
Mon site
0
Rejoignez-nous