2015-02-05 2 views
1

Я работаю над TRichEdit (Delphi XE2).TRichEdit поиск защищенного текста

Есть ли способ проверить, содержит ли текстовое поле richedit защищенный текст или нет? Также начальная позиция защищенного текста без повторения всего текста.

В настоящее время я использую ниже код

source.SelStart := charNo; //source is richedit name and charno is the      
         //iterating loop 
source.SelLength := 1; 
if (source.SelAttributes.Protected) then 

Приведенный выше код занимает много времени для выполнения, если текст большой.

Это работало отлично в Дельфах 4

Может кто-то пожалуйста, скажите почему тот же код говорить больше времени в Дельфах XE2 и меньше времени в Delphi 4 также правильный способ сделать это в Delphi XE2?

ответ

1

Невозможно найти текстовые атрибуты. Итерация отдельных символов и запрос их атрибутов - единственный вариант.

Чтобы ускорить код, вы можете:

  1. использовать оконное сообщение EM_SETSEL или EM_EXSETSEL вместо того, чтобы устанавливать SelStart и SelLength свойства по отдельности.

  2. Используйте сообщение EM_SETEVENTMASK окна, чтобы отключить внутренние уведомления в RichEdit (например, если EN_HSCROLL, EN_VSCROLL и EN_SELCHANGE) в то время как вы итерацию.

  3. Вы также можете использовать окно окна WM_SETREDRAW, чтобы отключить RichEdit при перерисовке во время повтора.

Смежные вопросы