EmbeddedWB在光标位置插入HTML

时间:2013-12-09 12:01:39

标签: delphi webbrowser-control twebbrowser tembeddedwb

我使用TEmbeddedWBTEditDesigner将HTML添加到处于编辑模式的页面。它就像EditDesigner->InsertHTML("1234");一样简单。

问题是因为HTML并不总是插入光标位置。如果我把这个代码放在一个按钮上就可以正常工作,在光标位置插入HTML。但是如果我将它放在CMDialogKey事件中,它拦截CM_DIALOGKEY消息以拦截 TAB 键,它总是将其插入页面的开头。如果选择了文本,则会在选定的文本位置插入,覆盖它(应该如此)。但如果未选中,则将其插入HTML的开头。

这是一个在TEmbeddedWB中插入HTML的函数:

procedure TEditDesigner.InsertHTML(HTML: string);
var
  Sel: IHTMLSelectionObject;
  Range: IHTMLTxtRange;
  Doc: IHTMLDocument2;
begin
  if FEnable and Assigned(FEmbeddedWB) and (not (csDesigning in ComponentState)) then
  begin
    Doc := FEmbeddedWB.Doc2;
    if Assigned(Doc) then
    begin
      Sel := Doc.selection;
      if Assigned(Sel) then
      begin
        if (Sel.type_ = 'None') or (Sel.type_ = 'Text') then
        begin
          Range := Sel.createRange as IHTMLTxtRange;
          Range.pasteHTML(HTML);
        end;
      end;
    end;
  end;
end;

如何使用它一直在光标位置插入HTML?

0 个答案:

没有答案