Цикл по TreeView

Про дерево
Дата: 06.11.2009 17:30:10
Одна-единственная ветка TreeView содержит несколько узлов, родительского узла в ветке нет.
Подскажите - как пройти в цикле по узлам, удаляя каждый пройденный(процедура обработки данных узла перед удалением опущена)?
Библиотека mscomctl не подключена, поэтому объявление As Node не прокатывает
П-Л
Дата: 06.11.2009 17:37:27
        
        Me.ctlTree.Visible = False
        Me.Painting = False
        Me.ctlTree.Visible = True
        Me.ctlTree.Nodes.Clear
        Me.Painting = True
Про дерево
Дата: 06.11.2009 17:55:11
Дык это не
автор
пройти в цикле по узлам, удаляя каждый пройденный
а просто удаление всех узлов сразу. Попытаюсь пояснить, что имел ввиду.
Пока в дереве есть узлы, делать:
- выделяем первый узел
- на основе данных его ключа запускаем процедуру(здесь не рассматривается)
- если процедура вернула True, то узел удаляем, т.о. следующий узел становится первым, выделяем его и опять запускаем процедуру обработки
- если процедура обработки очередного узла вернула False, то узел не удаляем, а выделяем следующий узел в дереве и опять запускаем процедуру обработки.............
Т.о. в результате дерево будет содержать только узлы, обработка которых закончилась с ошибкой.
П-Л
Дата: 06.11.2009 18:16:37
    
    If ctlTree.Nodes.Count > 0 Then
        For i = 1 To ctlTree.Nodes.Count
            Dim n As Object ' As MSComctlLib.node
            Set n = ctlTree.Nodes(i)
            . . . 
        Next i
    End If
Перебирайте
Про дерево
Дата: 06.11.2009 18:31:05
Спасибо.
И первый вопрос: почему добавленная в цикл команда
ctlTree.Nodes(i).Selected = True
не выделяет очередной узел?
П-Л
Дата: 06.11.2009 18:36:04
У меня именно так и выделяет.
как вариант
Дата: 06.11.2009 18:41:40
Про дерево
Спасибо.
И первый вопрос: почему добавленная в цикл команда
ctlTree.Nodes(i).Selected = True
не выделяет очередной узел?


может DoEvents - поможет
Про дерево
Дата: 06.11.2009 18:41:57
как следствие предыдущего вопроса. А нельзя не по семейству Nodes пробегать, а как-то еще? Индекс в семействе присваивается в порядке появления узлов. Это я про установленную сортировку. Результат добавления в цикл строки
Debug.Print ctlTree.Nodes(i).Key
показывает, что перебираются узлы не обязательно в том порядке, который виден на экране.
Про дерево
Дата: 06.11.2009 18:43:21
автор
У меня именно так и выделяет.
может у меня чего в свойствах не указано? хотя от мыша выделяется
Про дерево
Дата: 06.11.2009 18:46:56
Ни DoEvents, ни Me.Repaint не помогли