Delphi - 如何使用 Delphi 制作所见即所得 HTML 编辑器? [关闭]

2024-04-05

如何制作一个“易于”使用的所见即所得界面来制作 HTML 文件? IE。 HTML 编辑器。专门用于创建格式化电子邮件,包括图像、超链接、字体格式、项目符号、缩进等...

注意[jd]:这是一个自我回答的问题,旨在为其他人提供指导。


bsalsa.com 的 EmbeddedWB Web 浏览器组件恰好提供了实现此目的的工具。

编辑:bsalsa.com 不再存在。新地点:https://bitbucket.org/wpostma/tembeddedwb https://bitbucket.org/wpostma/tembeddedwb

您放置一个 EmbeddedWB(Web 浏览器)控件(窗口)来显示 HTML(例如来自网站的 HTML)。 然后,将 EditDesigner 组件放置在窗体上,并将其链接到“对象检查器 - 属性”中的 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 中的此过程仅接受值并将其解析为 HTMLDoc.execCommand 的整数。这就是某些命令所需要的全部内容,通常只需要 0 作为值。但许多命令需要 Value 的字符串信息,例如更改 Fontname。 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 过程,允许您插入任何您想要的内容。

德尔菲快乐;)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Delphi - 如何使用 Delphi 制作所见即所得 HTML 编辑器? [关闭] 的相关文章