实时自动链接

1 view
Skip to first unread message

magi...@gmail.com

unread,
Aug 5, 2006, 10:23:23 AM8/5/06
to kicoy开发论坛
先解释一下含义。自动链接就是文章中的指定关键字自动转成链接。

比如:在预先配置中,java所对应的链接是http://www.matrix.org.cn。所以当打开自动链接的时候,文章中所有的java会加上链接。

实时自动链接就是在输入的时候,链接就会自动加上。

这就要求实时监控键盘输入,在DHtmlEdit中设置OnChar事件。

OnChar是处理WM_CHAR的事件。当DHtmlEdit接受到WM_CHAR事件后,就会调用OnChar事件,这时候就可以进行关键字匹配。

需要创建一个动态关键字缓冲区,每次OnChar事件就把当前输入的Char放入缓冲区,然后从后面开始进行关键字匹配。

预先配置好的关键字列表与缓冲区进行匹配,不过要注意不要从头开始比较,类似这样的比较:

key:=hotList.Items[i];
len:=Length(key);
if(dynaLen>len)then
begin
temp:=dynaPchar+dynaLen-len;
end
else
begin
temp:=dynaPchar;
end;
if(StrComp(PChar(key),temp)=0)then
......

一旦匹配成功就设置成功标志,但是并不在事件中进行html替换。

真正将文字替换成链接是在HtmlDisplayChange事件中,每次事件触发时,判断成功标志,再进行html替换。

html中的替换并不复杂。

先用 html.DOM.Selection.CreateRange 取得IHTMLTxtRange。

再使用moveStart('character', start),选中输入的字符。

再粘贴上链接pasteHTML(HTMLText);

---
本文章使用开源内容管理kicoy发布

Reply all
Reply to author
Forward
0 new messages