TWebBrowser модальный диалог печати? - PullRequest
1 голос
/ 22 марта 2010

Я нашел много способов заставить TWebBrowser показывать немодальное диалоговое окно печати, но как мне сделать так, чтобы оно отображало модальное окно?Я хотел бы напечатать html-страницу, поэтому мне нужен модальный диалог.

Буду очень признателен за ваши идеи по этому вопросу.

Спасибо!

Ответы [ 2 ]

1 голос
/ 22 марта 2010

Я не могу придумать причину, по которой было бы много способов показать немодальный диалог. Почему вы хотите продолжить взаимодействие с веб-браузером, пока отображается немодальный диалог печати?

Если вы хотите начать печать по программе, но хотите, чтобы пользователь выбрал принтер, используйте:

ExecWB(OLE_CMDID_PRINT, OLECMDEXECOPT_PROMPTUSER); 
0 голосов
/ 03 апреля 2010

Эврика!Я решил это.

Вот как:

Когда вы показываете немодальный диалог печати, вы можете отключить вызывающую форму в 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;

Я прошу васлюди, чтобы проверить мое решение, так как я не уверен в надежности этого кода.

Спасибо!

...