2020-12-14

TreeView的基本操作

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值