如何捕获ListView的滚动条滚动事件
编号:QA002772
建立日期: 2000年3月27日 最后修改日期:2000年3月27日
所属类别:
Q
XU JiaQiang:
操作系统:win98
编程工具:vb 6.0
问题:如何捕获ListView的滚动条滚动事件?在ListView控件的报表视图中,我用一个ComBoBox控件模拟listSubItem对象的下拉列表功能,我想当ListView的滚动条滚动时隐藏或重新定位ComBoBox的位置,使之与ListSubItem吻合,但是ListView没有scroll事件,请问如何实现?
A回答:
对于以报表方式显示的ListView控件,利用SendMessage函数发送LVM_GETTOPINDEX消息个体控件摁扣以获得控件当前位于ListView视图内最顶端的Item在ListView中的索引。如果滚动了ListView,该值会改变,你可以使用一个笨办法,利用一个Timer控件,每一段时间发送LVM_GETTOPINDEX消息,这样就可以得知ListView是否被滚动,下面是一个范例。
Option Explicit
Const LVM_FIRST = &H1000
Const LVM_GETTOPINDEX = (LVM_FIRST + 39)
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 Sub Command1_Click()
Debug.Print SendMessage(ListView1.hwnd, LVM_GETTOPINDEX, 0, 0)
End Sub
Private Sub Form_Load()
Dim x As ListItem
Dim i As Integer
For i = 1 To 20
Set x = ListView1.ListItems.Add(, , "Item" + Str(i))
Next i
End Sub
点击Command1就可以得到当前位于ListView视图内最顶端的Item在ListView中的索引。
欢迎到我的VB站点 http://www.applevb.com
此问题由Chen回答。
附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, Windows 9x控件, listview, treeview, monthview, progress bar。
| |
|
|
| |
|
|