Page 1 sur 1
[R] ListView : empêcher sélection
Posté : jeu. 06 mars 2014 17:45
par aulus
Bonjour,
Je souhaite utiliser une listView pour simplement afficher les résultats d'une fonction, sans donner la possibilité à l'utilisateur de cliquer sur l'un des items de l'affichage, ce qui serait inutile et dégraderait le confort de la lecture par la présence de la barre bleue.
Je sais éviter la sélection automatique à l'ouverture de la ListView par :
Je vous remercie.
Re: [..] ListView : empêcher sélection
Posté : jeu. 06 mars 2014 18:55
par TommyDDR
Re: [..] ListView : empêcher sélection
Posté : jeu. 06 mars 2014 19:43
par aulus
Merci pour votre réponse.
J'avais pensé aussi à GUI_DISABLE, mais ça ne convient pas car cette fonction empêche le fonctionnement des barres de défilement.
Re: [..] ListView : empêcher sélection
Posté : jeu. 06 mars 2014 20:24
par mikell
Ouala
► Afficher le texte
Code : Tout sélectionner
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
$gui = GUICreate("", 300, 250)
Local $listView = GUICtrlCreateListView("A|B|C|D|E|F|G", 25, 25, 250, 200, -1, $LVS_EX_GRIDLINES)
For $i = 0 To 20
GUICtrlCreateListViewItem("A" & $i & "|B" & $i & "|C" & $i & "|D" & $i & "|E" & $i & "|F" & $i & "|G" & $i, $listView)
Next
GUISetState()
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
Local $tNMHDR, $hWndFrom, $iCode
$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$hWndFrom = DllStructGetData($tNMHDR, "hWndFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
$hListView = GuiCtrlGetHandle($listView)
Switch $hWndFrom
Case $hListView
Switch $iCode
Case $NM_CUSTOMDRAW
Local $tCustDraw = DllStructCreate($tagNMLVCUSTOMDRAW, $lParam)
Local $iDrawStage = DllStructGetData($tCustDraw, "dwDrawStage")
Local $iItem = DllStructGetData($tCustDraw, "dwItemSpec")
If $iDrawStage = $CDDS_PREPAINT Then Return $CDRF_NOTIFYITEMDRAW
If $iDrawStage = $CDDS_ITEMPREPAINT Then
ControlListView($gui, "", $listview, "DeSelect", $iItem)
_GUICtrlListView_SetItemFocused($hListView, $iItem, false)
EndIf
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
Re: [..] ListView : empêcher sélection
Posté : jeu. 06 mars 2014 20:37
par aulus
Bonsoir,
L'affaire ne se résumait donc pas à un simple style, ou à l'action d'un ControlListView ou encore d'un GUICtrlSetState comme je le pensais.
Encore un grand merci.
Re: [R] ListView : empêcher sélection
Posté : jeu. 06 mars 2014 21:45
par mikell
Bah j'ai choisi cette méthode mais il y en a certainement d'autres
La plus évidente :
► Afficher le texte
Code : Tout sélectionner
#include <GuiConstantsEx.au3>
#include <ListviewConstants.au3>
$gui = GUICreate("", 300, 250)
Local $listView = GUICtrlCreateListView("A|B|C|D", 25, 25, 250, 200, -1, $LVS_EX_GRIDLINES)
For $i = 0 To 20
GUICtrlCreateListViewItem("A" & $i & "|B" & $i & "|C" & $i & "|D" & $i, $listView)
Next
$label = GUICtrlCreateLabel("", 25, 25, 220, 200)
GUICtrlSetBkColor($label, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetState($label, $GUI_ONTOP)
GUISetState()
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

Re: [R] ListView : empêcher sélection
Posté : ven. 07 mars 2014 09:15
par aulus
Bonjour,
Alors là, j'en tombe sur mon... séant ! Voilà qu'en 3 lignes l'affaire est entendue ! Admirable astuce !