TREEVIEW con checkbox

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
1
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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas