我正在研究TRichEdit(Delphi XE2(。
有什么方法可以检查富编辑文本框是否包含受保护的文本? 也是该受保护文本的起始位置,而不遍历完整文本。
目前我正在使用下面的代码
source.SelStart := charNo; //source is richedit name and charno is the
//iterating loop
source.SelLength := 1;
if (source.SelAttributes.Protected) then
当文本很大时,上面的代码需要花费大量时间才能执行。
这曾经在德尔福 4 中工作正常
有人可以告诉为什么相同的代码在德尔福 XE2 中谈论更多时间而在德尔福 4 中谈论更少的时间也是在德尔福 XE2 中执行此操作的正确方法?
无法搜索文本属性。 迭代单个字符并查询其属性是唯一的选择。
要加快代码速度,您可以:
-
使用"
EM_SETSEL
"或"EM_EXSETSEL
"窗口消息,而不是分别设置SelStart
和SelLength
属性。 -
使用
EM_SETEVENTMASK
窗口消息在迭代时关闭 RichEdit 的内部通知(如EN_HSCROLL
、EN_VSCROLL
和EN_SELCHANGE
(。 -
您还可以考虑使用
WM_SETREDRAW
窗口消息来禁用 RichEdit 在迭代时重新绘制。