[示例八] 改变背景色
在VBE编辑器中插入一个用户窗体,并在上面放置一个TreeView控件和一个命令按钮,如图21所示。

图21
在用户窗体代码模块中,输入下面的代码:
Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const GWL_STYLE = -16&
Private Const TVM_SETBKCOLOR = 4381&
Private Const TVM_GETBKCOLOR = 4383&
Private Const TVS_HASLINES = 2&
Private Sub UserForm_Initialize()
Dim nodeX As Node
Dim i As Long
With TreeView1.Nodes
Set nodeX = .Add(, , "R", "Root")
nodeX.BackColor = RGB(255, 0, 0)
For i = 1 To 10
Set nodeX = .Add("R", tvwChild, "C" & i, "Child " & i)
nodeX.BackColor = RGB(255, 0, 0)
nodeX.EnsureVisible
Next
End With
End Sub
Private Sub Command1_Click()
Dim lngStyle As Long
Dim nodeX As Node
Dim i As Long
Call SendMessage(TreeView1.hWnd, TVM_SETBKCOLOR, 0, ByVal RGB(255, 0, 0))
'改变背景到红色
lngStyle = GetWindowLong(TreeView1.hWnd, GWL_STYLE)
Call SetWindowLong(TreeView1.hWnd, GWL_STYLE, lngStyle - TVS_HASLINES)
Call SetWindowLong(TreeView1.hWnd, GWL_STYLE, lngStyle)
End Sub
[其它示例]
在示例工作簿文件夹中,附带有摘自vbaexpress.com论坛组中的几个关于TreeView使用的示例。其中
(1) Structure.xls工作簿:根据工作表Structure中的数据填充TreeView控件,并将相应的信息在文字框中显示,还可以在复合框中快速搜索相应的节点并定位。
(2) TreeviewHitTest.xls工作簿:能够动态显示光标在窗体中的坐标值。