Delphi中为RichEdit加入链接
日期:2007年5月2日 作者: 查看:[大字体 中字体 小字体]-
随着网络的深入应用,各种软件都增加了一些网络功能,常用的文本编辑器也出现了这样的一种功能,当你把一个网址输入完毕后,网址由黑色变成了带下划线的宝蓝色,点击之后,你的缺省Web浏览器将会被启动,显示出该URL所标识的网站内容;而如果你输入的是“mailto:webmaster@yesky.com”那么你的缺省电子邮件程序将被打开,这样你就能通过一个使用文本编辑器来发送电子邮件了。

这个看似神奇的功能,不需用第三方VCL组件就能搞定(据网上的“大牛”们说,第三方组件用多了,大脑会因长期得不到思考而逐渐退化成大猩猩的程度,所以尽量少用)。TRichEidt是Delphi提供的一个非常有用的VCL组件(你可以在Delphi的组件面板的Win32标签页中找到它),它提供了一个文本编辑程序的大部分的功能,甚至还可以对段落进行格式化、改变文本的颜色,这样一来,你完全可以用它制作一个类似Windows操作系统自带的写字板程序,这次我们靠的就是它。
要实现超级链接的功能,首先必须解决如何在TRichRdit中对URL、Mailto等进行检测的问题,还是以实例开始吧,新建一个Delphi工程,在空白的Form上摆放两个TRichRdit组件,组件的名字就用缺省的名字RichEdit1和RichRdit2,对URL的感知功能的实现思路是:
1、发送一个消息(EM_GETEVENTMASK)给RichEdit组件,获取事件模板(EventMask),它将会指定哪一个消息通知(notification)将被发送到给父窗口。
2、发送一个包含ENM_LINK标志的EM_SETEVENTMASK消息给EichEdit,ENM_LINK将被包含在Mask中,当鼠标单击ULR时EN_LINK消息将被发送。
3、发送EM_AUTOURLDETECT消息给RichEdit,EM_AUTOURLDETECT消息将会自动检测URL。
然后,我们来解决URL高亮显示的问题。
在我们刚刚建立的程序中找到RichEdit1组件,进入它的OnCreate事件,在该事件中加入一个自定义的InitRichEditURLDetection过程,以便能够在程序启动时就触发它;RichEdit2组件的OnCreate事件则不加入InitRichEditURLDetection过程,让两者比较一下效果,代码如下所示:
//这个是我们自定义的InitRichEditURLDetection过程
//它是最关键的一步
procedure TForm1.InitRichEditURLDetection(RE: TRichEdit);
var
mask: Word;
begin
mask := SendMessage(RE.Handle, EM_GETEVENTMASK, 0, 0);
SendMessage(RE.Handle, EM_SETEVENTMASK, 0, mask or ENM_LINK);
SendMessage(RE.Handle, EM_AUTOURLDETECT, Integer(True), 0);
end;
//这是FormCreate事件,它加入了我们自定义的过程
//使得程序一运行就出现我们想要实现的效果
procedure TForm1.FormCreate(Sender: TObject);
var
s: string;
begin
InitRichEditURLDetection(RichEdit1);
s:='http://www.yesky.com' + #13#10 +
'mailto:software@chinabyte.com';
RichEdit1.Text := s;
s:= 'http://www.yesky.com' + #13#10 +
'mailto:software@chinabyte.com';
RichEdit2.Text := s
end;
最后我们来实现鼠标单击后自动调用浏览器或邮件程序的功能,我们用覆盖(Override)Form的WndProc方法来捕获EN_LINK消息,然后我们用ShellExecute过程来启动缺省的浏览器,代码如下所示:
- [1] [2] 下一页
-
- Delphi中为RichEdit加入链接 相关文章:
- ·Delphi中为RichEdit加入链接
- Delphi中为RichEdit加入链接 相关软件
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:一个导出Excel非常快的类
下一篇:个人对Delphi使用经验五则
精品推荐
热点TOP10
- ·Delphi下的ADO使用方法!
- ·在Delphi中实现数据分析模块的动态报表
- ·在Delphi中控制扫描仪
- ·用拼音首字符来实现检索功能
- ·让Delphi的DBGrid支持鼠标轮
- ·自 动 隐 藏 的 声 象 按 钮
- ·OpenGL简介
- ·用Delphi制作动态有声标签
- ·从 实 例 看 Delphi 4 中 的 动 态
- ·Delphi中为DBGrid控件添加色彩
- ·常用的BCB & Delphi 函数
- ·产生不重复随机数的简便算法
- ·陈经韬2002原创资料
- ·Delphi2005试用版安装指南
- ·Delphi中ListBox控件的六种特效
- ·第三方控件使用方法
- ·关于SMTP和POP3使用及关于客户-服务端的自动连线问题
- ·关于MP3中的ID3V2格式探讨及我写的ID3V2读取源码
- ·监视打印机部分线程内容
- ·获取其他进程中ListView的文本
