Страница 1 из 1

Связанные списки

Добавлено: 28 ноя 2016, 09:40
chirkov.nick
Добрый день. Столкнулся с проблемой. У меня есть огромный список файлов. Их имена формируются следующим образом: элементСписка1_элементСписка2_элементСписка3_элементСписка4_элементСписка5.txt. Я их разбираю и получаю 5 связанных массивов данных. Связаны они иерархически, типа "Список 1" -> "Список 2" -> "Список 3"-> "Список 4" -> "Список 5". Т.е. в элементе списка 1 содержится несколько элементов списка 2, в элементе списка 2 содержится несколько элементов списка 3 и т.д.
На лицевой панели есть 5 combobox`ов, которые будут инициализированы этими списками. Мне нужно, чтобы когда пользователь выбирал в первом combobox`е элемент (Списка 1) во втором инициализировались только те элементы, которые принадлежат Списку 1. Когда он выбирал элемент в combobox 2, то инициализировался combobox 3. Потом из этой комбинации собирается путь к файлу и он открывается для обработки. Файлов может быть сколь угодно много.
Я реализовал просто выбор уникальных элементов из каждого списка и записал эти значения в combobox`ы. Но так не пойдет, так как пользователь легко может выбрать невалидную комбинацию параметров в combobox`ах. Думал о том, что выбрав первый элемент проводить поиск по остальным, где в имени есть такая часть, но так как файлов много, получится не очень.
Попоробовал дерево(tree control) (на скринах). Оно построилось как надо, но как оттуда достать элементы ChildText по тегу родителя? Такого свойства я не заметил.
Или может кто видит способ реализации попроще?

Re: Связанные списки

Добавлено: 28 ноя 2016, 10:31
Blackman
Проще Tree дальше некуда.) Где скрины?

Re: Связанные списки

Добавлено: 28 ноя 2016, 10:36
IvanLis
chirkov.nick писал(а):Попоробовал дерево(tree control) (на скринах). Оно построилось как надо, но как оттуда достать элементы ChildText по тегу родителя? Такого свойства я не заметил.
Или может кто видит способ реализации попроще?
Если через combobox, то нужно при изменении значения Списка1 подгружать новые (валидные) данные в Список2, и т.д.
Пока в предыдущем не выбрано значение, следующий не доступен для выбора.

Если через дерево, это более правильно.
Посмотрите стандартный пример: Tree Enhancements.
Там как раз все наглядно и именно с файлами и папками.

Re: Связанные списки

Добавлено: 28 ноя 2016, 12:37
Borjomy_1
Используйте comboBox, а в него, по событию изменения значения в более высоком списке, прогружайте актуальные списки по иерархии ниже (можно просто в эвенте изменения значения вызывать метод value signaling с нулевым значением списка более низко расположенного по иерархии. Таким образом они все автоматически будут обновляться при изменении любого значения из списка.
Нулевым элементом в списке можно делать прочерк, который означает "не выбрано"

Re: Связанные списки

Добавлено: 28 ноя 2016, 15:22
chirkov.nick
Blackman Сегодня, 11:31
Где скрины?
Прикрепил)
Blackman Сегодня, 11:31
Проще Tree дальше некуда.)
Я имел ввиду реализацию в целом попроще.
IvanLis Сегодня, 11:36
Если через combobox, то нужно при изменении значения Списка1 подгружать новые (валидные) данные в Список2, и т.д.
Пока в предыдущем не выбрано значение, следующий не доступен для выбора.

Если через дерево, это более правильно.
Мне combobox`ы инициализировать в любом случае. Я планировал использовать иерархию дерева для быстрой и удобной инициализации и переинициализации combobox`ов.

Вообще вопрос, как вытянуть списки элементов по тегу.
Borjomy_1 Сегодня, 13:37
Используйте comboBox, а в него, по событию изменения значения в более высоком списке, прогружайте актуальные списки по иерархии ниже (можно просто в эвенте изменения значения вызывать метод value signaling с нулевым значением списка более низко расположенного по иерархии. Таким образом они все автоматически будут обновляться при изменении любого значения из списка.
Нулевым элементом в списке можно делать прочерк, который означает "не выбрано"
Я так и планировал, но вопрос в том, как эти актуальные списки получить.

Re: Связанные списки

Добавлено: 28 ноя 2016, 15:26
chirkov.nick
IvanLis Сегодня, 11:36
Посмотрите стандартный пример: Tree Enhancements.
Там как раз все наглядно и именно с файлами и папками.
К сожалению, мой Example Finder не может найти такой пример в стандартных. Не могли бы кинуть скрин или саму vi?

Re: Связанные списки

Добавлено: 28 ноя 2016, 15:44
IvanLis
chirkov.nick писал(а):К сожалению, мой Example Finder не может найти такой пример в стандартных. Не могли бы кинуть скрин или саму vi?
Tree Control Directory.llb
lv2010
(136.13 КБ) 265 скачиваний

Re: Связанные списки

Добавлено: 28 ноя 2016, 23:13
Blackman
У меня как то по другому. Может не так понял?
Раскидывал файлы в виртуальные папки с именами в соответствии с именами в списках.

Re: Связанные списки

Добавлено: 28 ноя 2016, 23:35
Kosist
chirkov.nick писал(а):Попоробовал дерево(tree control) (на скринах). Оно построилось как надо, но как оттуда достать элементы ChildText по тегу родителя? Такого свойства я не заметил.
Очень печально, что у NI нету простой либы для работы с Tree контролом. На лаве орг есть одна либа от MGI, но опять же, там всего лишь три функции...
Но по примерам в сети, можно набросать такое:
Get Childs Tree.png

Re: Связанные списки

Добавлено: 28 ноя 2016, 23:42
Blackman
Tree Control API
Author:
Norman J. Kirchner, Jr
https://lavag.org/topic/10278-cr-tree-control-api/