OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 16:22

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
СообщениеДобавлено: Среда, 19 Март, 2014 08:58 

Зарегистрирован: Суббота, 16 Февраль, 2008 07:58
Сообщения: 358
Откуда: Россия, Стерлитамак
Можно ли обработать в типовой текстовой вьюхе обработку ввода определенного символа/набора символов (не горячии клавиши)?

Пусть даже созданием специальной вьюхи, которую помещать для этого в текст (она будет обрабатывать данное событие). Если же есть решение еще проще, то еще лучше.

Подскажите, пожалуйста, чего посмотреть по этому поводу.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 19 Март, 2014 10:53 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Тут надо представлять, как клавиатурные нажатия передаются в текстовое отображение.

Когда вы нажимаете кнопку на клавиатуре, ОС порождает событие и посылает его в окно, в котором у вас текст. Каркас обрабатывает это событие и формирует сообщение для шины. Далее это сообщение падает вниз, по дереву фреймов, прямо до отображения в фокусе - которым является ваш текст. Контроллер текста обрабатывает сообщение и текст получает необходимые изменения.

Исходя из этой логики, у вас есть два способа изменить поведение текста.

1) Заменить контроллер своим.
2) Обернуть текстовое отображение собственным, чтобы перехватывать сообщение и обрабатывать его как нужно.

Проще сделать обёртку текста, см. пример ObxWrappers, там как раз есть демонстрация обработки сообщения.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 19 Март, 2014 16:39 

Зарегистрирован: Суббота, 16 Февраль, 2008 07:58
Сообщения: 358
Откуда: Россия, Стерлитамак
Я правильно понимаю про обертку, что если мне нужна остальная функциональностью типовой вьюхи, то я должен реализовать такой же интерфейс, с перенаправлением на неё ?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 19 Март, 2014 20:19 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Если задача простая, то можно обернуть обычной Views.View и просто перенаправлять все входящие сообщения в обёрнутую TextViews.View.

А можно сделать собственную реализацию TextViews.View (тогда у неё интерфейс будет полностью соответствовать ожиданиям каркаса) и в методах реализации дёргать за методы обёрнутой TextViews.View.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 20 Март, 2014 08:54 

Зарегистрирован: Суббота, 16 Февраль, 2008 07:58
Сообщения: 358
Откуда: Россия, Стерлитамак
Оказывается Петр уже реализовал, почти то, что требовалось, и как это я пропустил такую вещь viewtopic.php?f=47&t=4452&start=20

Буду над ней думать, как расширить

Но всё равно спасибо за подробные ответы.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 20 Март, 2014 09:33 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Ну, мы догадывались, что вам нужно :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 20 Март, 2014 10:15 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
adva писал(а):
Оказывается Петр уже реализовал, почти то, что требовалось, и как это я пропустил такую вещь viewtopic.php?f=47&t=4452&start=20

Буду над ней думать, как расширить

Но всё равно спасибо за подробные ответы.

Если понадобится еще пример работы с обертками, то поглядите еще вот этот модуль для выделения парных скобок. Все реализовано в одном модуле. Wrap надевает на текущее отображение обертку, Unwrap снимает. Обертка может обрабатывать любые события, но, как показывает опыт, на больших текстах начинает тормозит прокрутка.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


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

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB