比如:在预先配置中,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发布