3

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

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

这是一个插入 HTML 的函数TEmbeddedWB

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?

4

0 回答 0