Сколько нодов на верхнем уровня TreeView?

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

Сколько нодов на верхнем уровня TreeView?

Сообщение HBasic » 13.03.2009 (Пт) 20:38

Как определить количество нодов самого верхнего уровня TreeView?
Т.е. именно количество нодов только самого верхнего уровня без их потомков.

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: Сколько нодов на верхнем уровня TreeView?

Сообщение SSecurity » 13.03.2009 (Пт) 22:54

HBasic писал(а):Как определить количество нодов самого верхнего уровня TreeView?
Т.е. именно количество нодов только самого верхнего уровня без их потомков.


можно через свойство FullPath определить ... если в нем нет "\" тогда верхний уровень.
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

HBasic
Новичок
Новичок
 
Сообщения: 49
Зарегистрирован: 01.03.2009 (Вс) 21:53

Re: Сколько нодов на верхнем уровня TreeView?

Сообщение HBasic » 14.03.2009 (Сб) 9:33

SSecurity писал(а):
HBasic писал(а):Как определить количество нодов самого верхнего уровня TreeView?
Т.е. именно количество нодов только самого верхнего уровня без их потомков.


можно через свойство FullPath определить ... если в нем нет "\" тогда верхний уровень.

Спасибо.
А по другому никак нельзя?TreeView.Count какой-нибудь.У меня 3 000 нодов на самом верхнем уровне.Боюсь если я буду их все обходить и смотреть у каждого "\" то программа будет сильно тормозить.

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: Сколько нодов на верхнем уровня TreeView?

Сообщение SSecurity » 14.03.2009 (Сб) 10:19

если ты дерево сам заполняешь тогда наверное тебе будет более эффективным - создать коллекцию или массив с индексами тех нодов которые верхние там и кол-во определишь.

