来自 bsalsa.com 的 EmbeddedWB Web 浏览器组件只提供了执行此操作的工具。
编辑:bsalsa.com 不再存在。新地点:
https://bitbucket.org/wpostma/tembeddedwb
您放置一个 EmbeddedWB(Web 浏览器)控件(窗口)来显示 HTML,例如来自网站的 HTML。
然后在表单上放置一个 EditDesigner 组件并将其链接到 Object Inspector - Properties 中的 EmbeddedWB 控件。
使用 EditDesigner,您可以将 WebBrowser 设置为编辑模式并进行一些基本的编辑,例如插入或删除文本或设置一些字体属性。虽然不是完整的编辑器。
不要绝望,这个包是对 MSHTML 编辑器的完整包装。对 EditDesigner 单元稍加添加即可让您完全访问 MSHTML execCommand 接口。
原代码:
procedure ExecCommand(Command: Widestring; ShowUI: Boolean; Value: Integer);
begin
if Assigned(FEmbeddedWB) then
GetHTMLDoc2FromWB.execCommand(Command, showUI, Value);
end;
您将看到 EditDesigner.pas 中的此过程仅接受并将 Value 作为 Integer 解析到 HTMLDoc.execCommand。这就是一些命令所需要的,通常只需要 0 作为值。但是许多命令需要值的字符串信息,例如更改字体名称。 HTMLDoc.execCommand 实际上会接受 Variant 作为值,因此我在 EditDesigner.pas 中添加了另一个过程,如下所示,如果您知道要发送的命令,则可以几乎完全访问 MSHTML 编辑器。
procedure TEditDesigner.ExecCommandEx(Command: Widestring; ShowUI: Boolean; Value: OleVariant);
begin
if Assigned(FEmbeddedWB) then
GetHTMLDoc2FromWB.execCommand(Command, showUI, Value);
end;
当您需要向编辑器发送更高级的命令时,您可以访问此过程。
这将改变字体颜色。
procedure TfrmComposer.actFontColourExecute(Sender: TObject);
begin
if dlgColorDialog.Execute then
begin
EditDesigner1.ExecCommandEx('foreColor',False,dlgColorDialog.Color);
end;
EditDesigner1.EmbeddedWB.SetFocus;
end;
这将改变字体...
procedure TfrmComposer.JvFontComboBoxChange(Sender: TObject);
begin
EDewbMessageBody.ExecCommandEx('fontname',False,JvFontComboBox.FontName);
EDewbMessageBody.EmbeddedWB.SetFocus;
end;
还有一个 EditDesigner1.InsertHTML 过程可以让你插入任何你想要的东西。
快乐的Delphiin' ;)