我想检测哪个HTML标记(更确切地说是超链接)是插入符号。
procedure THTMLEdit.ShowTag;
var
CursorPos: TPoint;
HtmlElement: IHTMLElement;
iHTMLDoc: IHtmlDocument2;
begin
if Supports(wbBrowser.Document, IHtmlDocument2, iHTMLDoc) then
begin
if GetcaretPos(CursorPos) then
begin
CursorPos := wbBrowser.screentoclient(CursorPos);
HtmlElement := iHTMLDoc.ElementFromPoint(CursorPos.X, CursorPos.Y); // I NEED KEYBOARD CARET HERE, NOT MOUSE CURSOR
if HtmlElement <> NIL
then label1.Caption:= HtmlElement.tagName;
end;
end;
end;
注意:
TWebBrowser在DesignMode中(DesignMode:='On')
TWebBrowser在设计时处于自己的形式,但在运行时以另一种形式(在面板中)重新设置父级。
更新:
我需要的是IHTMLTxtRange(我想)。当我双击一个链接/单词时它可以工作。但是,如果没有选择文本/链接,我不知道如何在插入符号下获取标记。
答案 0 :(得分:1)
GetcaretPos(CursorPos)返回客户端(相对)坐标(参见GetCaretPos function)
删除wbBrowser.screentoclient(CursorPos),它应该可以正常工作。我已经使用上面的代码示例进行了测试