Modification d'affichage Listview

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)