TreeView的基本操作
1.增加顶节点
2.增加分节点
3.删除所选节点
4.预防错误的发生
5.补充说明:
6.添加弹出式菜单(有点难)
7.改变背景颜色(调用 API 函数)
1.增加顶节点
TreeView1.Nodes.Add , tvwLast, , "顶节点 " '注:基本的语法看Cmctl198.CHM这里就不说了
2.增加分节点
TreeView1.Nodes.Add 1, tvwChild, , "分节点 " '1表示一个已经存在的Node对象的索引号,这就是指在索引号为1的Node对象下新建一个分节点,可用下列语句取得你所点击的Node对象的索引号 :
Private Sub TreeView1_Click() ‘点击TreeView时发生
index = TreeView1.SelectedItem.index
End Sub
下面这句就是在你任意点击的Node对象下建立一个分节点
TreeView1.Nodes.Add index, tvwChild, , "分节点 "
3.删除节点
TreeView1.Nodes.Remove index '删除你所点击的Node对象
4.预防错误的发生
(1)没有任何Node对象了,你仍然再删除节点,解决方法如下:
On Error GoTo err
TreeView1.Nodes.Remove index '删除节点
err:
Exit Sub
(2)没有任何Node对象时,你建立分节点,解决方法如下:
On Error GoTo err
TreeView1.Nodes.Add index, tvwChild, , "分节点 " '增加顶节点
Exit Sub
err:
TreeView1.Nodes.Add , tvwLast, , "顶节点 " '增加顶节点
5.补充说明:
如要显示图像,请加载ImageList控件与TreeView邦定,然后使用如下语句:
TreeView1.Nodes.Add , tvwLast, , "顶节点 ",1 '这里的1就是ImageList控件的图像索引
最好把TreeView的Style属性设置为7,LineStylen属性设置为1会比较好看些。
Hi,如果你把上面的都搞清楚了,就可以学习一下下面的小技巧(有点难度哟)
6.增加右键弹出式菜单
Private Sub TreeView1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim nod As Node
If Button = vbRightButton Then '检测鼠标的点击
Set nod = TreeView1.HitTest(x, y) '返回你所点击的Node对象的坐标
On Error GoTo EmptyNode
nod.Selected = True ' 设置你所点击的Node对象被选中
On Error GoTo 0
' < <下面是你的自定义菜单> >
Me.PopupMenu mnuPopUp
EmptyNode:
On Error GoTo 0
End If
End Sub
好了好了,看来你的基本操作都差不多会了,现在就来个难的(没有注释),请向下接着看:
7.调用 API 函数改变 TreeView 的背景色
首先声明 API 函数
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&
下面就是改变背景色的代码
Dim lngStyle 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)
结合数据库填充TreeView的实例
Dim rs As New ADODB.Recordset
Dim i As Integer
Dim sql As String
Dim nodX As Node
Set nodX = TreeView1.Nodes.Add(, , "R", "公安派出所")
cn.Open pstr
sql = "select distinct 工作类型 from 警员人事信息 "
rs.Open sql, cn, adOpenStatic, adLockReadOnly
For i = 1 To rs.RecordCount
If Not IsNumeric(rs!工作类型) Then
Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C" & CStr(i), rs!工作类型)
End If
rs.MoveNext
Next
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
nodX.EnsureVisible