RichEdit VCL和URL。 OnPaint问题的变通方法

时间:2010-01-31 09:43:03

标签: delphi api url messages richedit

我的问题在于Delphi进展恐慌 - Windows中的Rich Edit(XP和XP前版本)。

情况:

我已在表单的OnCreate中添加了EM_AUTOURLDETECTION。目标 - > RichEdit1。然后,我有表格,表现形式后“崩溃”。 RichEdit Control是sattic,visible和enabled,但它是“隐藏”的,因为表单窗口已折叠。

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

首次展开表单后,RichEdit1控件内的URL会突出显示。但是,在第二次,第三次,第四次等之后......我崩溃并展开形式,RichEdit1控件不再突出显示URL。

我已经尝试了EM_SETTEXTMODE消息,也是WM_UPDATEUISTATE,也是基本的WM_TEXT消息 - >没运气。在发送键盘笔划(虚拟键码)时,它就像这样的merssage真正起作用(启用检测),但是在文本被修改时却没有。 另外 - 我正在考虑重写代码以使RichEdit Control动态化。这会解决这个问题吗?

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

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

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

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

Override OnPaint

How to autodetect urls in RichEdit 2.0?

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

1 个答案:

答案 0 :(得分:0)

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