OberonCore https://forum.oberoncore.ru/ |
|
Дополнительная обработка клавиатурного ввода https://forum.oberoncore.ru/viewtopic.php?f=35&t=5034 |
Страница 1 из 1 |
Автор: | adva [ Среда, 19 Март, 2014 08:58 ] |
Заголовок сообщения: | Дополнительная обработка клавиатурного ввода |
Можно ли обработать в типовой текстовой вьюхе обработку ввода определенного символа/набора символов (не горячии клавиши)? Пусть даже созданием специальной вьюхи, которую помещать для этого в текст (она будет обрабатывать данное событие). Если же есть решение еще проще, то еще лучше. Подскажите, пожалуйста, чего посмотреть по этому поводу. |
Автор: | Иван Кузьмицкий [ Среда, 19 Март, 2014 10:53 ] |
Заголовок сообщения: | Re: Дополнительная обработка клавиатурного ввода |
Тут надо представлять, как клавиатурные нажатия передаются в текстовое отображение. Когда вы нажимаете кнопку на клавиатуре, ОС порождает событие и посылает его в окно, в котором у вас текст. Каркас обрабатывает это событие и формирует сообщение для шины. Далее это сообщение падает вниз, по дереву фреймов, прямо до отображения в фокусе - которым является ваш текст. Контроллер текста обрабатывает сообщение и текст получает необходимые изменения. Исходя из этой логики, у вас есть два способа изменить поведение текста. 1) Заменить контроллер своим. 2) Обернуть текстовое отображение собственным, чтобы перехватывать сообщение и обрабатывать его как нужно. Проще сделать обёртку текста, см. пример ObxWrappers, там как раз есть демонстрация обработки сообщения. |
Автор: | adva [ Среда, 19 Март, 2014 16:39 ] |
Заголовок сообщения: | Re: Дополнительная обработка клавиатурного ввода |
Я правильно понимаю про обертку, что если мне нужна остальная функциональностью типовой вьюхи, то я должен реализовать такой же интерфейс, с перенаправлением на неё ? |
Автор: | Иван Кузьмицкий [ Среда, 19 Март, 2014 20:19 ] |
Заголовок сообщения: | Re: Дополнительная обработка клавиатурного ввода |
Если задача простая, то можно обернуть обычной Views.View и просто перенаправлять все входящие сообщения в обёрнутую TextViews.View. А можно сделать собственную реализацию TextViews.View (тогда у неё интерфейс будет полностью соответствовать ожиданиям каркаса) и в методах реализации дёргать за методы обёрнутой TextViews.View. |
Автор: | adva [ Четверг, 20 Март, 2014 08:54 ] |
Заголовок сообщения: | Re: Дополнительная обработка клавиатурного ввода |
Оказывается Петр уже реализовал, почти то, что требовалось, и как это я пропустил такую вещь viewtopic.php?f=47&t=4452&start=20 Буду над ней думать, как расширить Но всё равно спасибо за подробные ответы. |
Автор: | Иван Кузьмицкий [ Четверг, 20 Март, 2014 09:33 ] |
Заголовок сообщения: | Re: Дополнительная обработка клавиатурного ввода |
Ну, мы догадывались, что вам нужно ![]() |
Автор: | Иван Денисов [ Четверг, 20 Март, 2014 10:15 ] |
Заголовок сообщения: | Re: Дополнительная обработка клавиатурного ввода |
adva писал(а): Оказывается Петр уже реализовал, почти то, что требовалось, и как это я пропустил такую вещь viewtopic.php?f=47&t=4452&start=20 Буду над ней думать, как расширить Но всё равно спасибо за подробные ответы. Если понадобится еще пример работы с обертками, то поглядите еще вот этот модуль для выделения парных скобок. Все реализовано в одном модуле. Wrap надевает на текущее отображение обертку, Unwrap снимает. Обертка может обрабатывать любые события, но, как показывает опыт, на больших текстах начинает тормозит прокрутка. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |