Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: Visual Basic
Expertise: Beginner
Aug 20, 1999

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 Long

Private Const LVM_SUBITEMHITTEST As Long = 4153

Private Type POINTAPI
	X As Long
	Y As Long
End Type

Private Type LVHITTESTINFO
	pt As POINTAPI
	lngFlags As Long
	lngItem As Long
	lngSubItem As Long
End Type

Private Sub ListView1_MouseUp(Button As Integer, _
	Shift As Integer, X As Single, Y As Single)
	Dim hti As LVHITTESTINFO
	Dim lngRet As Long
	hti.pt.X = X / Screen.TwipsPerPixelX
	hti.pt.Y = Y / Screen.TwipsPerPixelY
	lngRet = SendMessage(ListView1.hWnd, _
		LVM_SUBITEMHITTEST, 0&, hti)
	Debug.Print "Row=" & hti.lngItem,
	Debug.Print "Col=" & hti.lngSubItem
End Sub
Brian Pursley
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date