TWebBrowser - 检测插入符号下的标记

时间:2017-02-08 10:28:41

标签: html delphi internet-explorer delphi-xe7 twebbrowser

我想检测哪个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(我想)。当我双击一个链接/单词时它可以工作。但是,如果没有选择文本/链接,我不知道如何在插入符号下获取标记。

1 个答案:

答案 0 :(得分:1)

GetcaretPos(CursorPos)返回客户端(相对)坐标(参见GetCaretPos function

删除wbBrowser.screentoclient(CursorPos),它应该可以正常工作。我已经使用上面的代码示例进行了测试