1

Topic: "Поле ввода Edit" ввод только допустимых значений.

Доброго времени суток. Чисто случайно раскопал данную приблуду. Даже у такого дуба как я заработала с полпинка.
Но, но, но есть конечно "Но" здесь.
Было несколько попыток пользователей вопросить о двустороннем обмене переменных управления, на что разработчик идти не хочет, имея свои аргументы, не лишенные логики. Да, можно много как извернуться из этой ситуации.
Но вот тут у меня возник вопрос, может я где чего не доглядел.
Поле ввода Edit как организовать числовой ввод только в разрешенном числовом диапазоне?
В редакторе я не увидел ничего на эту тему, т.е. вводи что хочешь, а это вообще ни как не корректно в большинстве случаев.
Я могу это обработать в контроллере, но вот  в "зад" интерфейсу вернуть ни как не могу, только произведя переподключение на смартфоне.
В итоге мы имеем на HMI одно значение, в контроллере другое......
Как быть? Ваши идеи?

2

Re: "Поле ввода Edit" ввод только допустимых значений.

Попробую описать всю ситуацию целиком и достаточно подробно.
Это та же проблема что и например с выключателем. Вы можете это наблюдать когда включаете на смартфоне Bluetooth.
Это связано с тем, что само действие происходит спустя какое то время после переключения выключателя. А так же то что это действие может совсем и не произойти, а отмениться. А может и произойти само, например из другой программы. В нашем случае время, это задержка связи которая есть всегда. Плюс логика контроллера, определяющая можно включить или нет в конкретной ситуации. Или контроллер сам решил включить, так тоже бывает.
Это все выше описанное так же легко переносится на числовые данные, которые вы хотите передать в контроллер.
В GUI вы выражаете свое желание что то сделать, например включить выключатель и включаете его на экране. Когда это желание поступит в контроллер, логика контроллера может не дать его включить в зависимости от текущей ситуации. Или же логика контроллера может сама включать или выключать без вашего желания.
У выключателя появляется как бы 4-е состояния: выключен, пользователь хочет включить, включен, пользователь хочет выключить, выключен. Причем два состояния, включен и выключен, могут быть установлены только на стороне контроллера, так как только контроллер знает реальное состояние объекта, включен он или выключен. А состояния, выражающие желание пользователя, устанавливаются в GUI. У числового поля ввода таких состояний будет два, это текущее значение из контроллера и желаемое значение. Так же логика контроллера должна отдельно обрабатывать эти желания пользователя, и после обработки желания этот факт должен передаться обратно в GUI, что бы перерисовать элемент на экране. Элемент управления на экране должен отображаться таким образом, что бы пользователю было понятно в каком состоянии он сейчас находится, в состоянии желания или желание уже совершилось, или не совершилось)). В случае с цифровыми данными он должен отображать как введенное желаемое значение, так и текущее значение из контроллера, то есть две цифры.
Таким образом, для передачи любых данных в контроллер мы имеем достаточно сложный элемент и сложные процессы обмена данными по связи. Как минимум желание пользователя должно передаваться из GUI в контроллер, а реальные действительные значения должны всегда передаваться из контроллера в GUI. Так же это приведет к более сложной логике обработки таких событий в самом контроллере, что для новичков будет существенной проблемой.
Если мы пойдем по простому пути и добавим в элемент управления допустимый диапазон вводимых значений, это частично решит проблему, которую вы описываете. Но это будет как бы заплатка, так как она не решит проблему целиком. Пределы могут изменяться в процессе работы. Кроме того наша цель состоит в том, что бы вся логика проверок максимально была в контроллере и не усложняла GUI и его настройки.
И все же мы уже добавили в наш план:
1. Ввести диапазон допустимых значений в элемент Поле ввода. Это частично решит проблему и оставит легкое использование элемента для новичков.
2. Разработать новые элементы управления с двумя состояниями, желаемым и текущим, которые позволят максимально гибко решать любые задачи.  Или каким то образом расширить существующие элементы.

