как в treeview определить глубину вложения ?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
barzass7
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 07.05.2011 (Сб) 2:05

как в treeview определить глубину вложения ?

Сообщение barzass7 » 07.05.2011 (Сб) 2:15

доброго времени суток, говорю заранее, я на бейсике только начинаю программировать

подскажите ,пожалуйста, как в treeview 6-м определить глубину вложения выделенного нода в ветке от верхнего уровня?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: как в treeview определить глубину вложения ?

Сообщение Хакер » 07.05.2011 (Сб) 2:17

Что значит 6-ой TreeView? Шестая версия comctl32.dll? Или шестая версия враппера (mscomctl.ocx)?

Поискать свойство. Если свойство не найдётся, итеративно спуститься вниз до достижения корня, посчитав количество итераций.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: как в treeview определить глубину вложения ?

Сообщение alibek » 07.05.2011 (Сб) 9:09

Хакер писал(а):Поискать свойство. Если свойство не найдётся, итеративно спуститься вниз до достижения корня, посчитав количество итераций.

Подняться.
Есть еще индусский вариант, заменить символ "\" на пустую строку в Path и определить, насколько путь стал короче.
Lasciate ogni speranza, voi ch'entrate.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: как в treeview определить глубину вложения ?

Сообщение Хакер » 07.05.2011 (Сб) 9:22

alibek писал(а):Подняться.

Смотря откуда куда в воображении растёт дерево.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: как в treeview определить глубину вложения ?

Сообщение alibek » 07.05.2011 (Сб) 9:29

Какое еще воображение?
TreeView имеет однозначный визуальный образ.
Lasciate ogni speranza, voi ch'entrate.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: как в treeview определить глубину вложения ?

Сообщение Хакер » 07.05.2011 (Сб) 9:39

alibek писал(а):TreeView имеет однозначный визуальный образ.

Тогда уж влево, потому что выше/ниже будут ещё сиблинги.
Я имел в виду обход дерева как структуры данных, а не обход дерева как элемента управления.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

barzass7
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 07.05.2011 (Сб) 2:05

Re: как в treeview определить глубину вложения ?

Сообщение barzass7 » 07.05.2011 (Сб) 13:51

Хакер писал(а):Что значит 6-ой TreeView? Шестая версия comctl32.dll? Или шестая версия враппера (mscomctl.ocx)?

я имел ввиду TreeView из mscomctl.ocx,
Хакер писал(а):Поискать свойство. Если свойство не найдётся, итеративно спуститься вниз до достижения корня, посчитав количество итераций.

смотрел, нет там нужных свойств,втом то и проблема что я не знаю как спуститься вниз/вверх до достижения корня

alibek писал(а):Есть еще индусский вариант, заменить символ "\" на пустую строку в Path и определить, насколько путь стал короче.

пока что сделал через индусский код – через Node.FullPath , Split(Node.FullPath ,"\") и UBound :cyclops: но этож через задницу ибо вдруг юзер в названии ветки введет символ "\"

hclubmk
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 240
Зарегистрирован: 19.06.2009 (Пт) 14:23
Откуда: От-туда

Re: как в treeview определить глубину вложения ?

Сообщение hclubmk » 07.05.2011 (Сб) 16:00

Если у Node есть Parent тогда Level = Level + 1, и всё сначала, типа такого:
Код: Выделить всё
Private Function NodeLevel(ByVal node As MSComctlLib.node) As Long
If (Not node.Parent Is Nothing) Then
   NodeLevel = NodeLevel(node.Parent) + 1
End If
End Function
Научились ли Вы радоваться трудностям?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: как в treeview определить глубину вложения ?

Сообщение Хакер » 08.05.2011 (Вс) 3:26

hclubmk писал(а):Если у Node есть Parent тогда Level = Level + 1, и всё сначала, типа такого:
Код: Выделить всё
Private Function NodeLevel(ByVal node As MSComctlLib.node) As Long
If (Not node.Parent Is Nothing) Then
   NodeLevel = NodeLevel(node.Parent) + 1
End If
End Function

Дурь. Зачем рекурсия, когда она совершенно не нужна.

Код: Выделить всё
Private Function NodeLevel(ByVal node As MSComctlLib.node) As Long
    Do Until node.Parent Is Nothing
        Set node = node.Parent
        NodeLevel = NodeLevel + 1
    Loop
End Function
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

hclubmk
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 240
Зарегистрирован: 19.06.2009 (Пт) 14:23
Откуда: От-туда

Re: как в treeview определить глубину вложения ?

Сообщение hclubmk » 08.05.2011 (Вс) 9:11

Хакер писал(а):Дурь
обоснуй.
Научились ли Вы радоваться трудностям?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: как в treeview определить глубину вложения ?

Сообщение alibek » 08.05.2011 (Вс) 11:15

hclubmk писал(а):обоснуй.

Глупости не обосновывают. Обосновывать надо идеи, которые претендуют на разумность.
В VB нет выгоды от использования рекурсивных алгоритмов, напротив, рекурсия ухудшает качество кода, если можно ее избежать.
Lasciate ogni speranza, voi ch'entrate.

hclubmk
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 240
Зарегистрирован: 19.06.2009 (Пт) 14:23
Откуда: От-туда

Re: как в treeview определить глубину вложения ?

Сообщение hclubmk » 08.05.2011 (Вс) 12:34

alibek писал(а):идеи, которые претендуют на разумность

Особенно индусские методы, которые, увы, просящие помощи, берут на вооружение.
alibek писал(а):рекурсия ухудшает качество кода

Ты бы про стек уж тогда рассказал, что-ли.
Научились ли Вы радоваться трудностям?

barzass7
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 07.05.2011 (Сб) 2:05

Re: как в treeview определить глубину вложения ?

Сообщение barzass7 » 08.05.2011 (Вс) 15:05

всем спасибо за помощь, особенно Хакеру


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 55

    TopList