我发现很多方法可以让TWebBrowser显示一个无模式的打印对话框,但是如何让它显示模态?我想打印一个html页面,这就是我需要模态对话框的原因。
我非常感谢你对这一点的看法。
谢谢!
答案 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;
我恳请大家测试我的解决方案,因为我不确定此代码的可靠性。
谢谢!