我使用TEmbeddedWB
andTEditDesigner
将 HTML 添加到处于编辑模式的页面。它就像EditDesigner->InsertHTML("1234");
.
问题是因为 HTML 并不总是插入到光标位置。如果我将此代码放在按钮上,它就可以正常工作,HTML 会插入到光标位置。但是,如果我将它放在拦截消息以拦截密钥的CMDialogKey
事件中,它总是将其插入页面的开头。如果选择了文本,则它会在选定的文本位置插入,并覆盖它(应该如此)。但是如果它没有被选中,它会在 HTML 的开头插入它。CM_DIALOGKEY
TAB
这是一个插入 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?