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

Обсуждение, связанное с разработкой ПО верхнего уровня
Ответить
chirkov.nick
interested
interested
Сообщения: 5
Зарегистрирован: 09 авг 2016, 12:55
Версия LabVIEW: 14
Контактная информация:

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

Сообщение 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 по тегу родителя? Такого свойства я не заметил.
Или может кто видит способ реализации попроще?
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

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

Сообщение Blackman »

Проще Tree дальше некуда.) Где скрины?
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5462
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 86 раз

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

Сообщение IvanLis »

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

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

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

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

Сообщение Borjomy_1 »

Используйте comboBox, а в него, по событию изменения значения в более высоком списке, прогружайте актуальные списки по иерархии ниже (можно просто в эвенте изменения значения вызывать метод value signaling с нулевым значением списка более низко расположенного по иерархии. Таким образом они все автоматически будут обновляться при изменении любого значения из списка.
Нулевым элементом в списке можно делать прочерк, который означает "не выбрано"
chirkov.nick
interested
interested
Сообщения: 5
Зарегистрирован: 09 авг 2016, 12:55
Версия LabVIEW: 14
Контактная информация:

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

Сообщение chirkov.nick »

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

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

Вообще вопрос, как вытянуть списки элементов по тегу.
Borjomy_1 Сегодня, 13:37
Используйте comboBox, а в него, по событию изменения значения в более высоком списке, прогружайте актуальные списки по иерархии ниже (можно просто в эвенте изменения значения вызывать метод value signaling с нулевым значением списка более низко расположенного по иерархии. Таким образом они все автоматически будут обновляться при изменении любого значения из списка.
Нулевым элементом в списке можно делать прочерк, который означает "не выбрано"
Я так и планировал, но вопрос в том, как эти актуальные списки получить.
Вложения
block.jpg
test lists.vi
(27.15 КБ) 183 скачивания
chirkov.nick
interested
interested
Сообщения: 5
Зарегистрирован: 09 авг 2016, 12:55
Версия LabVIEW: 14
Контактная информация:

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

Сообщение chirkov.nick »

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

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5462
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 86 раз

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

Сообщение IvanLis »

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

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

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

Сообщение Blackman »

У меня как то по другому. Может не так понял?
Раскидывал файлы в виртуальные папки с именами в соответствии с именами в списках.
Вложения
Project tree.PNG
Project tree.PNG (9.53 КБ) 8768 просмотров
test list 2.png
test list 2.png (8.42 КБ) 8768 просмотров
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

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

Сообщение Kosist »

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

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

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

Сообщение Blackman »

Tree Control API
Author:
Norman J. Kirchner, Jr
https://lavag.org/topic/10278-cr-tree-control-api/
Ответить

Вернуться в «Лицевая панель»