Как создать "умный" Control?

Обсуждение, связанное с разработкой ПО верхнего уровня
Ответить
Аватара пользователя
banderlog
user
user
Сообщения: 71
Зарегистрирован: 23 апр 2008, 20:44
Версия LabVIEW: 8.5
Контактная информация:

Как создать "умный" Control?

Сообщение banderlog »

Необходимо создать свой контрол. Сосоит, к примеру, из выпадающего списка и нескольких числовых и строчных элементов управления.
Как сделать, чтобы при выборе значения в выпадающем списке поля автоматически заполнялись значениями по умолчанию?
Можно ли сделать так, чтобы можно было создавать новые записи в этой микробазе данных?
Поковырял typedef, получается сделать только пользовательский элемент управления. "Начинку" - никак.
Можно ли обойтись без баз данных? Очень уж не хочется городить огород ради 10-20 записей.
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1327
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 37 раз
Контактная информация:

Re: Как создать "умный" Control?

Сообщение AndreyDmitriev »

Можно конечно XControl измыслить, но там придётся изрядно повозиться (если с непривычки).
Аватара пользователя
Chupakabra

Tutorials
professional
professional
Сообщения: 360
Зарегистрирован: 21 янв 2009, 10:50
Награды: 1
Версия LabVIEW: 2015
Откуда: Москва
Поблагодарили: 4 раза
Контактная информация:

Re: Как создать "умный" Control?

Сообщение Chupakabra »

AndreyDmitriev писал(а):Можно конечно XControl измыслить, но там придётся изрядно повозиться (если с непривычки).
Боюсь, что здесь одним XControl-ом не обойтись, если требуется сохранять изменения значений в полях.
Без внешней "базы" в том или ином виде не обойтись, простые варианты либо ini-файл, либо xml.
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Как создать "умный" Control?

Сообщение mzu2006 »

Chupakabra писал(а):Без внешней "базы" в том или ином виде не обойтись, простые варианты либо ini-файл, либо xml.
Xcontrol может сохранять данные (не обязательно совпадающие с тем, что отображается) в теле VI, в которую он вставлен
Аватара пользователя
banderlog
user
user
Сообщения: 71
Зарегистрирован: 23 апр 2008, 20:44
Версия LabVIEW: 8.5
Контактная информация:

Re: Как создать "умный" Control?

Сообщение banderlog »

Спасибо! Буду грызть хконтрол )))
Аватара пользователя
Chupakabra

Tutorials
professional
professional
Сообщения: 360
Зарегистрирован: 21 янв 2009, 10:50
Награды: 1
Версия LabVIEW: 2015
Откуда: Москва
Поблагодарили: 4 раза
Контактная информация:

Re: Как создать "умный" Control?

Сообщение Chupakabra »

mzu2006 писал(а):
Chupakabra писал(а):Без внешней "базы" в том или ином виде не обойтись, простые варианты либо ini-файл, либо xml.
Xcontrol может сохранять данные (не обязательно совпадающие с тем, что отображается) в теле VI, в которую он вставлен
Можно подробнее про "может сохранять данные (не обязательно совпадающие с тем, что отображается) в теле VI, в которую он вставлен". На примере.
Аватара пользователя
Chupakabra

Tutorials
professional
professional
Сообщения: 360
Зарегистрирован: 21 янв 2009, 10:50
Награды: 1
Версия LabVIEW: 2015
Откуда: Москва
Поблагодарили: 4 раза
Контактная информация:

Re: Как создать "умный" Control?

Сообщение Chupakabra »

Кстати, удалось провернуть такую штуку:
Если создать VI, в который добавить, например, один контрол. И из другого VI писать (ну и читать тоже) в первый VI некие данные в режиме редактирования(!) и затем выполнятья для первого VI методы Default.Val.Make Curr Default и Save Instrument, то действительно можно хранить данные прямо в VI, даже после завершения программы.
Вложения
1.png
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Как создать "умный" Control?

Сообщение mzu2006 »

