TWebBrowser模态打印对话框?

时间:2010-03-22 10:52:52

标签: delphi com automation twebbrowser

我发现很多方法可以让TWebBrowser显示一个无模式的打印对话框,但是如何让它显示模态?我想打印一个html页面,这就是我需要模态对话框的原因。

我非常感谢你对这一点的看法。

谢谢!

2 个答案:

答案 0 :(得分:1)

我想不出有很多方法可以显示无模式对话框的原因。在显示无模式打印对话框时,为什么还要继续与Web浏览器进行交互?

如果要按程序启动打印,但需要用户选择打印机,请使用:

ExecWB(OLE_CMDID_PRINT, OLECMDEXECOPT_PROMPTUSER); 

答案 1 :(得分:0)

尤里卡!我解决了。

以下是:

当您显示无模式打印对话框时,您可以在Delphi中禁用调用表单。然后,您可以使用OnCommandStateChange事件来检测用户打印或取消打印对话框的时间。

示例代码:

  WebBrowser1.OnCommandStateChange:=WebBrowser1CommandStateChange;
  WebBrowser1.ControlInterface.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER,
    vaIn, vaOut);

procedure TForm1.WebBrowser1CommandStateChange(Sender: TObject; Command:
    Integer; Enable: WordBool);
begin
  if Enabled then
    Enabled:=false
  else begin
    Enabled:=true;
    WebBrowser1.OnCommandStateChange:=nil;
  end;
end;

我恳请大家测试我的解决方案,因为我不确定此代码的可靠性。

谢谢!