加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 如何在TRichEdit中设置EM_AUTOURLDETECT后检测URL链接

发布时间:2020-12-15 04:13:12 所属栏目:大数据 来源:网络整理
导读:我正在尝试使用EM_AUTOURLDETECT消息为TRichEdit组件实现URL检测. 我有以下代码的问题 procedure TForm1.Button1Click(Sender: TObject);var Mask: Word;begin Mask := SendMessage(Handle,EM_GETEVENTMASK,0); SendMessage(Handle,EM_SETEVENTMASK,Mask or
我正在尝试使用EM_AUTOURLDETECT消息为TRichEdit组件实现URL检测.
我有以下代码的问题
procedure TForm1.Button1Click(Sender: TObject);
var Mask: Word;
begin
  Mask := SendMessage(Handle,EM_GETEVENTMASK,0);
  SendMessage(Handle,EM_SETEVENTMASK,Mask or ENM_LINK);
  SendMessage(Handle,EM_AUTOURLDETECT,Integer(True),0);
end;

它虽然有效,但我必须在这些设置之后更改TRichEdit的文本,以使其检测已写入文本中的URL.这就是问题,因为我的TRichEdit在应用此功能时处于ReadOnly模式.

执行此代码后,如何强制TRichEdit检测已写入文本中的URL,我该怎么办?
我在看documentation,但没有提到这样的事情.

谢谢

解决方法

我前段时间遇到了同样的问题并使用了(相当)一个肮脏的解决方法.
发送 EM_AUTOURLDETECT消息后,我得到并存储当前选择,然后(重新)设置富编辑的文本并设置之前存储的选择.
procedure TForm1.Button1Click(Sender: TObject);
var
  EventMask: Word;
  CharRange: TCharRange;
begin
  EventMask := SendMessage(RichEdit1.Handle,0);
  SendMessage(RichEdit1.Handle,EventMask or ENM_LINK);
  SendMessage(RichEdit1.Handle,WPARAM(True),EM_EXGETSEL,LPARAM(@CharRange));
  SendMessage(RichEdit1.Handle,WM_SETTEXT,LPARAM(RichEdit1.Text));
  SendMessage(RichEdit1.Handle,EM_EXSETSEL,LPARAM(@CharRange));
end;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读