Written on: 22. 03. 2016 [16:41]
|
Daby
Evgeniy Ostrikov
Topic creator
registered since: 22.03.2016
Posts: 2
|
Укажите правильный путь.
Хочу реализовать задание значения для сенсорной панели с подтверждением изменений. Для этого создал специальный виджет (SetValue), который хочу вызывать при нажатии на "строке редактирования"(FormEl). В атрибуте "обработка событий" строки редактирования записал следущее:
ws_FocusIn::open:/pg_control/pg_SetValue
В итоге при нажатии на строку виджет открывается. Но при закрытии фокус возвращается обратно на строку редактирования, снова генерируется событие и снова открывает этот виджет. И так по кругу.
Подскажите пожалуйста как решить эту проблему или обойти её.
И ещё вопрос: Как задать место (координаты) где должен открыться этот виджет? У меня он постоянно открывается в левом верхнем углу.
|
Written on: 22. 03. 2016 [16:52]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"Daby" wrote:
В итоге при нажатии на строку виджет открывается. Но при закрытии фокус возвращается обратно на строку редактирования, снова генерируется событие и снова открывает этот виджет. И так по кругу.
Подскажите пожалуйста как решить эту проблему или обойти её.
По событию нажатия/отпускания пробуйте, вроде они там сейчас должны проходить, для элементов формы.
"Daby" wrote:
И ещё вопрос: Как задать место (координаты) где должен открыться этот виджет? У меня он постоянно открывается в левом верхнем углу.
Включить сохранение положения окон, перетянуть куда нужно и там закрыть, далее будет открываться где закрылось.
Learn, learn and learn better than work, work and work.
|
Written on: 23. 03. 2016 [14:36]
|
Daby
Evgeniy Ostrikov
Topic creator
registered since: 22.03.2016
Posts: 2
|
"roman" wrote:
По событию нажатия/отпускания пробуйте, вроде они там сейчас должны проходить, для элементов формы.
Спасибо за быстрый ответ.
Но как я ни пробовал, у меня не получилось в строке редактирования (FormEl) получить ещё события кроме: ws_FocusIn, ws_FocusOut, ws_LnAccept на версии 0.9+r2341.
Посмотрел исходники и насколько смог понять, что только ws_FocusIn, ws_FocusOut присутствуют для всех типов FormEl. События ws_Bt{Press|Release|ToggleChange} работают только если FormEl имеет тип кнопка, а события key_mouse{...} только для "группы элементов" (Box).
Как решение пока рассматриваю создание в качестве "поля ввода" элемент Box с текстовым полем на нём. Тогда можно будет по событию key_mousePresLeft отследить область нажатия и вызвать виджет задания соответствующего параметра.
Или использовать всётаки виртуальную клавиатуру как описано тут http://oscada.org/ru/forum/posts/proekt/virtualnaja_klaviatura/ . Но с ней пока тоже есть вопросы удобства использования.
[This article was edited 1 times, at last 23.03.2016 at 14:42.]
|
Written on: 23. 03. 2016 [21:47]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"Daby" wrote:
Спасибо за быстрый ответ.
Но как я ни пробовал, у меня не получилось в строке редактирования (FormEl) получить ещё события кроме: ws_FocusIn, ws_FocusOut, ws_LnAccept на версии 0.9+r2341.
Включил, после того как нашёл причину артификатов из-за которых ранее выключил.
Learn, learn and learn better than work, work and work.
|