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

Обсуждение, связанное с разработкой ПО верхнего уровня

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

Postby chirkov.nick on 28 Nov 2016, 09:40

Добрый день. Столкнулся с проблемой. У меня есть огромный список файлов. Их имена формируются следующим образом: элементСписка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 по тегу родителя? Такого свойства я не заметил.
Или может кто видит способ реализации попроще?
chirkov.nick
interested
interested
 
Posts: 5
Joined: 09 Aug 2016, 12:55
LabVIEW Version: 14
Karma: 0

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

Postby Blackman on 28 Nov 2016, 10:31

Проще Tree дальше некуда.) Где скрины?
Blackman
leader
leader
 
Posts: 783
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 225
VIP

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

Postby IvanLis on 28 Nov 2016, 10:36

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


Если через combobox, то нужно при изменении значения Списка1 подгружать новые (валидные) данные в Список2, и т.д.
Пока в предыдущем не выбрано значение, следующий не доступен для выбора.

Если через дерево, это более правильно.
Посмотрите стандартный пример: Tree Enhancements.
Там как раз все наглядно и именно с файлами и папками.
User avatar
IvanLis
professor
professor
 
Posts: 4627
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2010
Karma: 727
hardware VIP bloggers teachers

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

Postby Borjomy_1 on 28 Nov 2016, 12:37

Используйте comboBox, а в него, по событию изменения значения в более высоком списке, прогружайте актуальные списки по иерархии ниже (можно просто в эвенте изменения значения вызывать метод value signaling с нулевым значением списка более низко расположенного по иерархии. Таким образом они все автоматически будут обновляться при изменении любого значения из списка.
Нулевым элементом в списке можно делать прочерк, который означает "не выбрано"
Borjomy_1
expert
expert
 
Posts: 1824
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 319
VIP

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

Postby chirkov.nick on 28 Nov 2016, 15:22

Blackman Сегодня, 11:31
Где скрины?

Прикрепил)

Blackman Сегодня, 11:31
Проще Tree дальше некуда.)

Я имел ввиду реализацию в целом попроще.

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

Если через дерево, это более правильно.


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

Вообще вопрос, как вытянуть списки элементов по тегу.

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


Я так и планировал, но вопрос в том, как эти актуальные списки получить.
Attachments
block.jpg
test lists.vi
(27.15 KiB) Downloaded 69 times
chirkov.nick
interested
interested
 
Posts: 5
Joined: 09 Aug 2016, 12:55
LabVIEW Version: 14
Karma: 0

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

Postby chirkov.nick on 28 Nov 2016, 15:26

IvanLis Сегодня, 11:36
Посмотрите стандартный пример: Tree Enhancements.
Там как раз все наглядно и именно с файлами и папками.


К сожалению, мой Example Finder не может найти такой пример в стандартных. Не могли бы кинуть скрин или саму vi?
chirkov.nick
interested
interested
 
Posts: 5
Joined: 09 Aug 2016, 12:55
LabVIEW Version: 14
Karma: 0

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

Postby IvanLis on 28 Nov 2016, 15:44

chirkov.nick wrote:К сожалению, мой Example Finder не может найти такой пример в стандартных. Не могли бы кинуть скрин или саму vi?


Tree Control Directory.llb
lv2010
(136.13 KiB) Downloaded 148 times
User avatar
IvanLis
professor
professor
 
Posts: 4627
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2010
Karma: 727
hardware VIP bloggers teachers

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

Postby Blackman on 28 Nov 2016, 23:13

У меня как то по другому. Может не так понял?
Раскидывал файлы в виртуальные папки с именами в соответствии с именами в списках.
Attachments
Project tree.PNG
Project tree.PNG (9.53 KiB) Viewed 5090 times
test list 2.png
test list 2.png (8.42 KiB) Viewed 5090 times
Blackman
leader
leader
 
Posts: 783
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 225
VIP

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

Postby Kosist on 28 Nov 2016, 23:35

chirkov.nick wrote:Попоробовал дерево(tree control) (на скринах). Оно построилось как надо, но как оттуда достать элементы ChildText по тегу родителя? Такого свойства я не заметил.

Очень печально, что у NI нету простой либы для работы с Tree контролом. На лаве орг есть одна либа от MGI, но опять же, там всего лишь три функции...
Но по примерам в сети, можно набросать такое:
Get Childs Tree.png
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 874
Joined: 21 Feb 2011, 23:44
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 245
CLAD I/O VIP students

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

Postby Blackman on 28 Nov 2016, 23:42

Tree Control API
Author:
Norman J. Kirchner, Jr
https://lavag.org/topic/10278-cr-tree-control-api/
Blackman
leader
leader
 
Posts: 783
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 225
VIP


Return to Лицевая панель

Who is online

Users browsing this forum: No registered users and 3 guests

cron