【问题标题】:TRichEdit finding protected textTRichEdit 查找受保护的文本
【发布时间】:2015-02-05 09:06:42
【问题描述】:

我正在使用 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 中执行此操作的正确方法吗?

【问题讨论】:

    标签: delphi delphi-xe2 richedit delphi-4


    【解决方案1】:

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

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

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

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

    3. 您还可以考虑使用 WM_SETREDRAW 窗口消息来禁止 RichEdit 在迭代时重新绘制。

    【讨论】:

      猜你喜欢
      • 2013-04-08
      • 1970-01-01
      • 2021-11-26
      • 2014-12-24
      • 1970-01-01
      • 2017-09-18
      • 2016-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多