Pour modifier le mode de fonctionnement de l'affichage du controle ListView il faut passer
par les API de Windows
Pour cela il faut modifier le style d'affichage des listview.
Un premier appel aux API permet de connaitre le style actuel, il suffit ensuite de le modifier.
Dans la zone de déclaration des fonctions et constantes
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
'
' Pour changer le style des listview
'
Public Const LVS_EX_GRIDLINES = &H1
Public Const LVS_EX_SUBITEMIMAGES = &H2
Public Const LVS_EX_CHECKBOXES = &H4
Public Const LVS_EX_TRACKSELECT = &H8
Public Const LVS_EX_HEADERDRAGDROP = &H10
Public Const LVS_EX_FULLROWSELECT = &H20
Public Const LVM_FIRST = &H1000
Public Const LVM_HITTEST As Long = (LVM_FIRST + 18)
Public Const LVM_SUBITEMHITTEST As Long = (LVM_FIRST + 57)
Public Const LVM_GETSUBITEMRECT As Long = (LVM_FIRST + 56)
Public Const LVHT_NOWHERE As Long = &H1
Public Const LVHT_ONITEMICON As Long = &H2
Public Const LVHT_ONITEMLABEL As Long = &H4
Public Const LVHT_ONITEMSTATEICON As Long = &H8
Public Const LVHT_ONITEM As Long = (LVHT_ONITEMICON Or LVHT_ONITEMLABEL Or LVHT_ONITEMSTATEICON)
Public Const LVM_GETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + &H37
Public Const LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + &H36
Public Const LVNI_ALL = &H0
Public Const LVNI_SELECTED = &H2
Public Const LVIF_STATE = &H8
Public Const LVM_GETNEXTITEM = (LVM_FIRST + 12)
' Check boxes:
Public Const LVM_GETITEMSTATE = (LVM_FIRST + 44)
Public Const LVM_SETITEMSTATE = (LVM_FIRST + 43)
Public Const LVIS_STATEIMAGEMASK = &HF000&
Type LVITEM
mask As Long
iItem As Long
iSubItem As Long
state As Long
stateMask As Long
pszText As String
cchTextMax As Long
iImage As Long
lParam As Long
'#if (_WIN32_IE >= 0x0300)
iIndent As Long
'#End If
End Type
Dans la zone de chargement d’un formulaire
Dim lStyle As Long
lStyle = SendMessage(List_HWND, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0)
‘
‘ Ajout de la possibilité de sélectionner une ligne en cliquant sur toutes les colonnes et non uniquement sur la
‘ première
‘
lStyle = lStyle Or LVS_EX_FULLROWSELECT
Call SendMessage(List_HWND, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, ByVal lStyle)