bsalsa.com的EmbeddedWB Web浏览器组件提供了执行此操作的工具.
编辑:bsalsa.com不再存在.新位置:https: //bitbucket.org/wpostma/tembeddedwb
放置EmbeddedWB(Web浏览器)控件(窗口)以显示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;
Run Code Online (Sandbox Code Playgroud)
您将看到EditDesigner.pas中的此过程仅接受并将Value as Integer解析为HTMLDoc.execCommand.对于某些命令,您只需要这些,通常只需要0作为值.但是许多命令需要Value的String信息,例如更改Fontname.HTMLDoc.execCommand实际上会接受Variant作为Value,因此我向EditDesigner.pas添加了另一个过程,如下所示,如果您知道要发送的命令,则可以提供对MSHTML编辑器的近乎完全的访问权限.
procedure TEditDesigner.ExecCommandEx(Command: Widestring; ShowUI: Boolean; Value: OleVariant);
begin
if Assigned(FEmbeddedWB) then
GetHTMLDoc2FromWB.execCommand(Command, showUI, Value);
end;
Run Code Online (Sandbox Code Playgroud)
当您需要向编辑器发送更高级的命令时,可以访问此过程.这将改变字体颜色.
procedure TfrmComposer.actFontColourExecute(Sender: TObject);
begin
if dlgColorDialog.Execute then
begin
EditDesigner1.ExecCommandEx('foreColor',False,dlgColorDialog.Color);
end;
EditDesigner1.EmbeddedWB.SetFocus;
end;
Run Code Online (Sandbox Code Playgroud)
这将改变字体......
procedure TfrmComposer.JvFontComboBoxChange(Sender: TObject);
begin
EDewbMessageBody.ExecCommandEx('fontname',False,JvFontComboBox.FontName);
EDewbMessageBody.EmbeddedWB.SetFocus;
end;
Run Code Online (Sandbox Code Playgroud)
还有一个EditDesigner1.InsertHTML过程,允许您插入任何您想要的内容.
快乐的Delphiin';)
归档时间: |
|
查看次数: |
7812 次 |
最近记录: |