СообЧа > База Знаний > Программирование > Visual Basic

Вопрос

Есть TreeView, в котором есть как "родители", так и "дети". Задача следующая, если в CheckBox'е у "родителя" поставить галочку, то соответственно и у ВСЕХ "детей" они должы проставиться Дело в том, что есть у Node свойство Child, т.е. можно сделать так: node.child.checkes=true, но "галка" появляется только у ОДНОГО "ребенка"

Ответ

Private Sub TV_NodeCheck(ByVal Node As MSComctlLib.Node)
   Dim Nd As Node
   Set Nd = Node
   If Not Nd.Checked Then
      While Nd.Key <> "R"
         Nd.Checked = False
         Set Nd = Nd.Parent
      Wend
      Nd.Checked = False
   End If
      Set Nd = Node
      RecheckTree Nd
End Sub

Private Sub RecheckTree(Nod As Node)
   If Nod.Children = 0 Then Exit Sub
   Dim k As Integer
   k = Nod.Child.Index
   While k <> Nod.Child.LastSibling.Index
      TV.Nodes(k).Checked = Nod.Checked
      If TV.Nodes(k).Children <> 0 Then RecheckTree TV.Nodes(k)
      k = TV.Nodes(k).Next.Index
   Wend
   TV.Nodes(k).Checked = Nod.Checked
   RecheckTree TV.Nodes(k)
End Sub


Рязанов Андрей

Или так:

Private Sub TV_NodeCheck(ByVal Node As MSComctlLib.Node)
If Node.Children >= 1 Then
   Set Nod = Node.Child
   For I = 1 To Node.Children
     Nod.Checked = Node.Checked
       Set Nod = Nod.Next
   Next
End If
End Sub


vdm2010



Copyright © 2000-2004 Сообщество Чайников
Контактная информация