begin process at 2012 02 14 06:23:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Divers

 > 

Aide & Documentation

 > 

Menu contextuel sur listview


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Menu contextuel sur listview

dimanche 1 octobre 2006 à 02:43:33 | Menu contextuel sur listview

Vedlen

Bonjour,
je souhaiterai simplement effectuer des clic droits avec menu contextuel sur les items d'un listview. Je sais que c'est pas bien compliqué mais ça ne s'invente pas quand on sait pas ... :(

Merci de votre aide.
dimanche 1 octobre 2006 à 03:36:19 | Re : Menu contextuel sur listview

jack

Administrateur CodeS-SourceS
Réponse acceptée !

Salut
Le click-droit en lui même n'est pas difficile à gérer (grace à MenuPopup), mais la difficulté avec les ListView, c'est que lors d'un click droit, l'item situé sous la souris ne prend pas le focus. Il faut donc simuler un click gauche avant.
Voici un exemple dans une de mes applis qui consiste à faire apparaitre un menu proposant la suppression de l'item.
Si tu n'as pas besoin de sélectionner l'item avant apparition du menu, tu n'auras besoin que de la ligne qui est soulignée.

-1- Crée un module et place ce code dedans :
Option Explicit
' Module pour la gestion du click-droit dans les listes
Public Type POINTAPI
    x As Long
    y As Long
End Type

Public Const MOUSEEVENTF_ABSOLUTE = &H8000 ' absolute move
Public Const MOUSEEVENTF_LEFTDOWN = &H2 ' left button down
Public Const MOUSEEVENTF_LEFTUP = &H4 ' left button up
Public Const MOUSEEVENTF_MOVE = &H1 ' mouse move
Public Const MOUSEEVENTF_MIDDLEDOWN = &H20
Public Const MOUSEEVENTF_MIDDLEUP = &H40
Public Const MOUSEEVENTF_RIGHTDOWN = &H8
Public Const MOUSEEVENTF_RIGHTUP = &H10

Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, _
                                              ByVal dx As Long, _
                                              ByVal dy As Long, _
                                              ByVal cButtons As Long, _
                                              ByVal dwExtraInfo As Long)
Public Declare Function GetMessageExtraInfo Lib "user32" () As Long
Public Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Public Const SM_CXSCREEN = 0 'X Size of screen
Public Const SM_CYSCREEN = 1 'Y Size of Screen

-2- Dans le MouseDown de ta ListView :
Private Sub maListView_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)

    Dim lpPoint As POINTAPI
    Dim Temp As String
   
    If Button And vbRightButton Then
        ' On simule un click gauche avant d'afficher le menu
        Call GetCursorPos(lpPoint)
        ' Transforme en coordonnées absolues
        lpPoint.x = lpPoint.x * (&HFFFF& / GetSystemMetrics(SM_CXSCREEN))
        lpPoint.y = lpPoint.y * (&HFFFF& / GetSystemMetrics(SM_CYSCREEN))
        ' Place la souris sur ce point
        mouse_event MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_MOVE, _
                    lpPoint.x, lpPoint.y, 0, GetMessageExtraInfo()
        ' Mouse Down
        mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, GetMessageExtraInfo()
        ' Mouse Up
        mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, GetMessageExtraInfo()
        DoEvents
        Temp = lstMatières.SelectedItem.Text
        ' et modifie le texte du popup
        mnuSupprimer.Caption = "&Supprimer '" & Temp & "'"
        ' Affiche le menu de proposition de suppression
        PopupMenu mnuzSupprimer, vbPopupMenuRightAlign
    End If

End Sub

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

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)

dimanche 1 octobre 2006 à 12:13:06 | Re : Menu contextuel sur listview

Vedlen

hmm la c'est un peu idiot mais j'arrive pas à sélectionner la liste avec le clic gauche, je n'ai aucune surbrillance de l'item............
dimanche 1 octobre 2006 à 12:17:29 | Re : Menu contextuel sur listview
dimanche 1 octobre 2006 à 13:28:22 | Re : Menu contextuel sur listview
dimanche 1 octobre 2006 à 13:29:33 | Re : Menu contextuel sur listview

