Связанные списки
-
- interested
- Сообщения: 5
- Зарегистрирован: 09 авг 2016, 12:55
- Версия LabVIEW: 14
- Контактная информация:
Связанные списки
Добрый день. Столкнулся с проблемой. У меня есть огромный список файлов. Их имена формируются следующим образом: элементСписка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 по тегу родителя? Такого свойства я не заметил.
Или может кто видит способ реализации попроще?
На лицевой панели есть 5 combobox`ов, которые будут инициализированы этими списками. Мне нужно, чтобы когда пользователь выбирал в первом combobox`е элемент (Списка 1) во втором инициализировались только те элементы, которые принадлежат Списку 1. Когда он выбирал элемент в combobox 2, то инициализировался combobox 3. Потом из этой комбинации собирается путь к файлу и он открывается для обработки. Файлов может быть сколь угодно много.
Я реализовал просто выбор уникальных элементов из каждого списка и записал эти значения в combobox`ы. Но так не пойдет, так как пользователь легко может выбрать невалидную комбинацию параметров в combobox`ах. Думал о том, что выбрав первый элемент проводить поиск по остальным, где в имени есть такая часть, но так как файлов много, получится не очень.
Попоробовал дерево(tree control) (на скринах). Оно построилось как надо, но как оттуда достать элементы ChildText по тегу родителя? Такого свойства я не заметил.
Или может кто видит способ реализации попроще?
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Связанные списки
Если через combobox, то нужно при изменении значения Списка1 подгружать новые (валидные) данные в Список2, и т.д.chirkov.nick писал(а):Попоробовал дерево(tree control) (на скринах). Оно построилось как надо, но как оттуда достать элементы ChildText по тегу родителя? Такого свойства я не заметил.
Или может кто видит способ реализации попроще?
Пока в предыдущем не выбрано значение, следующий не доступен для выбора.
Если через дерево, это более правильно.
Посмотрите стандартный пример: Tree Enhancements.
Там как раз все наглядно и именно с файлами и папками.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Связанные списки
Используйте comboBox, а в него, по событию изменения значения в более высоком списке, прогружайте актуальные списки по иерархии ниже (можно просто в эвенте изменения значения вызывать метод value signaling с нулевым значением списка более низко расположенного по иерархии. Таким образом они все автоматически будут обновляться при изменении любого значения из списка.
Нулевым элементом в списке можно делать прочерк, который означает "не выбрано"
Нулевым элементом в списке можно делать прочерк, который означает "не выбрано"
-
- interested
- Сообщения: 5
- Зарегистрирован: 09 авг 2016, 12:55
- Версия LabVIEW: 14
- Контактная информация:
Re: Связанные списки
Прикрепил)Blackman Сегодня, 11:31
Где скрины?
Я имел ввиду реализацию в целом попроще.Blackman Сегодня, 11:31
Проще Tree дальше некуда.)
Мне combobox`ы инициализировать в любом случае. Я планировал использовать иерархию дерева для быстрой и удобной инициализации и переинициализации combobox`ов.IvanLis Сегодня, 11:36
Если через combobox, то нужно при изменении значения Списка1 подгружать новые (валидные) данные в Список2, и т.д.
Пока в предыдущем не выбрано значение, следующий не доступен для выбора.
Если через дерево, это более правильно.
Вообще вопрос, как вытянуть списки элементов по тегу.
Я так и планировал, но вопрос в том, как эти актуальные списки получить.Borjomy_1 Сегодня, 13:37
Используйте comboBox, а в него, по событию изменения значения в более высоком списке, прогружайте актуальные списки по иерархии ниже (можно просто в эвенте изменения значения вызывать метод value signaling с нулевым значением списка более низко расположенного по иерархии. Таким образом они все автоматически будут обновляться при изменении любого значения из списка.
Нулевым элементом в списке можно делать прочерк, который означает "не выбрано"
- Вложения
-
- test lists.vi
- (27.15 КБ) 188 скачиваний
-
- interested
- Сообщения: 5
- Зарегистрирован: 09 авг 2016, 12:55
- Версия LabVIEW: 14
- Контактная информация:
Re: Связанные списки
К сожалению, мой Example Finder не может найти такой пример в стандартных. Не могли бы кинуть скрин или саму vi?IvanLis Сегодня, 11:36
Посмотрите стандартный пример: Tree Enhancements.
Там как раз все наглядно и именно с файлами и папками.
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Связанные списки
chirkov.nick писал(а):К сожалению, мой Example Finder не может найти такой пример в стандартных. Не могли бы кинуть скрин или саму vi?
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Связанные списки
У меня как то по другому. Может не так понял?
Раскидывал файлы в виртуальные папки с именами в соответствии с именами в списках.
Раскидывал файлы в виртуальные папки с именами в соответствии с именами в списках.
- Вложения
-
- Project tree.PNG (9.53 КБ) 9018 просмотров
-
- test list 2.png (8.42 КБ) 9018 просмотров
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Связанные списки
Очень печально, что у NI нету простой либы для работы с Tree контролом. На лаве орг есть одна либа от MGI, но опять же, там всего лишь три функции...chirkov.nick писал(а):Попоробовал дерево(tree control) (на скринах). Оно построилось как надо, но как оттуда достать элементы ChildText по тегу родителя? Такого свойства я не заметил.
Но по примерам в сети, можно набросать такое:
Мы делили апельсин - много наших полегло...