ListView和TreeView的HitTest控制妙用

翻译|其它|编辑:郝浩|2007-08-06 08:58:13.000|阅读 1820 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

        ListView TreeView 可以通过 HitTest 来实现对各项的控制,那么 ListBox 有没有方法方法实现对其项的控制呢?答案上肯定的。

下面的例子实现的 ListBox 各项的自动选择,就象弹出 ComboBox 的下拉框,然后 移动鼠标时,光条跟着移动。
>>
步骤1----建立新工程,在窗体上放置 ListBox 控件。
>>
步骤2----编写如下代码:

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 LB_ITEMFROMPOINT = &H1A9

Private Sub Form_Load()
With List1
.AddItem "
程序编制:VB 编程乐园"
.AddItem "Mailto:vbeden@21cn.com"
.AddItem "Http://www.vbeden.com"
End With
End Sub

Private Sub List1_MouseMove(Button As Integer, Shift As Integer, _
X As Single, Y As Single)

Dim lXPoint As Long
Dim lYPoint As Long
Dim lIndex As Long
lXPoint = CLng(X / Screen.TwipsPerPixelX)
lYPoint = CLng(Y / Screen.TwipsPerPixelY)
With List1
lIndex = SendMessage(.hwnd, LB_ITEMFROMPOINT, 0, _
ByVal ((lYPoint * 65536) + lXPoint))
If (lIndex >= 0) And (lIndex <= .ListCount) Then
.Selected(lIndex) = True
Else
.Selected(lIndex) = False
End If
End With
End Sub

>>
步骤3----编译运行,鼠标在 ListBox 上移动,看看是不是自动选择。

************************************************************************

 

ListView 控件和 TreeView 控件都提供了 HitTest 方法。这个方法返回对位于 x y 坐标的 ListItem 对象或 Node 对象的引用。通常与拖放操作或鼠标移动操作一 起使用,来确定鼠标下的目标项在当前位置是否可用。
其语法为:

obj ect.HitTest (x As Single, y As Single)

下面的例子实现ListView不同的项具有不同的ToolTipText
>>
步骤1----建立新工程,加入部件“Microsoft common controls 6.0(sp3)”
>>
步骤2----在工程上放置 ListView 控件。
>>
步骤3----编写如下代码:

Private Sub Form_Load()
ListView1.ListItems.Add , , "
程序编制:VB 编程乐园"
ListView1.ListItems.Add , , "EMail:vbeden@21cn.com"
ListView1.ListItems.Add , , "Http://www.vbeden.com"
End Sub

Private Sub ListView1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim iItem As ListItem
Set iItem = ListView1.HitTest(x, y)
If iItem Is Nothing Then Exit Sub
ListView1.ToolTipText = iItem.Text
End Sub

>>
步骤4----编译运行,看看是不是不同的项对应不同的提示。

 


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP