热情软件屋

 

如何捕获ListView的滚动条滚动事件


编号:QA002772
建立日期: 2000年3月27日 最后修改日期:2000年3月27日
所属类别:

XU JiaQiang:
    操作系统:win98
    编程工具:vb 6.0
    问题:如何捕获ListView的滚动条滚动事件?在ListView控件的报表视图中,我用一个ComBoBox控件模拟listSubItem对象的下拉列表功能,我想当ListView的滚动条滚动时隐藏或重新定位ComBoBox的位置,使之与ListSubItem吻合,但是ListView没有scroll事件,请问如何实现?

回答:

    对于以报表方式显示的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

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio