Нестандартные контролы

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

Activity Silver
adviser
adviser
Сообщения: 205
Зарегистрирован: 17 фев 2009, 19:57
Награды: 2
Версия LabVIEW: 8.5, 9.0
Откуда: Украина. Кременчуг
Контактная информация:

Re: Нестандартные контролы

Сообщение crashwork »

mzu2006, а реально идея у тебя хорошая. Надо было вообще убрать getimage из case. Просто делаем скрин раз в начале работы вне цикла (просто надо состояния контрола сделать похожей формы), а потом просто сверяем пиксел на который произошло нажатие со скрином. Точно, вот это оно. А если состояния контрола сильно отличаются (как сейчас там элипс а там многоугольник) то надо сделать два снимка, а потом выбирать с каким сверять.
Последний раз редактировалось crashwork 20 мар 2009, 02:23, всего редактировалось 1 раз.
Аватара пользователя
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: Нестандартные контролы

Сообщение mzu2006 »

crashwork,
А-а-а вот зачем у тебя время измеряется. Нет, я оптимизировал встроенным профайлером. У меня получилось, что основное время отъедалось процедурой (un-)flatten pixmap, вызываемой (в первом варианте кода) из GetImageSubset.vi, вот я её и вынес наружу - стало работать в ~1.5 раза быстрее.

угу, точно, убирать надо из casе'а вообще
Аватара пользователя
crashwork

Activity Silver
adviser
adviser
Сообщения: 205
Зарегистрирован: 17 фев 2009, 19:57
Награды: 2
Версия LabVIEW: 8.5, 9.0
Откуда: Украина. Кременчуг
Контактная информация:

Re: Нестандартные контролы

Сообщение crashwork »

mzu2006, прочти выше я там подправил, это реально смахивает на конечный вариант.
Аватара пользователя
crashwork

Activity Silver
adviser
adviser
Сообщения: 205
Зарегистрирован: 17 фев 2009, 19:57
Награды: 2
Версия LabVIEW: 8.5, 9.0
Откуда: Украина. Кременчуг
Контактная информация:

Re: Нестандартные контролы

Сообщение crashwork »

Ха, а если делать subvi, то придется или не зашивать туда GetImage, или делать в subvi GetImage каждый раз.
Аватара пользователя
crashwork

Activity Silver
adviser
adviser
Сообщения: 205
Зарегистрирован: 17 фев 2009, 19:57
Награды: 2
Версия LabVIEW: 8.5, 9.0
Откуда: Украина. Кременчуг
Контактная информация:

Re: Нестандартные контролы

Сообщение crashwork »

crashwork писал(а):Ха, а если делать subvi, то придется или не зашивать туда GetImage, или делать в subvi GetImage каждый раз.
Хотя не, туплю, для этого существует first call. Щас будем пробывать.
Аватара пользователя
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: Нестандартные контролы

Сообщение mzu2006 »

Следующая итерация с учётом всего предыдущего
пока без SubVI
Вложения
StrangeButton2.vi
(19.77 КБ) 223 скачивания
Аватара пользователя
crashwork

Activity Silver
adviser
adviser
Сообщения: 205
Зарегистрирован: 17 фев 2009, 19:57
Награды: 2
Версия LabVIEW: 8.5, 9.0
Откуда: Украина. Кременчуг
Контактная информация:

Re: Нестандартные контролы

Сообщение crashwork »

Вылаживаю готовый XControl для кнопки типа bollean. Таким же образом можно сделать XControl для числовых кнопок и кнопок с тремя состояниями (системные кнопки).

1. Тест хконтрола:
- открываем проект->Test.vi;
- рядом с кнопкой зеленая точка - combo box - это выбор цвета фона для снимка (см. посты выше);
- клацаем на все подряд, потом зырим на блок-диаграмму все как и хотелось - ничего лишнего, такое впечатление, что это обычная кнопка со своими свойствами.

2. Изучение принципа работы:
- разворачиваем My Boolean XControl и просматриваем файлы в таком порядке (попутно читая мои комментарии):
-- My boolean data;
-- My boolean state;
-- папка Properties;
-- My boolean facade (для того чтобы прочитать комментарий отключаем File->VI Properties->Window Size->Scale all object... и проматываем окно проекта вверх - там комментарий. Почему так сделано понятно из комментария);
-- My boolean init (не трогал все оставил как есть (не очень то и надо)).
- не забываем смотреть блок-диаграммы (где они есть). Основной код в My boolean facade.
Совет: для сравнения создайте пустой шаблон хконтрола (тогда можно будет наочно увидеть, что добавлено мной, а что исходный код LabVIEW).

3. Изменение внешнего вида хконтрола (тут ничего не поделаешь, делается только так):
- открываем My boolean facade и редактируем кнопку через customize (как обычно). Потом надо сжать окно максимально по размерам кнопки.

P.S.
- хконтрол я заточил, в принципе, как стандартную кнопку (обрабатываются события Key Down и другие см. My boolean facade). При необходимости возможности можно расширить;
- оптимизация в соответствие с исходной задумкой (см. посты выше);
- методы не писал. Пишутся еще легче чем свойства;
- если чето вызывает недоумение в целесообразности, то пытался писать по стандарту как в примере Labview;
- комментарии... (не ругайте пианиста...));
- время изменения значения хконтрола можно посмотреть в Test.vi (оно больше чем в исходном варианте и странно скачет. Поганял проект LabVIEW там тоже самое(что поделать хконтрол сложная штука)). В принципе время срабатывания кнопки незначительно и не должно сильно влиять на проект в целом.

P.P.S.
Я не последняя инстанция и надеюсь на развитие этой темы. А я приступаю наконец к написанию своей магистерской работы.
Вложения
My Boolean.rar
(148.57 КБ) 281 скачивание
Аватара пользователя
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: Нестандартные контролы

Сообщение mzu2006 »

круто. Обязательно посмотрю
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Нестандартные контролы

Сообщение Eugen Graf »

Неплохо, посмотрел, работает вреде. Я вообще то не люблю X Control-ы, но в данном случае наверное правильное решение.
Kvanto

Activity Bronze Автор
VIP
VIP
Сообщения: 414
Зарегистрирован: 26 янв 2011, 17:56
Награды: 3
Версия LabVIEW: 10.0

Re: Нестандартные контролы

Сообщение Kvanto »

Имеется база с интересно офjрмленными элементами управления(расширение .ctl). Подскажите как заменить в своем :vi: элементы управления на новые шаблоны ctl. без потери скажем исходного Label, Caption.
Аватара пользователя
IvanLis

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

Re: Нестандартные контролы

Сообщение IvanLis »

Kvanto писал(а):Подскажите как заменить в своем :vi: элементы управления на новые шаблоны ctl. без потери скажем исходного Label, Caption.
Право кнопкой на контроле -> Replace -> Select a Control...
Kvanto

Activity Bronze Автор
VIP
VIP
Сообщения: 414
Зарегистрирован: 26 янв 2011, 17:56
Награды: 3
Версия LabVIEW: 10.0

Re: Нестандартные контролы

Сообщение Kvanto »

благодарю!
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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