Determine Which ListView Column Was Checked

Determine Which ListView Column Was Checked

When using the ListView control in list mode (Listview.View = lvwList), no property indicates which column the user clicked on within the selected row. The ListView’s HitTest method returns only a reference to the ListItem the user clicked on, not the specific subitem. Use the SendMessage API function in the ListView’s MouseUp or MouseDown event to provide this information:

 Private Declare Function SendMessage Lib _	"user32" Alias "SendMessageA" (ByVal hWnd As _	Long, ByVal wMsg As Long, ByVal wParam As _	Long, lParam As Any) As LongPrivate Const LVM_SUBITEMHITTEST As Long = 4153Private Type POINTAPI	X As Long	Y As LongEnd TypePrivate Type LVHITTESTINFO	pt As POINTAPI	lngFlags As Long	lngItem As Long	lngSubItem As LongEnd TypePrivate Sub ListView1_MouseUp(Button As Integer, _	Shift As Integer, X As Single, Y As Single)	Dim hti As LVHITTESTINFO	Dim lngRet As Long = X / Screen.TwipsPerPixelX = Y / Screen.TwipsPerPixelY	lngRet = SendMessage(ListView1.hWnd, _		LVM_SUBITEMHITTEST, 0&, hti)	Debug.Print "Row=" & hti.lngItem,	Debug.Print "Col=" & hti.lngSubItemEnd Sub


Share the Post: