Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi webbrowser上的插入符号位置_Delphi_Caret - Fatal编程技术网

Delphi webbrowser上的插入符号位置

Delphi webbrowser上的插入符号位置,delphi,caret,Delphi,Caret,我正在尝试获取webbrowser中插入符号闪烁的htmlinputtextelement的id。所以当我按TAB键时,它会改变 我怎样才能在德尔福做到这一点 你知道当你进入一个网站,有多个元素。您可以按TAB键滚动浏览它们。填写完第1栏选项卡后,请填写第2栏选项卡第3栏选项卡,直到您在网站上填写完表格。我想这样做。通过知道当前插入符号所在的inputtextelement的id是什么 您可以使用getcursorpos获取鼠标位置。你能用同样的方法得到插入符号的位置吗?它们没有为x和y提供相同

我正在尝试获取webbrowser中插入符号闪烁的htmlinputtextelement的id。所以当我按TAB键时,它会改变

我怎样才能在德尔福做到这一点

你知道当你进入一个网站,有多个元素。您可以按TAB键滚动浏览它们。填写完第1栏选项卡后,请填写第2栏选项卡第3栏选项卡,直到您在网站上填写完表格。我想这样做。通过知道当前插入符号所在的inputtextelement的id是什么

您可以使用getcursorpos获取鼠标位置。你能用同样的方法得到插入符号的位置吗?它们没有为x和y提供相同的位置

procedure TForm1.Button2Click(Sender: TObject);
var
  MausPos: TPoint;
  HtmlElement: IHTMLElement;
    iHTMLDoc: IHtmlDocument2;
    tag1:string;
    id1:string;
begin
  if Supports(webbrowser1.Document, IHtmlDocument2, iHTMLDoc) then
  begin
    if GetcaretPos(MausPos) then
    begin
      MausPos := webbrowser1.screentoclient(MausPos);
      HtmlElement := iHTMLDoc.ElementFromPoint(MausPos.X, MausPos.Y);

插入符号不像鼠标光标位置那么简单:每个窗口都可以自由地创建和显示自己的插入符号,无论它想在哪里显示。这是一个例子。通常情况下,如果窗口具有键盘焦点,那么它只会显示插入符号,但是我不认为有任何东西会阻止窗口显示插入符号,即使它没有键盘焦点

由于正常行为是仅在有键盘焦点的情况下显示插入符号,因此您可以使用:。但是您可能会发现TWebBrowser本身拥有焦点,我怀疑每个HTML元素都有一个窗口句柄

我假设您实际需要的是活动元素。您可以通过以下方式获得:

(TWebBrowser.Document as IHTMLDocument2).activeElement
下面是使用此属性的简短代码段:

procedure TForm25.Button2Click(Sender: TObject);
begin
  if (W.Document as IHTMLDocument2).activeElement <> nil then
    ShowMessage((W.Document as IHTMLDocument2).activeElement.tagName);
end;
程序TForm25.按钮2点击(发件人:TObject);
开始
如果(W.documentas IHTMLDocument2).activeElement为nil,则
ShowMessage((W.Document作为IHTMLDocument2.activeElement.tagName);
结束;

如果我将TWebBrowser放在表单上,则按TAB键确实会导致焦点循环。这不会发生在您身上吗?如果选择了InputExtElement,则不会发生。然后按TAB键将导致选择下一个InputExtElement。对不起,我无法理解。也许其他更了解TWebBrowser的人能帮上忙。thx David,在question@David,我只花了半个小时阅读了meta上的“我对SO上瘾了吗”。。。非常感谢。我觉得M25非常有趣,因为我自己也认识它。我想我现在在28号公路上!!我启用了EditMode=并且无论何时放置光标(链接、图像、格式化文本),我都会得到:“BODY”