Tengo un treeview con checkboxs y quiero que cuando se seleccione un Check de un grupo me seleccione todos los chick anidados a ese grupo como hacer, también como hago para que cuando uno elija un item de un grupo se tilde el del grupo indicando que se selecciono al menos un item dentro del grupo, como lo hacen los instaladores de Office y demás programas que se personalizan con la interfaza de un árbol
1 respuesta
Respuesta de riquezada
1
1
riquezada, informatica electronica y control automatico diseño de circuitos...
bueno la unica forma es la larga por ejemplo tengo 5 check dentro de un timer pones lo siguiente if check1 or check2 or check3 or check4 or check5=1 then check1 =1 check2 =1 check3 =1 check4 =1 check5=1 end if el timer va a leer cada cierto tiempo que depende de interval y si uno esta activado se activan todos lo de item de igual forma pero pones un solo item o los que desees que son los minimos reqeridos y los otros dejas que lo seleccione el usuario manualmente para volver atras pones un option que deje todo en cero eso es solo una idea o lo puedes hacer con un flag
Gracias por responder amigo te estoy muy agradecido, pero encontré la forma que necesitaba aquí te la paso aquí hago varias cosas - Si selecciono un hijo marco al`padre que se selecciono algo dentro - Si selecciono al padre marca a todos sus hijos - Si marca algún hijo verifico que todos los hermansos estén marcados y pongo al padre en rojo - Si desmarco un hijo, verifico todos sus hermanos si están desmarcados y si es así pongo al padre en falso y lo pongo en negro Private Sub tgrupos_NodeCheck(ByVal Node As MSComctlLib.Node) If tgrupos.Nodes(Node.Index).Children = 0 Then 'veo si no tiene hijos If tgrupos.Nodes(Node.Index).Parent.Checked = False Then 'veo cual es el padre y si esta en false tgrupos.Nodes(Node.Index).Parent.Checked = True ' le pongo en true 'tgrupos.Nodes(Node.Index).Parent.ForeColor = vbRed ' le cambio el color Else For i = tgrupos.Nodes(Node.Index).Parent.Index + 1 To (tgrupos.Nodes(Node.Index).Parent.Index + 1) + tgrupos.Nodes(Node.Index).Parent.Children If tgrupos.Nodes(i).Checked = False Then ' aca veo dentro del nodo padre si estan todos seleccionados tgrupos.Nodes(i).Parent.ForeColor = vbBlack 'si almenos uno no pongo el color del padre en negro Exit For Else tgrupos.Nodes(Node.Index).Parent.ForeColor = vbRed 'si todos estan en true pongo en rojo End If Next i End If Else If tgrupos.Nodes(Node.Index).Checked = False Then 'aca selecciones supuestamente un nodo padre y veo si lo puse en false For i = Node.Index + 1 To (Node.Index + tgrupos.Nodes(Node.Index).Children) 'recorro todos los hijos tgrupos.Nodes(i).Checked = False 'los pongo en false tgrupos.Nodes(Node.Index).ForeColor = vbBlack 'y pongo al padre en negro Next i Else For i = Node.Index + 1 To (Node.Index + tgrupos.Nodes(Node.Index).Children) 'si lo puse en true tgrupos.Nodes(i).Checked = True 'pongo en true todos sus hijos tgrupos.Nodes(Node.Index).ForeColor = vbRed 'y le pongo en rojo al padre Next i End If End If End Sub