XControl имеет 2 связанных с ним типа данных State и Data. Data - это тип терминала. State - это тип внутренних данных XControl'а. Значение типа State хранится в VI, куда этот XControl вставлен. Я предлагал хранить мини базу данных в текущем State, отображая из неё только то, что нужно в данный конкретный момент.

Вышеприведённый пример, применённый к XControl'у сохранит его State.
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1327
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 37 раз
Контактная информация:

Re: Как создать "умный" Control?

Сообщение AndreyDmitriev »

Chupakabra писал(а):... в режиме редактирования(!) и затем выполнятья для первого VI методы Default.Val.Make Curr Default и Save Instrument, то действительно можно хранить данные прямо в VI, даже после завершения программы.
Вопрос на засыпку: как будет работать эта конструкция в исполняемом exe файле?
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Как создать "умный" Control?

Сообщение mzu2006 »

AndreyDmitriev писал(а):Как будет работать эта конструкция в исполняемом exe файле?
никак. :haha: Во время работы можно VI использовать State даже для тех полей, которые скрыты в данный момент.
Аватара пользователя
banderlog
user
user
Сообщения: 71
Зарегистрирован: 23 апр 2008, 20:44
Версия LabVIEW: 8.5
Контактная информация:

Re: Как создать "умный" Control?

Сообщение banderlog »

mzu2006 писал:
Xcontrol может сохранять данные (не обязательно совпадающие с тем, что отображается) в теле VI, в которую он вставлен
Так и не понял, как это должно делаться в исполняемом ви. Можно это показать как-нибудь на примере простейшего проекта, типа, как во вложении?
Вложения
XCntlTry.zip
(212.64 КБ) 179 скачиваний
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Как создать "умный" Control?

Сообщение mzu2006 »

Пожалуй чуть более корректно будет сказать не "сохранять", а "хранить". Я имел в виду, что XControl может хранить (data, обведённое сиреневым) гораздо больше, чем отображать (Display State, обведённое зелёным). Например, Data может содержать в себе всю базу данных, а Display - отображение текущего элемента и индекс.
Вложения
Clipboard01.png
Аватара пользователя
banderlog
user
user
Сообщения: 71
Зарегистрирован: 23 апр 2008, 20:44
Версия LabVIEW: 8.5
Контактная информация:

Re: Как создать "умный" Control?

Сообщение banderlog »

mzu2006 писал(а):Пожалуй чуть более корректно будет сказать не "сохранять", а "хранить". Я имел в виду, что XControl может хранить (data, обведённое сиреневым) гораздо больше, чем отображать (Display State, обведённое зелёным). Например, Data может содержать в себе всю базу данных, а Display - отображение текущего элемента и индекс.
Т.е., для мини-базы данных надо делать именно базу данных (ну, или на хмл изобретать что-нибудь), а сам экзешник уже никак нельзя "на лету" изменять?
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Как создать "умный" Control?

Сообщение mzu2006 »

Перечитал топик. Похоже из-за моей некорректной формулировки ("сохранять" <-> "хранить") сложилось впечатление, что XControl может сохранять что-то внутрь исполняемого файла стандартными средствами. Сожалею. Нет, мне такие средства неизвестны.
Однако хранить 1 раз считанную базу данных на время существования этого XControl'а он может. Т.е. БД можно считать 1 раз при старте, хоть из простого бинарного файла.
Аватара пользователя
banderlog
user
user
Сообщения: 71
Зарегистрирован: 23 апр 2008, 20:44
Версия LabVIEW: 8.5
Контактная информация:

Re: Как создать "умный" Control?

Сообщение banderlog »

В любом случае, спасибо за развёрнутые ответы!
Буду пробовать привязывать ини- или хмл-файлы.
Главное, начать работать с такими вещами, а то у меня получается раз в полгода посидеть пару дней, сделать чуть, и забросить до следующего раза. А так только самые примитивные структуры и приёмы остаются в голове. :dntknw:
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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