我在这里学编程 索引篇 共55页[1 2 3 4 5 6 7 >»<... 最后一页]

方法(H-H

HitTest

这个方法返回对位于 x 和 y 坐标的 ListItem 对象或 Node 对象的引用。通常与拖放操作一起使用,来确定放下的目标项在当前位置是否可用。

语法:
object.HitTest (x As Single, y As Single)
x,y 目标对象的坐标,它或是 Node 对象,或是 ListItem 对象。

说明:
如果在指定的坐标没有对象,HitTest 方法返回 Nothing。

HitTest 方法常常与 DropHighlight 属性一起使用来突出鼠标所指的对象。DropHighlight 属性要求对指定要加亮的对象的引用。为了确定那个对象,HitTest 方法与返回 x 和 y 坐标的事件(如 DragOver 事件)一起使用,如下所示:

Private Sub TreeView1_DragOver _
(Source As Control, X As Single, Y As Single, State As Integer)
Set TreeView1.DropHighlight = TreeView1.HitTest(X,Y)
End Sub

在后面的 DragDrop 事件中使用 DropHighlight 属性来返回对源控件最终落在其上的对象的引用,如以下代码所示:

Private Sub TreeView1_DragDrop _
(Source As Control, x As Single, y As Single)
'DropHighlight 返回对其上发生放下的对象的引用。
Me.Caption = TreeView1.DropHighlight.Text
'为了释放 DropHighlight 引用,设置它为 Nothing。
Set TreeView1.DropHighlight = Nothing
End Sub

注意在上面例子中,在过程完成之后,属性被设置为 Nothing。为了释放突出显示作用,必须这样做。

例:这个例子在 TreeView 控件中添加几个 Node 对象。在选择了一个 Node 对象之后,可以将它拖动到任何其它 Node。为试用此例,要在窗体上安放 TreeView 和 ImageList 控件,并在窗体的声明部分粘贴该代码。运行此例,并且在附近拖动一些 Node 对象来观察结果。

'声明全局变量。
Dim indrag As Boolean '指示拖放操作的标志。
Dim nodX As Object '要拖动的项。

Private Sub Form_Load()
'在 Imagelist 控件中加载一个位图。
Dim imgX As ListImage
Dim BitmapPath As String
BitmapPath = "icons\mail\mail01a.ico"
Set imgX = imagelist1.ListImages.Add(, , LoadPicture(BitmapPath))

'初始化 TreeView 控件,并创建若干节点。
TreeView1.ImageList = imagelist1
Dim nodX As Node '创建树。
Set nodX = TreeView1.Nodes.Add(, , , "Parent1", 1)
Set nodX = TreeView1.Nodes.Add(, , , "Parent2", 1)
Set nodX = TreeView1.Nodes.Add(1, tvwChild, , "Child 1", 1)
Set nodX = TreeView1.Nodes.Add(1, tvwChild, , "Child 2", 1)
Set nodX = TreeView1.Nodes.Add(2, tvwChild, , "Child 3", 1)
Set nodX = TreeView1.Nodes.Add(2, tvwChild, , "Child 4", 1)
Set nodX = TreeView1.Nodes.Add(3, tvwChild, , "Child 5", 1)
nodX.EnsureVisible '展开树以显示全部节点。
End Sub

Private Sub TreeView1_MouseDown_
(Button As Integer, Shift As Integer, x As Single, y As Single)
Set nodX = TreeView1.SelectedItem '设置要拖动的项。
End Sub

Private Sub TreeView1_MouseMove _
(Button As Integer, Shift As Integer, x As Single, y As Single)
If Button = vbLeftButton Then '指示一个拖动操作。
indrag = True '设置 flag 为 true。
'使用CreateDragImage方法设置拖动图标。
TreeView1.DragIcon = TreeView1.SelectedItem.CreateDragImage
TreeView1.Drag vbBeginDrag '拖动操作。
End If
End Sub

Private Sub TreeView1_DragDrop_
(Source As Control, x As Single, y As Single)
If TreeView1.DropHighlight Is Nothing Then
Set TreeView1.DropHighlight = Nothing
indrag = False
Exit Sub
Else
If nodX = TreeView1.DropHighlight Then Exit Sub
Cls
Print nodX.Text & " dropped on " & TreeView1.DropHighlight.Text
Set TreeView1.DropHighlight = Nothing
indrag = False
End If
End Sub

Private Sub TreeView1_DragOver(Source As Control, x As Single, y As Single, State As Integer)
If indrag = True Then
'设置 DropHighlight 为鼠标坐标。
Set TreeView1.DropHighlight = TreeView1.HitTest(x, y)
End If
End Sub
 

我在这里学编程 索引篇 共55页[1 2 3 4 5 6 7 >»<... 最后一页]