Страницы: 1
RSS
TreeView . Каким образом можно каждый раз получать массив (состоящий из Node.Text) от каждый раз "обновленного" TreeView,
 
Здравствуйте.  Будьте добры,
Имеем:
Шаг1: При инициализации Userform формируем TreeView и формируем многомерный  Массив из Node.Text.
Шаг2:  Добавляем Новый Node (которому Excel автоматически присваивает Index=Nodes.Count+1).
Если после этого  (любым) циклом бежать по обновленному  TreeView, чтобы снова  получить  массив, то новый Node.Text окажется в к о н ц е массива.
Что логично только программно, но не "понятийно".
Вопрос: Переиндексировать Nodes мы не можем (read only). Каким образом можно каждый раз получать массив (состоящий из Node.Text)  от  каждый раз "обновленного" TreeView, но так,  чтобы массив формировался согласно  обновленному "визуальному" ряду.
Т.е. если вставляется Новый Node, например, пятым (по визуальному счету  сверху), то и в новом массиве  НовыйNode.Text был пятым (а не идиотски последним)?
Спасибо..
 
Хотя бы выяснить: Кроме как циклами по Node (которые Excel упорно делает только(?) по индексу), еще как-нибудь можно обращаться к TreeView за значениями?
 
Сергей Кр,не помню, как старый TreeView индексировал новые узлы - слишком давно вылетает этот компонент.
В конструировании, при построении дерева изделия, если задана вложенная нумерация, то головной компонент получит номер 1. Его дети - 1.1, 1.2, 1.3. Дети первого узла - 1.1.1, 1.1.2 и т.д. Если добавится еще узел в старшую сборку, то получит номер 1.4. Если добавится подсборка 1го узла, получит номер 1.1.3. Вроде никакой путаницы. (При операции Traverse будут прочитаны так, как развернутое дерево сверху вниз - 1, 1.1, 1.1.1, 1.1.2, 1.2, 1.3 - и т.д. В скобках написано потому, что, возможно, это сейчас не имеет значения).
Если мы представим ввиде многомерной матрицы, то мерность будет соответствовать максимальной глубине дерева (у меня - 3)
Далее, можно по разному представлять логику добавления нового компонента. Я прибегну к Excel. Изначально имеем книгу с 1м листом. И добавляем на него главный компонент. В строку пишем его детей. Как только у кого-то из детей появляются входящие узлы, добавляем новый лист, где всех детей выписываем в столбик. Узлы 2го порядка так же подписываем в строчку к родителю. Если нужен новый уровень, создаем новый лист - только таких листов будет по кол-ву узлов 1го уровня (т.е. будет лист 1.1, лист 1.2 и т.д.) Т.о., для каждого нового компонента у нас будет ячейка в его ветке.
Для изменения порядка компонентов внутри ветки нужна сортировка. И само собой, после изменения номера узла, необходимо переименовать все порожденные им листы.
 
Цитата
Сергей Кр написал:
а не идиотски последним
зачем вы пользуетесь идиотским инструментом?
напишите свой идеальный и все будет работать, как напишете, а не так как вы сказали
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Думаю Сергей Кр, за 5 (пять) лет решил эту проблему. Да и последний раз он на форуме год назад был.
«Бритва Оккама» или «Принцип Калашникова»?
Страницы: 1
Наверх