Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2011, 16:18   #1
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 844
По умолчанию treeview

Уже туплю несколько часов на treeview. Не могу сообразить как перебрать все строки по одной ветки. Например имеем:
root1
...child1
...child2
......subchild1
......subchild2
root2
...child1
.................
Нужно перебрать в цикле все подчиненный узлы root1.
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 26.01.2011, 17:59   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Вас спасет рекурсия

Код:
Public Sub SearthNodes(PNode As Node)
    Dim X As Node
    If PNode.Children > 0 Then
        Set X = PNode.Child    
        kk = kk & X.FullPath & vbCrLf   
        Do While True
            If X.Children > 0 Then SearthNodes X
            Set X = X.Next
            If X Is Nothing Then
                Exit Do
            Else           
                  kk = kk & X.FullPath & vbCrLf              
            End If
        Loop
    End If
    MsgBox kk

End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 26.01.2011, 23:51   #3
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 844
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Вас спасет рекурсия
Вы правы, спала. Спасибо!

Еще вопрос: имеем дерево
root1
root2
...child1
...child2
......subchild1
root3
Выделяем subchild1, нужно получить имя верхнего пункта (в данном случае child2).
Строка q=treeview1.SelectendItem.Root.text
Возвращает root1. Что я делаю не так?
С уважением, Алексей.

Последний раз редактировалось Stilet; 30.01.2011 в 11:20.
tae1980 вне форума Ответить с цитированием
Старый 27.01.2011, 17:53   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Родителя потеряли?

subchild1.Parent.Text
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 27.01.2011, 19:00   #5
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 844
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Родителя потеряли?
subchild1.Parent.Text
Спасибо. Что-то туплю сегодня.

Ещё пара вопросов, если можно:
1. как мне узнать есть хотя бы один выделенный узел? При такой строке падаем с ошибкой, если нет ни одного выделенного узла: ЛистKey = ЛистыСписок.SelectedItem
2. Как узнать если хотя бы один узел помеченный Checkboxes? И как их перебрать в цикле, если они есть?

3. Можно ли менять цвет фона у узлов?
С уважением, Алексей.

Последний раз редактировалось Stilet; 30.01.2011 в 11:21.
tae1980 вне форума Ответить с цитированием
Старый 28.01.2011, 18:07   #6
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

А ImageList вас не спасет

Давайте решим так.
Вы создаете файл с формой,кидаете TreeView,ImageList
Заполняете его ,и указываете.что хотите получить.
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 28.01.2011 в 18:10.
doober вне форума Ответить с цитированием
Старый 28.01.2011, 18:16   #7
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 844
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
А ImageList вас не спасет
Вы создаете файл с формой,кидаете TreeView,ImageList
Заполняете его ,и указываете.что хотите получить.
ImageList - это список картинок? Не хотел пока использовать картинки из-за экономии места. Пока хочу сделать форму максимально компактной.
А как быть с первыми двумя вопросами? Они сейчас критичны для меня.
С уважением, Алексей.

Последний раз редактировалось tae1980; 28.01.2011 в 18:29.
tae1980 вне форума Ответить с цитированием
Старый 28.01.2011, 18:34   #8
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
2. Как узнать если хотя бы один узел помеченный Checkboxes?
Это как понять.

Я не совсем понимаю,что вы хотите получить.Если вы не кликнули по узлу
ни разу
On Error Resume Next

ее = ЛистыСписок.SelectedItem
If Err.Number <> 0 Then MsgBox "Выделенных нет узлов"
SelectedItem
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 28.01.2011, 18:39   #9
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 844
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Это как понять.

Я не совсем понимаю,что вы хотите получить.Если вы не кликнули по узлу
ни разу
На форме будут кнопки, на них могут нажать раньше.
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 28.01.2011, 19:03   #10
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Код:
On Error Resume Next
Dim dd As Node
Set dd = ЛистыСписок.SelectedItem
If Err.Number = 0 Then SearthNodes dd
Процедура с поста №2
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Treeview и бд sisofcase БД в Delphi 8 03.04.2012 17:32
TreeView Claster Помощь студентам 0 20.10.2009 15:41
TreeView Help KWN, lnc Общие вопросы Delphi 12 03.03.2009 10:34
TreeView _SERGEYX_ Общие вопросы Delphi 1 01.09.2008 17:29