Код: Выделить всё
Dim I As Long, J As Byte, A As Single, CNT As Integer
  For I = 1 To 3000
  TV.Nodes.Add , , "A" & I, "T" & I
    For J = 1 To 10
      TV.Nodes.Add "A" & I, tvwChild, , "1111"
    Next J
  Next I
  A = Timer
  CNT = 0
  For I = 1 To CDec("&h" & Hex(TV.Nodes.Count))
    CNT = CNT + IIf(InStr(1, TV.Nodes(I).FullPath, "\") = 0, 1, 0)
  Next I
  Debug.Print Timer - A, CNT


0,13 .. 0,15 сек, 3000 - результат ...

либо один раз пройтись посчитать а потом при добавлении/удалении каждого вносить изменения в соответсвующий параметр который контролирует число нодов верхнего уровня
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

HBasic
Новичок
Новичок
 
Сообщения: 49
Зарегистрирован: 01.03.2009 (Вс) 21:53

Re: Сколько нодов на верхнем уровня TreeView?

Сообщение HBasic » 14.03.2009 (Сб) 11:06

SSecurity писал(а):либо один раз пройтись посчитать а потом при добавлении/удалении каждого вносить изменения в соответсвующий параметр который контролирует число нодов верхнего уровня

В моем случае можно.А вообще неудобный жутко этот TreeView.Разработчики сделали бы обращение к каждому узлу используя его уровень иерархии и номер в этом уровне, а не массив этот бессмысленный Item.

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

Re: Сколько нодов на верхнем уровня TreeView?

Сообщение Хакер » 14.03.2009 (Сб) 11:09

HBasic, ещё раз.

Тот TreeView, с которым ты работаешь, это не оригинальный TreeView, а обёртка над оригинальным стандартным. Если ты юзаешь 5-ую версию Common Controls.
Если же 6-ую, то это это вообще не оригинальный TreeView. Это самозванец.
—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 » 14.03.2009 (Сб) 21:06

У ноды есть свойство Next, ссылающееся на следующую ноду на том же уровне.
Вот по ним и считай.

Хакер писал(а):Если же 6-ую, то это это вообще не оригинальный TreeView. Это самозванец.

Какая разница? Объектная модель у них одинаковая.
Lasciate ogni speranza, voi ch'entrate.

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

Re: Сколько нодов на верхнем уровня TreeView?

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

Объектная модель у них одинаковая.

У TreeView совпадают, да. У ListView, например, уже нет.

Я не говорил о 5/6-версиях имея в виду разницу в объектных моделях. Я говорил о них вообще.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

pronto
Постоялец
Постоялец
 
Сообщения: 598
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Re: Сколько нодов на верхнем уровня TreeView?

Сообщение pronto » 15.03.2009 (Вс) 16:16

Хакер писал(а):Тот TreeView, с которым ты работаешь, это не оригинальный TreeView, а обёртка над оригинальным стандартным. Если ты юзаешь 5-ую версию Common Controls.
Если же 6-ую, то это это вообще не оригинальный TreeView. Это самозванец.

А который тогда настоящий (оригинальный)? И есть ли он с интерфейсом, доступном для VB?
O, sancta simplicitas!

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

Re: Сколько нодов на верхнем уровня TreeView?

Сообщение Хакер » 15.03.2009 (Вс) 16:21

Настоящий оригинальный TreeView реализован в comctl32.dll, создаётся с помощью CreateWindowEx и общение с ним идёт с помощью оконных сообщений.

Common Controls 5.0 — comctl32.ocx — COM-обёртка над comctl32.dll
Common Controls 6.0 — mscomctl.ocx — судя по всему набор клонов-самозванцев стандартных контроллов.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

pronto
Постоялец
Постоялец
 
Сообщения: 598
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Re: Сколько нодов на верхнем уровня TreeView?

Сообщение pronto » 15.03.2009 (Вс) 16:41

Он позволяет связывать с нодой произвольные данные?
O, sancta simplicitas!

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

Re: Сколько нодов на верхнем уровня TreeView?

Сообщение Хакер » 15.03.2009 (Вс) 16:45

Кто? И что такое "произвольные данные"?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

pronto
Постоялец
Постоялец
 
Сообщения: 598
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Re: Сколько нодов на верхнем уровня TreeView?

Сообщение pronto » 15.03.2009 (Вс) 16:51

TreeView реализованный в comctl32.dll.
В общем случае это байтовый массив. Он может быть интерпретирован произвольным образом (звук, картинка, документ и тд и тп).
O, sancta simplicitas!

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

Re: Сколько нодов на верхнем уровня TreeView?

Сообщение Хакер » 15.03.2009 (Вс) 17:16

Прежде чем я отвечу, скажи: а что, COM-обёртка позволяет?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

pronto
Постоялец
Постоялец
 
Сообщения: 598
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Re: Сколько нодов на верхнем уровня TreeView?

Сообщение pronto » 15.03.2009 (Вс) 17:34

Хех, я и сам догадывался, что нет. Просто хотелось удостовериться в этом.
А существуют аналоги TreeView с подобными функциями? (Я искал...)
O, sancta simplicitas!

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

Re: Сколько нодов на верхнем уровня TreeView?

Сообщение alibek » 15.03.2009 (Вс) 17:37

А кто мешает связать данные самому?
У ноды достаточно свойств, чтобы привязать их к любому набору данных.
Lasciate ogni speranza, voi ch'entrate.

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

Re: Сколько нодов на верхнем уровня TreeView?

Сообщение Хакер » 15.03.2009 (Вс) 17:58

Хех, я и сам догадывался, что нет.

Крайне тупо, нифига ничего не зная, пытаться догадываться.

Вообще то у оригинального стандартного TreeView есть такая возможность. Прежде чем я ответил бы, я хотел услышать от тебя "тычёк" в сторону свойства Tag класса Node.

А получил "хехи" и неправильные "догадки".
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

pronto
Постоялец
Постоялец
 
Сообщения: 598
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Re: Сколько нодов на верхнем уровня TreeView?

Сообщение pronto » 16.03.2009 (Пн) 2:34

Про свойтво Tag я всегда был в курсе, и даже использовал его, но мне (что поделать!) никогда не приходило в голову писАть туда большие объемы данных. Поэкспериментирую с этим...

P.S. Хакер в своем репертуаре
O, sancta simplicitas!

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

Re: Сколько нодов на верхнем уровня TreeView?

Сообщение alibek » 16.03.2009 (Пн) 3:13

pronto писал(а):Про свойтво Tag я всегда был в курсе, и даже использовал его, но мне (что поделать!) никогда не приходило в голову писАть туда большие объемы данных.

Видимо тебе также не приходило в голову, что в Tag (или Key) можно писать не сами данные, а указатель на них.
Lasciate ogni speranza, voi ch'entrate.

pronto
Постоялец
Постоялец
 
Сообщения: 598
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Re: Сколько нодов на верхнем уровня TreeView?

Сообщение pronto » 16.03.2009 (Пн) 12:34

что в Tag (или Key) можно писать не сами данные, а указатель на них

Блин! Точно! :wink:
O, sancta simplicitas!


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

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

Сейчас этот форум просматривают: PetalBot, Yandex-бот и гости: 15

    TopList