VBcoders Guest



Don't have an account yet? Register
 


Forgot Password?



TreeView Check parent nodes when all child nodes are checked

by Steve Gillham (1 Submission)
Category: Files/File Controls/Input/Output
Compatability: Visual Basic 5.0
Difficulty: Advanced
Date Added: Wed 3rd February 2021
Rating: (5 Votes)

Will check the parent node of a Treeview control when all of its child nodes are checked. will uncheck parent node when any one of it's child nodes are unchecked

Assumes
Assumes: Treeview control named TreeView1
Side Effects
none that I am aware of

Rate TreeView Check parent nodes when all child nodes are checked

'==================================='
' This code has been provided for  '
' use as FREEWARE - you may edit  '
' or change any part of it for your '
' own needs. But please give credit'
' to myself, and do not sell this  '
' unmodified code          '
'    By Steve Gillham      '
'==================================='

Private Sub TreeView1_NodeCheck(ByVal node As MSComctlLib.node)
    Call CheckChild(TreeView1, node)  'perform check on child nodes
      
End Sub
Private Sub CheckChild(Tree As TreeView, CurrentNode As node)
  Dim ParentIndex   'used to find out the index of the parent node from the child node that was clicked
  Dim CheckChecked As Integer   'Used to decide whether or not parent is to be checked
  Dim j As Integer  'Counter
  
  'This code works by finding the parent node of the node
  'that you clicked on and then looking to see if all of
  'the other same level nodes (as the one you clicked)
  'are checked. If so it then checks the parent node and Vice Versa
  
  If CurrentNode.Checked = True Then 'If node is checked then check parent node ONLY if ALL child nodes are checked
  
    If Tree.Nodes.Item(CurrentNode.Index).Checked = True Then  'If "My Node"(My Node's Index) is checked then
        ParentIndex = Tree.Nodes.Item(CurrentNode.Index).Parent.Index  'locate index of parent node
      For j = 1 To Tree.Nodes.Item(ParentIndex).Children         'run loop to find out which child nodes
        If Tree.Nodes.Item(ParentIndex + j).Checked = False Then    'are checked and which are not...
          Me.BackColor = vbRed                    'Store value of check/uncheck as 0 for
          CheckChecked = CheckChecked + 0               'unchecked and 1 for checked, add to
        ElseIf Tree.Nodes.Item(ParentIndex + j).Checked = True Then   'previous value
          Me.BackColor = vbGreen
          CheckChecked = CheckChecked + 1
        End If
      Next j
      If CheckChecked = Tree.Nodes.Item(ParentIndex).Children Then    'if the number of checked nodes is equal
        Tree.Nodes.Item(ParentIndex).Checked = True           'to number of child nodes then all child
      Else                                'nodes are checked so check parent node
        Tree.Nodes.Item(ParentIndex).Checked = False
      End If
    End If
  ElseIf CurrentNode.Checked = False Then                     'if the current node is unchecked then
        ParentIndex = Tree.Nodes.Item(CurrentNode.Index).Parent.Index    'uncheck the parent node as ALL child nodes
      Tree.Nodes.Item(ParentIndex).Checked = False              'must be checked to before the parent node is checked
  End If
End Sub

Download this snippet    Add to My Saved Code

TreeView Check parent nodes when all child nodes are checked Comments

No comments have been posted about TreeView Check parent nodes when all child nodes are checked. Why not be the first to post a comment about TreeView Check parent nodes when all child nodes are checked.

Post your comment

Subject:
Message:
0/1000 characters