0

我的问题是 Delphi progies 吓死人 - Windows 中的 Rich Edit(XP 和 XP 之前的版本)。

情况:

我在表单的 OnCreate 中添加了 EM_AUTOURLDETECTION。目标 -> RichEdit1。然后,我有表格,即在显示表格后“折叠”。RichEdit 控件是饱和的、可见的和启用的,但它是“隐藏的”,因为表单窗口已折叠。

我可以展开和折叠表单,使用 Button1 并更改表单的 Constraints 和 Size 属性。

第一次展开表单后,RichEdit1 控件内的 URL 会突出显示。但是,在第二次、第三次、第四次等……我折叠和展开表单之后,RichEdit1 控件不再突出显示 URL。

我试过 EM_SETTEXTMODE 消息,还有 WM_UPDATEUISTATE,还有基本的 WM_TEXT 消息 -> 不走运。看起来这个消息在发送键盘敲击(虚拟键码)时确实有效(启用检测),但在修改文本时无效。另外 - 我正在考虑重写代码以使 RichEdit Control 动态化。这会解决问题吗?

也许解决方案是覆盖 OnPaint / OnDraw 方法以避免折叠或展开表单时突出显示(格式化)丢失?

奇怪的是,我的 Embarcadero 文档说这个功能必须在任何时候文本被修改时工作。为什么它不起作用?

任何帮助表示赞赏。我正在制作这个社区 Wiki,因为这是常见问题,我们可以一起找到解决方案,对吗?:)

另外 - 后续行动和相关问题:

覆盖 OnPaint

如何在 RichEdit 2.0 中自动检测 url?

http://www.vbforums.com/archive/index.php/t-59959.html

4

1 回答 1

0

我不确定,但是从隐藏到显示时是否重新创建了 Richedit 的窗口?如果是这种情况,您可以创建自己的派生 TRichEdit 类,覆盖创建 WIndows 句柄 (TWinControl.CreateHandle) 的函数并在那里添加 EM_AUTOURLDETECTION。

于 2010-01-31T16:55:15.607 回答