2015-02-05 15 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 동일한 코드는 델파이 4 델파이 XE2에서이 작업을 수행 할 수있는 적절한 방법을 델파이 XE2에서 더 많은 시간과 적은 시간을 이야기하는 이유

누군가가 말해 주시겠습니까?

답변

1

텍스트 속성을 검색 할 방법이 없습니다. 개별 문자를 반복하고 속성을 쿼리하는 것이 유일한 옵션입니다.

은 당신이 할 수있는 코드의 속도를 높이기 위해 :

  1. 개별적으로 SelStartSelLength 속성을 설정하는 대신 EM_SETSEL 또는 EM_EXSETSEL 창 메시지를 사용

    .
  2. 은 RichEdit의 내부 통지 (예 : EN_HSCROLL, EN_VSCROLLEN_SELCHANGE)이 반복되는 동안 전원을 끌 때 EM_SETEVENTMASK 창 메시지를 사용합니다.

  3. 또한 반복하는 동안 RichEdit에서 다시 칠하지 못하도록 설정하려면 WM_SETREDRAW 창 메시지를 사용하는 것이 좋습니다.