TREEVIEW SELECIONANDO PAI E FILHOS
Pessoal,
Não estou encontrando um recurso e não consegui resolver.
Tenho uma TreeView de 5 nÃveis (com a opção Checkboxes = True) e nele preciso que quando o usuário check um item, por exemplo, o ultimo nÃvel, ele já selecione os outros 4 nÃveis superiores sozinhos.
Ou também quando ele check o item Pai, ele já marque os itens filhos sozinhos.
Já encontrei material sobre isso, mais infelizmente não consegue fazer com 5 nÃveis funcionasse.
Agradeço
Option Explicit
Private Sub Form_Load()
Dim nd As Node
Set nd = TreeView1.Nodes.Add(, , [Ô]Menu1[Ô], [Ô]Descrição do Menu 1[Ô])
nd.Tag = [Ô]N1[Ô]
Set nd = TreeView1.Nodes.Add([Ô]Menu1[Ô], tvwChild, [Ô]Menu1_1[Ô], [Ô]Descrição do SubMenu 1_1[Ô])
nd.Tag = [Ô]N2[Ô]
Set nd = TreeView1.Nodes.Add([Ô]Menu1_1[Ô], tvwChild, [Ô]Menu1_1_1[Ô], [Ô]Descrição do SubSubMenu 1_1_1[Ô])
nd.Tag = [Ô]N3[Ô]
Set nd = TreeView1.Nodes.Add([Ô]Menu1_1[Ô], tvwChild, [Ô]Menu1_1_2[Ô], [Ô]Descrição do SubSubMenu 1_1_2[Ô])
nd.Tag = [Ô]N3[Ô]
Set nd = TreeView1.Nodes.Add([Ô]Menu1_1[Ô], tvwChild, [Ô]Menu1_1_3[Ô], [Ô]Descrição do SubSubMenu 1_1_3[Ô])
nd.Tag = [Ô]N3[Ô]
Set nd = TreeView1.Nodes.Add(, , [Ô]Menu2[Ô], [Ô]Descrição do Menu 2[Ô])
nd.Tag = [Ô]N1[Ô]
Set nd = TreeView1.Nodes.Add([Ô]Menu2[Ô], tvwChild, [Ô]Menu2_1[Ô], [Ô]Descrição do SubMenu 2_1[Ô])
nd.Tag = [Ô]N2[Ô]
Set nd = TreeView1.Nodes.Add([Ô]Menu2[Ô], tvwChild, [Ô]Menu2_2[Ô], [Ô]Descrição do SubMenu 2_2[Ô])
nd.Tag = [Ô]N2[Ô]
Set nd = TreeView1.Nodes.Add([Ô]Menu2[Ô], tvwChild, [Ô]Menu2_3[Ô], [Ô]Descrição do SubMenu 2_3[Ô])
nd.Tag = [Ô]N2[Ô]
Set nd = TreeView1.Nodes.Add([Ô]Menu2_3[Ô], tvwChild, [Ô]Menu2_3_1[Ô], [Ô]Descrição do SubSubMenu 2_3_1[Ô])
nd.Tag = [Ô]N3[Ô]
Set nd = TreeView1.Nodes.Add(, , [Ô]Menu3[Ô], [Ô]Descrição do Menu 3[Ô])
nd.Tag = [Ô]N1[Ô]
Set nd = TreeView1.Nodes.Add([Ô]Menu3[Ô], tvwChild, [Ô]Menu3_1[Ô], [Ô]Descrição do SubMenu 3_1[Ô])
nd.Tag = [Ô]N2[Ô]
End Sub
Private Sub Treeview1_NodeCheck(ByVal Node As MSComctlLib.Node)
Dim i As Integer
Dim x As Integer
With TreeView1
If .Nodes.Item(Node.Index).Checked = True Then
For i = CLng(.Nodes.Item(Node.Index).Index) To CLng(.Nodes.Item(Node.Index).Index + .Nodes.Item(Node.Index).Children)
.Nodes.Item(Node.Index).Checked = True
If .Nodes.Item(i).Children <> 0 Then
For x = CLng(.Nodes.Item(i).Index) To CLng(.Nodes.Item(i).Index + .Nodes.Item(i).Children)
.Nodes.Item(x).Checked = True
Next
End If
Next
If .Nodes.Item(Node.Index).Tag = [Ô]N3[Ô] Then
.Nodes.Item(Node.Index).Parent.Checked = True
.Nodes.Item(.Nodes.Item(Node.Index).Parent.Index).Parent.Checked = True
ElseIf .Nodes.Item(Node.Index).Tag = [Ô]N2[Ô] Then
.Nodes.Item(Node.Index).Parent.Checked = True
End If
ElseIf .Nodes.Item(Node.Index).Checked = False Then
For i = CLng(.Nodes.Item(Node.Index).Index) To CLng(.Nodes.Item(Node.Index).Index + .Nodes.Item(Node.Index).Children)
.Nodes.Item(Node.Index).Checked = False
If .Nodes.Item(i).Children <> 0 Then
For x = CLng(.Nodes.Item(i).Index) To CLng(.Nodes.Item(i).Index + .Nodes.Item(i).Children)
.Nodes.Item(x).Checked = False
Next
End If
Next
End If
End With
End Sub
Não estou encontrando um recurso e não consegui resolver.
Tenho uma TreeView de 5 nÃveis (com a opção Checkboxes = True) e nele preciso que quando o usuário check um item, por exemplo, o ultimo nÃvel, ele já selecione os outros 4 nÃveis superiores sozinhos.
Ou também quando ele check o item Pai, ele já marque os itens filhos sozinhos.
Já encontrei material sobre isso, mais infelizmente não consegue fazer com 5 nÃveis funcionasse.
Agradeço
Option Explicit
Private Sub Form_Load()
Dim nd As Node
Set nd = TreeView1.Nodes.Add(, , [Ô]Menu1[Ô], [Ô]Descrição do Menu 1[Ô])
nd.Tag = [Ô]N1[Ô]
Set nd = TreeView1.Nodes.Add([Ô]Menu1[Ô], tvwChild, [Ô]Menu1_1[Ô], [Ô]Descrição do SubMenu 1_1[Ô])
nd.Tag = [Ô]N2[Ô]
Set nd = TreeView1.Nodes.Add([Ô]Menu1_1[Ô], tvwChild, [Ô]Menu1_1_1[Ô], [Ô]Descrição do SubSubMenu 1_1_1[Ô])
nd.Tag = [Ô]N3[Ô]
Set nd = TreeView1.Nodes.Add([Ô]Menu1_1[Ô], tvwChild, [Ô]Menu1_1_2[Ô], [Ô]Descrição do SubSubMenu 1_1_2[Ô])
nd.Tag = [Ô]N3[Ô]
Set nd = TreeView1.Nodes.Add([Ô]Menu1_1[Ô], tvwChild, [Ô]Menu1_1_3[Ô], [Ô]Descrição do SubSubMenu 1_1_3[Ô])
nd.Tag = [Ô]N3[Ô]
Set nd = TreeView1.Nodes.Add(, , [Ô]Menu2[Ô], [Ô]Descrição do Menu 2[Ô])
nd.Tag = [Ô]N1[Ô]
Set nd = TreeView1.Nodes.Add([Ô]Menu2[Ô], tvwChild, [Ô]Menu2_1[Ô], [Ô]Descrição do SubMenu 2_1[Ô])
nd.Tag = [Ô]N2[Ô]
Set nd = TreeView1.Nodes.Add([Ô]Menu2[Ô], tvwChild, [Ô]Menu2_2[Ô], [Ô]Descrição do SubMenu 2_2[Ô])
nd.Tag = [Ô]N2[Ô]
Set nd = TreeView1.Nodes.Add([Ô]Menu2[Ô], tvwChild, [Ô]Menu2_3[Ô], [Ô]Descrição do SubMenu 2_3[Ô])
nd.Tag = [Ô]N2[Ô]
Set nd = TreeView1.Nodes.Add([Ô]Menu2_3[Ô], tvwChild, [Ô]Menu2_3_1[Ô], [Ô]Descrição do SubSubMenu 2_3_1[Ô])
nd.Tag = [Ô]N3[Ô]
Set nd = TreeView1.Nodes.Add(, , [Ô]Menu3[Ô], [Ô]Descrição do Menu 3[Ô])
nd.Tag = [Ô]N1[Ô]
Set nd = TreeView1.Nodes.Add([Ô]Menu3[Ô], tvwChild, [Ô]Menu3_1[Ô], [Ô]Descrição do SubMenu 3_1[Ô])
nd.Tag = [Ô]N2[Ô]
End Sub
Private Sub Treeview1_NodeCheck(ByVal Node As MSComctlLib.Node)
Dim i As Integer
Dim x As Integer
With TreeView1
If .Nodes.Item(Node.Index).Checked = True Then
For i = CLng(.Nodes.Item(Node.Index).Index) To CLng(.Nodes.Item(Node.Index).Index + .Nodes.Item(Node.Index).Children)
.Nodes.Item(Node.Index).Checked = True
If .Nodes.Item(i).Children <> 0 Then
For x = CLng(.Nodes.Item(i).Index) To CLng(.Nodes.Item(i).Index + .Nodes.Item(i).Children)
.Nodes.Item(x).Checked = True
Next
End If
Next
If .Nodes.Item(Node.Index).Tag = [Ô]N3[Ô] Then
.Nodes.Item(Node.Index).Parent.Checked = True
.Nodes.Item(.Nodes.Item(Node.Index).Parent.Index).Parent.Checked = True
ElseIf .Nodes.Item(Node.Index).Tag = [Ô]N2[Ô] Then
.Nodes.Item(Node.Index).Parent.Checked = True
End If
ElseIf .Nodes.Item(Node.Index).Checked = False Then
For i = CLng(.Nodes.Item(Node.Index).Index) To CLng(.Nodes.Item(Node.Index).Index + .Nodes.Item(Node.Index).Children)
.Nodes.Item(Node.Index).Checked = False
If .Nodes.Item(i).Children <> 0 Then
For x = CLng(.Nodes.Item(i).Index) To CLng(.Nodes.Item(i).Index + .Nodes.Item(i).Children)
.Nodes.Item(x).Checked = False
Next
End If
Next
End If
End With
End Sub
Nessa caso funciona com 3 nÃveis
Mas preciso que seja com 5 nÃveis, só que as vezes existe alguns que não são 5 nÃveis,
As vezes são 1 nÃvel, 2 nÃveis, 3 nÃveis, 4 nÃveis e até 5 nÃveis.
Mas preciso que seja com 5 nÃveis, só que as vezes existe alguns que não são 5 nÃveis,
As vezes são 1 nÃvel, 2 nÃveis, 3 nÃveis, 4 nÃveis e até 5 nÃveis.
Tópico encerrado , respostas não são mais permitidas