Как решить проблему сейчас? Разместить на экране два элемента, текстовую строку и под ней поле ввода. В текстовой строке отображается значение из контроллера, на основе которого контроллер принимает решения и происходит управление вашим объектом. Поле ввода служит только для изменения этого значения. Изменять ли это значение или нет целиком зависит от логики контроллера. Он может его и не изменить, если оно не соответствует каким то критериям. Как дополнительный бонус, поле ввода можно разместить над LED что бы LED образовывал рамку вокруг поля ввода. Если логика контроллера обнаруживает несоответствие критериям, LED окрашивает рамку в красный цвет. В данном случае опять же только логика контроллера определяет критерии и показывает пользователю что он ввел ошибочные данные.

http://forum.remotexy.com/img/remotexy/smart_edit.png

3

Re: "Поле ввода Edit" ввод только допустимых значений.

remotexy wrote:

Так же это приведет к более сложной логике обработки таких событий в самом контроллере, что для новичков будет существенной проблемой.

Мысли в слух.....

можно сделать два поля "Ввода значений", одно однонаправленное, как сейчас.
Другое двунаправленное. Чтоб был выбор что использовать. Я понимаю что там будут камни подводные и не все так очевидно как кажется на первый взгляд.
Да и не только поле ввода.... а вообще элементы управления, иногда надо какие то блокировать от ситуации в контроллере или еще чего как а связи обратной нет  ни какой.

remotexy wrote:

Пределы могут изменяться в процессе работы

Не скажу что такого не будет никогда. Но когда эти пределы определены раз и навсегда это масса случаев.
Те же проценты например, от 0 до 100%. А числовой ввод от -32000 до +32000. Допустим ползунок можно отмассштабировать и ни кто ничего не заметит, но с ним там единички ловить, не айс.

remotexy wrote:

Разместить на экране два элемента, текстовую строку и под ней поле ввода.

Т.е. чтоб поле ввода не отображалось? Прикольно, не приходила мне мысль такая мысль. Опять же лишний элемент....
И там как бы при нажатии отображается последнее вводимое число, которое может быть не совсем тем..... что может смутить.

Ладно будем думать.... как что сделать. За идею спасибо.

4

Re: "Поле ввода Edit" ввод только допустимых значений.

grymlen wrote:

Т.е. чтоб поле ввода не отображалось?

Нет. Поле ввода сверху. Добавил к предыдущему посту картинку для примера.

5

Re: "Поле ввода Edit" ввод только допустимых значений.

Только сейчас увидел картинку. Не не не не...... Не хочу автора обидеть, но это даже не костыль........ это вариант ОТ программиста и ДЛЯ программиста.

Сейчас попробовал вариант с полем ввода под полем вывода. Чтоб интерфейс не захламлять. Работает. Как вариант можно использовать. Только там значения старые вылазят, чтоб вбить новое, нужно старое удалить ручками сначала.....
Ладно, что то привередливый я сильно....

6

Re: "Поле ввода Edit" ввод только допустимых значений.

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

https://downloader.disk.yandex.ru/preview/284dcff4da42777309de09f401da5348056b00a9001dd7822fe8b5da2c29bc28/5e6b7eda/NsmdZX0Vj8OKn1pnTUPwLtmZTO2Z_PjxP2FWnv7CfBNXzpSSjoVFYoatFxj21xl5DVRkDZSYQiQ7bP6qQdoLug==?uid=0&filename=2020-03-13_13-34-15.png&disposition=inline&hash=&limit=0&content_type=image%2Fpng&tknv=v2&owner_uid=12789404&size=1920x969

7

Re: "Поле ввода Edit" ввод только допустимых значений.

Попробуйте использовать новую функцию
http://forum.remotexy.com/viewtopic.php?pid=3036#p3036