Vedlen

!!!!!!! Codes-Sources a complètement déconné... :o Bref j'ai réussi, merci encore
dimanche 1 octobre 2006 à 22:10:25 | Re : Menu contextuel sur listview

geobasic

Oh la la ! Il beaucoup plus simple que ça ! La Methode HitTest du ListView permet de récupérer l'item qui est sous les coordonnées X et Y du curseur, il suffit de l'appeller dans l'évenement MouseDown du ListView.
dimanche 1 octobre 2006 à 23:16:45 | Re : Menu contextuel sur listview

Vedlen

concrètement tu l'utilises comment ?
lundi 2 octobre 2006 à 00:14:29 | Re : Menu contextuel sur listview

geobasic

Réponse acceptée !
Petit exemple avec ListView1, un menu Menu1 et un sous-menu mn_item1:




Private Sub ListView1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim Item as MSComctlLib.ListView
    Item = ListView1.HitTest(X, Y)
    If Not Item Is Nothing and Button = 2 Then
       mn_item1.Caption = Item.Text
       PopupMenu Menu1
    End If
End Sub

Dans cet exemple on récupère l'item qui est sous le curseur et on recopie son texte dans le caption d'un sous-menu.  Fait le test ,  tu verra ça marche trés bien.
lundi 2 octobre 2006 à 01:01:14 | Re : Menu contextuel sur listview

geobasic

Réponse acceptée !
Petite erreur:

Dim Item as MSComctlLib.ListItem

1 2

Cette discussion est classée dans : menu, listview, contextuel


Répondre à ce message

Sujets en rapport avec ce message

Listview et menu contextuel [ par davemudilo ] salutj'utilise un listview dans lequel j'affiche les donnes d'une base de donnees. J'aimerais arriver a utiliser un menu contextuel sur les diffrents Menu Contextuel dans une Listview en VB .NET [ par Hebus1976 ] J'utilise une listview et j'affiche un menu contextuel (avec modifier et supprimer) à l'emplacement du curseur de la souris lors d'un clic droit sur c Vb.net menu contextuel [ par simsim90 ] Bonjour j'ai créer un menu contextuel avec HTML Help Workshop. Il est bien lié a ma fenetre sous .net. J'ai créer mes alias sous HTML Help Workshop et Menu contextuel qui change selon les endroits. [ par VooDooS ] Bonsoir, Toujour pour mon chat, j'ais besoin de créer un menu contextuel qui change selon que le pointeur est sur un texte ou sur un autre. Par exempl menu contextuel [ par 4horizons ] Salut,je voudrais créer un menu contextuel sur des éléments d'un treeview et d'un tabstrip...(j'suis dans le vb depuis peu de tps alors répondez clair Sous menu dans un treeview [ par miss11 ] Bonjour !Je tente de faire un genre de menu contextuel une fois qu'un noeud de mon treeview a eu un "mouseover" . Par contre, je ne veux pas que le us vba excel comment avoir un menu contextuel dans un textbox [ par OZ69 ] bonjour,Est il possible d'avoir un menu contextuel dans un textbox en vba/excel? ajouter un menu contextuel sur un treeview [ par lemrabott ] bonjour je cherche à savoir comment ajouter un menu contextuel sur un treeview c a d si je fais un cliq droit sur un noeud affiche le menu merci Comment faire 1lien entre menu contextuel et un pgm VB ? [ par salazar ] Lorsque je fais un clic droit sur un fichier, dans le menu contextuel de l'exploreur, je souhaiterai qu'apparaisse un nouvel item (ex : Envoyer vers.. Menu contextuel avec images en VB.NET [ par pleth ] Bonjour,Je cherche à créer un menu contextuel dans un form. Pour un menu contextuel simple ok mais je voudrais pouvoir mettre des images devant chaque


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,526 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales