作者:绿色风
分类:
时间:2022-08-17
浏览:123
楼主 amulee |
Q:如何正确使用TreeView的HitTest方法? A:在TreeView控件中有一个非常有用的方法HitTest,其功能是返回指定坐标的节点对象。其语法如下:- object.HitTest(x As Single, y As Single)
其中x和y代表坐标点,但必须要注意的是这里的x和y表示的是单位缇。任何数值必须转换为相应的缇才能正确得到HitTest的返回结果。
参考以下示例。本例中利用MouseMove事件和HitTest方法,返回当前鼠标所指向的节点的显示文本。代码如下:
- Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
- Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nindex As Long) As Long
- Private PixX2TwipX As Double '像素转换成缇
- Private PixX2TwipY As Double
- Private Const LOGPIXELSX = 88
- Private Const LOGPIXELSY = 90
- Private Sub TreeView1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)
- If Not TreeView1.HitTest(x * PixX2TwipX, y * PixX2TwipY) Is Nothing Then Label1.Caption = TreeView1.HitTest(x * PixX2TwipX, y * PixX2TwipY).Text
- End Sub
- ''初始化窗体
- Private Sub UserForm_Initialize()
- Dim Dep1 As Node
- Dim Dep2 As Node
- Dim i As Long
- Dim Arr
- On Error Resume Next
- Arr = Range("A2:C" & Range("A65536").End(xlUp).Row)
- With TreeView1
- For i = 1 To UBound(Arr)
- Set Dep1 = .Nodes(Arr(i, 2))
- If Err.Number <> 0 Then
- Err.Clear
- Set Dep1 = .Nodes.Add(Key:=Arr(i, 2), Text:=Arr(i, 2))
- End If
- Set Dep2 = .Nodes(Arr(i, 3))
- If Err.Number <> 0 Then
- Err.Clear
- Set Dep2 = .Nodes.Add(relative:=Dep1, relationship:=tvwChild, Key:=Arr(i, 3), Text:=Arr(i, 3))
- End If
- .Nodes.Add relative:=Dep2, relationship:=tvwChild, Key:=i & Arr(i, 1), Text:=Arr(i, 1)
- Next
- Set Dep1 = .Nodes("人事")
- End With
- PixX2TwipX = Application.InchesToPoints(1) * 20 / GetDeviceCaps(GetDC(0), LOGPIXELSX)
- PixX2TwipY = Application.InchesToPoints(1) * 20 / GetDeviceCaps(GetDC(0), LOGPIXELSY)
- End Sub
TreeView的HitTest.rar |
2楼 篮板球 |
VBA很值得学习。 |
3楼 liucq |
学习 |
4楼 hwc2ycy |
在对象里看到这个方法,以为是X,Y只是简单的数值,没想到还要经过这么一番转变。学习了。 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一