В RealStudio, как я могу перехватить вставку форматированного текста? - PullRequest
1 голос
/ 20 ноября 2011

Я пытаюсь создать простое текстовое поле для редактирования WYSIWYG.Однако я хочу разрешить только определенные типы форматирования (например, полужирный, курсив, подчеркивание и один тип заголовка, но не использовать цвета или другие шрифты).

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

В лучшем случае я хочу автоматически удалить любое форматирование, которое я не поддерживаю.В худшем случае я хочу просто вставить что-нибудь как простой текст, заставляя их переформатировать его.Но ни в коем случае я не хочу просто сбросить буфер обмена в текстовую область.

Есть мысли о том, как это сделать?

Ответы [ 2 ]

1 голос
/ 10 декабря 2011

Я бы порекомендовал создать новый класс текстового поля / текстовой области и создать обработчик меню EditPaste, который (а) делает то, что вы ищете в плане обработки текста буфера обмена, и (б) возвращает true, чтобы предотвратить вставку по умолчанию от происходящего. Это безопаснее, чем использование событий Key down, поскольку пользователь может вручную выбрать вставку из меню редактирования.

Вы можете получить доступ к тексту в буфере обмена, создав объект буфера обмена.

Чтобы создать подкласс текстового поля и перехватить команду меню вставки:

  1. Открыв проект, выберите «Проект»> «Добавить»> «Класс»
  2. Выберите новый класс на вкладке проекта и на панели свойств установите для SuperFlextField
  3. Дважды щелкните класс, чтобы редактировать его
  4. Нажмите среднюю панель инструментов «Добавить обработчик меню» в своем классе
  5. Измените имя пункта меню на «EditPaste». Поместите свой код перед «верните истину» и обязательно оставьте здесь «истину возврата».

Ваш код может затем отформатировать и вставить текст вручную и переопределить функцию вставки по умолчанию.

Любая команда-V или control-V в этом текстовом поле вызовет запуск этого обработчика меню. Любые контекстные меню будут добавлены вами в любом случае, так как real basic не создает контекстные меню по умолчанию, так что вы также можете их контролировать.

Чтобы добавить текстовое поле в окно, просто измените фильтр над списком объектов на Элементы управления проектом и перетащите класс оттуда.

1 голос
/ 20 ноября 2011

Вы можете перехватить вставку самостоятельно, перехватывая ее в событиях KeyDown. Затем вы можете посмотреть, чтобы разобрать это самостоятельно. Это может быть немного сложно, но я думаю, что это единственный способ сделать это.

Может быть проще разобрать результирующий StyleRun после вставки и вычеркнуть ненужное форматирование.

Кроме того, вы можете посмотреть на элемент управления форматированным текстом из программного обеспечения True North и переопределить методы вставки элемента управления (вы получите весь исходный код) и просто обработать его самостоятельно.

В любом случае, я думаю, что это будет изрядная работа.

...