![]() |
|
||||||||||
|
|||||
|
Регистрация: May 2011
Адрес: 0,0,0 относительно меня
Сообщений: 123
|
Задача: написать некое подобие экранной клавиатуры, но действующей лишь в рамках одного ролика. Т.е. есть несколько полей для ввода текста и отрисованная клавиатура с кнопочками. Необходимо отлавливать нажатия кнопок клавиатуры и вносить соответствующие изменения в поля, где был фокус.
Как я вижу реализацию: хранить в отдельной переменной инфу о том, какое текствое поле последним получило фокус, и о том, на какой позиции стоит маркер в этом поле. Далее же, используя эту инфу, вносить требуемые изменения в нужном поле. Но возникают трудности с таблицей, к примеру: как определить позицию маркера в ячейке? Ну и вообще быть может кто сталкивался с подобной задачей? С какой стороны лучше подойти к этому вопросу? ) |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 189
|
Нарисовать кнопки, и повесить на каждую KeyboardEvent.
|
|
|||||
|
Регистрация: Oct 2009
Сообщений: 50
|
у текстового поля есть свойство "caretIndex" которое вернет вам позицию курсора в нем
|
|
|||||
|
Регистрация: May 2011
Адрес: 0,0,0 относительно меня
Сообщений: 123
|
ага, за caretIndex спасибо! ) а как быть с таблицей? ))
а как определить, какое текстовое поле имеет фокус на момент нажатия кнопки? Фокус же автоматом будет перескакивать на кнопку. Пока придумал только завести отдельную переменную, отвечающую за поле с фокусом, и на каждое поле повесить событие входа, в котором в ту самую переменную будет передаваться ссылка на sender'a. Но если помимо полей ввода будут еще объекты на столе? в таком случае, если ткнуть в любой подобный объект, текстовое поле фокус потеряет, но в переменной останется ссылка на него, что плохо ( как быть? вешать событие входа на все объекты на столе? не круто как-то... или быть может как-то можно лишить объект возможности получать фокус? прошу прощения за столь путанное изложение )) |
|
|||||
|
Регистрация: Oct 2009
Сообщений: 50
|
У текстового поля есть унаследованные события focusIn и focusOut, можете воспользоваться ими и удалять ссылку на поле когда оно теряет фокус
|
|
|||||
|
Регистрация: May 2011
Адрес: 0,0,0 относительно меня
Сообщений: 123
|
ага, отлично! спасибо )
а само решение задачи адекватное? ) и таки как быть с таблицами? ) Добавлено через 8 минут аррр! ) если использовать focusOut, то при нажатии на кнопку ссылка на текстовое поле сотрется, што плохо (( |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Повесить на stage обработчик событий FocusEvent.KEY_FOCUS_CHANGE, FocusEvent.MOUSE_FOCUS_CHANGE и в нем отменять поведение по умолчание (event.preventDefault), т.о., чтобы фокус не сошел с текстового поля.
А, если само приложение потеряет системный фокус, то принудительно по событию Event.ACTIVATE, возвращать его на последнее, активное поле. И о каких таблицах идет речь? |
|
|||||
|
Что-то мне кажется что автор пытается сделать заполнение обычной себе таблицы, которую он составляет из текстфилдов, с участием таба для перемещения по ячейкам + фича экранной клавиатуры не дает жить спокойно.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
|
Регистрация: May 2011
Адрес: 0,0,0 относительно меня
Сообщений: 123
|
свойство relatedObject класса FocusEvent - решение моей проблемы ))
таблица - это DataGrid, мне интересно, как в нем получить доступ к ячейке, а особенно - к положению курсора в ней. Добавлено через 23 часа 10 минут никак не могу понять, как передать фокус ввода объекту: поле выделяется рамкой, но фокуса ввода нет. Подскажите, пожалуйста, как передать фокус ввода? |
![]() |
![]() |
Часовой пояс GMT +4, время: 06:56. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| экранная клавиатура |
| Опции темы | |
| Опции просмотра | |
|
|