TRichEdit查找受保护的文本

时间:2015-02-05 09:06:42

标签: delphi delphi-xe2 richedit delphi-4

我正在研究TRichEdit(Delphi XE2)。

有什么方法可以检查richedit文本框是否包含受保护的文本?也是受保护文本的起始位置,而不是遍历整个文本。

目前我正在使用以下代码

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

当文本很大时,上面的代码需要花费大量时间来执行。

这曾经在delphi 4中正常工作

有人可以告诉为什么相同的代码在delphi XE2中说更多的时间,而在Delphi 4中用更少的时间也是在Delphi XE2中执行此操作的正确方法?

1 个答案:

答案 0 :(得分:1)

无法搜索文本属性。迭代单个字符并查询其属性是唯一的选择。

要加快代码速度,您可以:

  1. 使用EM_SETSELEM_EXSETSEL窗口消息,而不是单独设置SelStartSelLength属性。

  2. 使用EM_SETEVENTMASK窗口消息关闭RichEdit的内部通知(例如EN_HSCROLLEN_VSCROLLEN_SELCHANGE)正在迭代。

  3. 您可能还会考虑使用WM_SETREDRAW窗口消息来禁用RichEdit在重复时重新绘制。