我找到了很多方法让 TWebBrowser 显示一个无模式的打印对话框,但是如何让它显示一个模式的呢?我想打印一个 html 页面,这就是我需要模态对话框的原因。
我真的很感激你对这个的想法。
谢谢!
我找到了很多方法让 TWebBrowser 显示一个无模式的打印对话框,但是如何让它显示一个模式的呢?我想打印一个 html 页面,这就是我需要模态对话框的原因。
我真的很感激你对这个的想法。
谢谢!
我想不出为什么会有很多方法来显示无模式对话框。为什么要在显示无模式打印对话框时继续与 Web 浏览器交互?
如果要通过程序启动打印,但需要用户选择打印机,请使用:
ExecWB(OLE_CMDID_PRINT, OLECMDEXECOPT_PROMPTUSER);
尤里卡!我解决了。
方法如下:
当您显示无模式打印对话框时,您可以禁用 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;
我恳请大家测试我的解决方案,因为我不确定这段代码的可靠性。
谢谢!