form1 treeview1 comand1
原码如下:
定义结构
Type AA
dept As String '树的节点文本
loc_id As Integer '部门唯一索引
prev_id As Integer '部门的父结点
End Type窗体1
Dim MYaa() As AAPrivate Sub Form_Load()
'初始化数组
ReDim MYaa(6)
MYaa(1).dept = "总部"
MYaa(1).loc_id = 1
MYaa(1).prev_id = 0
MYaa(2).dept = "财务部"
MYaa(2).loc_id = 2
MYaa(2).prev_id = 1
MYaa(3).dept = "生产部"
MYaa(3).loc_id = 3
MYaa(3).prev_id = 1
MYaa(4).dept = "一车间"
MYaa(4).loc_id = 4
MYaa(4).prev_id = 3
MYaa(5).dept = "一小组"
MYaa(5).loc_id = 7
MYaa(5).prev_id = 4
MYaa(6).dept = "销售部"
MYaa(6).loc_id = 6
MYaa(6).prev_id = 1
End SubPrivate Sub Command1_Click()
AddTree
MsgBox TreeView1.Nodes.Count
End SubPrivate Sub AddTree(Optional KeyX)
'On Error Resume Next
Dim NodeX As Node
If IsMissing(KeyX) Then
For i = 1 To 6
If MYaa(i).prev_id = 0 Then
Set NodeX = TreeView1.Nodes.Add(, , "r" & MYaa(i).loc_id, MYaa(i).dept)
NodeX.Tag = MYaa(i).prev_id
KeyX = MYaa(i).loc_id
TreeView1.Nodes(1).Expanded = True
End If
Next i
AddTree (KeyX)
Else
For i = 1 To 6
If MYaa(i).prev_id = KeyX Then
Set NodeX = TreeView1.Nodes.Add("r" & KeyX, tvwChild, "r" & MYaa(i).loc_id, MYaa(i).dept)
NodeX.Tag = MYaa(i).prev_id
KeyX = MYaa(i).loc_id
'就是这附近出问题,怎么加到财务部就不加了???如果找不 到父结点是2的就应该回推,怎么不推呢???
AddTree (KeyX)
End If
Next i
End If
End Sub
原码如下:
定义结构
Type AA
dept As String '树的节点文本
loc_id As Integer '部门唯一索引
prev_id As Integer '部门的父结点
End Type窗体1
Dim MYaa() As AAPrivate Sub Form_Load()
'初始化数组
ReDim MYaa(6)
MYaa(1).dept = "总部"
MYaa(1).loc_id = 1
MYaa(1).prev_id = 0
MYaa(2).dept = "财务部"
MYaa(2).loc_id = 2
MYaa(2).prev_id = 1
MYaa(3).dept = "生产部"
MYaa(3).loc_id = 3
MYaa(3).prev_id = 1
MYaa(4).dept = "一车间"
MYaa(4).loc_id = 4
MYaa(4).prev_id = 3
MYaa(5).dept = "一小组"
MYaa(5).loc_id = 7
MYaa(5).prev_id = 4
MYaa(6).dept = "销售部"
MYaa(6).loc_id = 6
MYaa(6).prev_id = 1
End SubPrivate Sub Command1_Click()
AddTree
MsgBox TreeView1.Nodes.Count
End SubPrivate Sub AddTree(Optional KeyX)
'On Error Resume Next
Dim NodeX As Node
If IsMissing(KeyX) Then
For i = 1 To 6
If MYaa(i).prev_id = 0 Then
Set NodeX = TreeView1.Nodes.Add(, , "r" & MYaa(i).loc_id, MYaa(i).dept)
NodeX.Tag = MYaa(i).prev_id
KeyX = MYaa(i).loc_id
TreeView1.Nodes(1).Expanded = True
End If
Next i
AddTree (KeyX)
Else
For i = 1 To 6
If MYaa(i).prev_id = KeyX Then
Set NodeX = TreeView1.Nodes.Add("r" & KeyX, tvwChild, "r" & MYaa(i).loc_id, MYaa(i).dept)
NodeX.Tag = MYaa(i).prev_id
KeyX = MYaa(i).loc_id
'就是这附近出问题,怎么加到财务部就不加了???如果找不 到父结点是2的就应该回推,怎么不推呢???
AddTree (KeyX)
End If
Next i
End If
End Sub
dept As String '树的节点文本
loc_id As Integer '部门唯一索引
prev_id As Integer '部门的父结点
End TypeDim MYaa() As AAPrivate Sub Form_Load()
'初始化数组
ReDim MYaa(1 To 8)
MYaa(1).dept = "总部"
MYaa(1).loc_id = 1
MYaa(1).prev_id = 0
MYaa(7).dept = "财务部"
MYaa(7).loc_id = 2
MYaa(7).prev_id = 1
MYaa(3).dept = "生产部"
MYaa(3).loc_id = 3
MYaa(3).prev_id = 1
MYaa(4).dept = "一小组"
MYaa(4).loc_id = 7
MYaa(4).prev_id = 4
MYaa(5).dept = "一车间"
MYaa(5).loc_id = 4
MYaa(5).prev_id = 3
MYaa(6).dept = "销售部"
MYaa(6).loc_id = 6
MYaa(6).prev_id = 1
MYaa(8).dept = "总部1"
MYaa(8).loc_id = 11
MYaa(8).prev_id = 0
MYaa(2).dept = "又一个车间"
MYaa(2).loc_id = 12
MYaa(2).prev_id = 11
End SubPrivate Sub Command1_Click()
TreeView1.Nodes.Clear
AddNode'MsgBox TreeView1.Nodes.Count
End Sub
Private Sub AddNode(Optional ByVal sKeyIn As String)
Dim i As Long
Dim sKey As String
Dim sParentKey As String
Dim oNodes As Nodes
Dim oNode As Node
Set oNodes = TreeView1.Nodes
For i = LBound(MYaa) To UBound(MYaa)
With MYaa(i)
sParentKey = "r" & CStr(.prev_id)
sKey = "r" & CStr(.loc_id)
If sKeyIn = "" Then
If .prev_id <> 0 Then
On Error Resume Next
Set oNode = oNodes(sParentKey)
If Err.Number = 35601 Then '无此父节点,添加之
AddNode sParentKey
End If
Set oNode = oNodes(sKey)
If Err.Number = 35601 Then '无此节点,添加之
Set oNode = oNodes.Add(sParentKey, tvwChild, sKey, .dept)
End If
On Error GoTo 0
Else
On Error Resume Next
Set oNode = oNodes(sKey)
If Err.Number = 35601 Then '无此节点,添加之
Set oNode = oNodes.Add(, , sKey, .dept)
End If
On Error GoTo 0
End If
oNode.Expanded = True
Else
If sKey = sKeyIn Then
If .prev_id <> 0 Then
On Error Resume Next
Set oNode = oNodes(sParentKey)
If Err.Number = 35601 Then '无此父节点,添加之
AddNode sParentKey
End If
Set oNode = oNodes(sKey)
If Err.Number = 35601 Then '无此节点,添加之
Set oNode = oNodes.Add(sParentKey, tvwChild, sKey, .dept)
End If
On Error GoTo 0
Else
On Error Resume Next
Set oNode = oNodes(sKey)
If Err.Number = 35601 Then '无此节点,添加之
Set oNode = oNodes.Add(, , sKey, .dept)
End If
On Error GoTo 0
End If
oNode.Expanded = True
Exit For
End If
End If
End With
Next
End Sub