1

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

我真的很感激你对这个的想法。

谢谢!

4

2 回答 2

1

我想不出为什么会有很多方法来显示无模式对话框。为什么要在显示无模式打印对话框时继续与 Web 浏览器交互?

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

ExecWB(OLE_CMDID_PRINT, OLECMDEXECOPT_PROMPTUSER); 
于 2010-03-22T18:06:16.743 回答
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;

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

谢谢!

于 2010-04-03T09:44:46.900 回答