[R] Click droit sur element d'un GUICtrlCreateListView

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Vins83
Membre émérite
Membre émérite
Messages : 220
Enregistré le : mer. 25 juil. 2007 17:43
Status : Hors ligne

[R] Click droit sur element d'un GUICtrlCreateListView

#1

Message par Vins83 »

Bonjour à tous, malgré quelques recherches, je n'ai trouvé de réponses approprié.

Le titre dit tous. lors d'un GUICtrlCreateListView en prenant l'exemple autoit, je cherche a introduire une commande pour afficher x information lors d'unn click droit dessus.

exemple autoit :

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

    GUICreate("listview items", 220, 180, 100, 200, -1, $WS_EX_ACCEPTFILES)
    GUISetBkColor(0x00E0FFFF)  ; will change background color

    $listview = GUICtrlCreateListView("col1  |col2|col3  ", 10, 10, 200, 150);,$LVS_SORTDESCENDING)
    $item1 = GUICtrlCreateListViewItem("item2|col22|col23", $listview)
    $item2 = GUICtrlCreateListViewItem("item1|col12|col13", $listview)
    $item3 = GUICtrlCreateListViewItem("item3|col32|col33", $listview)
    GUISetState()
    GUICtrlSetData($item2, "ITEM1")
    GUICtrlSetData($item3, "||COL33")
    GUICtrlDelete($item1)

    Do
        $msg = GUIGetMsg()

    Until $msg = $GUI_EVENT_CLOSE
 
Cordialement
Modifié en dernier par Vins83 le mer. 03 mars 2010 06:11, modifié 1 fois.
tatane
Niveau 4
Niveau 4
Messages : 63
Enregistré le : mar. 30 juin 2009 20:47
Localisation : Angoulême
Status : Hors ligne

Re: [..] Click droit sur element d'un GUICtrlCreateListView

#2

Message par tatane »

Bonjour,

Je ne suis pas un expert mais je pense que tu vas devoir utiliser ceci pour détecter le clic droit (pour l'affichage du menu contextuel je ne sais pas) :
► Afficher le texte
Regarde aussi du côté de GuiCtrlCreateContextMenu.
Avatar du membre
Vins83
Membre émérite
Membre émérite
Messages : 220
Enregistré le : mer. 25 juil. 2007 17:43
Status : Hors ligne

Re: [..] Click droit sur element d'un GUICtrlCreateListView

#3

Message par Vins83 »

celà donne ça:

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

GUICreate("listview items", 220, 180, 100, 200, -1, $WS_EX_ACCEPTFILES)
GUISetBkColor(0x00E0FFFF) ; will change background color

$listview = GUICtrlCreateListView("col1  |col2|col3  ", 10, 10, 200, 150);,$LVS_SORTDESCENDING)
$item1 = GUICtrlCreateListViewItem("item2|col22|col23", $listview)
$item2 = GUICtrlCreateListViewItem("item1|col12|col13", $listview)
$item3 = GUICtrlCreateListViewItem("item3|col32|col33", $listview)

GUIRegisterMsg($WM_NOTIFY, "ma_fonction")

GUISetState()

While 1
    $msg = GUIGetMsg()

    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
WEnd

Func ma_fonction($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo, $tagNMHDR

    $hWndListView = $listview
    If Not IsHWnd($listview) Then $hWndListView = GUICtrlGetHandle($listview)

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")

    If $iCode = $NM_RCLICK Then
        MsgBox(0, "test", "click droit", 5)
        ;ton action
    EndIf
    Return $GUI_RUNDEFMSG
EndFunc   ;==>ma_fonction
mais j'ai du mal a saisir le truc.
tatane
Niveau 4
Niveau 4
Messages : 63
Enregistré le : mar. 30 juin 2009 20:47
Localisation : Angoulême
Status : Hors ligne

Re: [..] Click droit sur element d'un GUICtrlCreateListView

#4

Message par tatane »

Désolé c'est ma faute :(

Ajoute #include <GuiListView.au3>
et supprime $tagNMHDR de cette ligne :
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo, $tagNMHDR

Normalement lorsque tu cliqueras avec le clic droit dans la listview ton message de test apparaitra.
Ensuite si tu veux obtenir un menu contextuel selon l'item cliqué, il faudra :
- que tu récupères la position de la souris au moment du clic
- que tu testes pour savoir si un item est bien sélectionné
- que tu crées un menu contextuel GuiCtrlCreateContextMenu (éventuellement avec l'aide de GuiCtrlCreateDummy())
- que tu affiches ce menu contextuel aux positions précédemment sauvegardées

Je n'ai jamais testé le clic droit sur item de listview alors mes idées ne sont peut être pas justes ;)
Avatar du membre
Vins83
Membre émérite
Membre émérite
Messages : 220
Enregistré le : mer. 25 juil. 2007 17:43
Status : Hors ligne

Re: [..] Click droit sur element d'un GUICtrlCreateListView

#5

Message par Vins83 »

Merci à toi ,celà marche au top ;)

++ Vins
Répondre