C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Предварительный просмотр и печать WebBrowser  (Прочитано 2083 раз)
hatebreed
новенький


Сказали спасибо: +0/-0
Offline

Сообщений: 1


Предварительный просмотр и печать WebBrowser
« : 14 Сентябрь 2013, 16:40:27 »

Здравствуйте. Стояла задача создать простенький генератор отчетов, который будет содержать результаты работы программы. Пришел к выводу, что самым оптимальным вариантом является HTML отчет, так как прост в создании, не требует сторонних программ для просмотра (например Office или PDF reader). И нет желания создавать отчет через Fast Report, это будет равноценно тому, если мне нужно прихлопнуть муху, а я возьму гранатомет. Если я не прав или есть другие решения, напишите.

Допустим, у меня есть HTML отчет, я могу сделать его просмотр в программе с помощью WebBrowser. Но встает вопрос предварительного просмотра печати страницы. Если кликнуть ПКМ по WebBrowser, то выпадет контекстное меню как и в IE, в котором есть «предварительный просмотр…». В принципе то, что нужно, но:

Вопрос №1
Окно предварительного просмотра, почему то долго грузиться. Хотя и в IE оно долго грузиться. В Chrome моментально отображается как будет выглядеть распечатываемая HTML страница. Можно ли это исправить без установки дополнительных компонентов и библиотек?
 
Вопрос №2
Я не хочу открывать предварительный просмотр при нажатии на кнопку формы, не хочу пользоваться меню IE. Как это сделать? Я видел много примеров (http://delphi.cjcsoft.net/viewthread.php?tid=42817) на Delphi, но как переделать на C++ не пойму.

Например:
Код:
// Print with Printer Dialog
procedure TForm1.Button3Click(Sender: TObject);
var
vaIn, vaOut: OleVariant;
begin
WebBrowser1.ControlInterface.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER, vaIn, vaOut);
end;

Я пишу:
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
OleVariant vaIn;
OleVariant vaOut;
WebBrowser1->Navigate("http://yandex.ru/");
WebBrowser1->ControlInterface->ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER, vaIn, vaOut);
}

Но выходит ошибка «Ambiguity between 'OLECMDID_PRINT' and 'Shdocvw::OLECMDID_PRINT'». Подскажите пожалуйста в чем дело.
Записан
volvo877
Глобальный модератор


Сказали спасибо: +736/-1
Offline

Сообщений: 891


« Ответ #1 : 14 Сентябрь 2013, 17:47:06 »

Код
WebBrowser1->ControlInterface->ExecWB(Shdocvw::OLECMDID_PRINT, 
  Shdocvw::OLECMDEXECOPT_PROMPTUSER, vaIn, vaOut);
, только не надо пытаться вызвать эту команду сразу после Navigate... Дай странице загрузиться, потом уже просматривай...

По поводу первого вопроса - как тормозит в IE, так же будет тормозить и в обертке над этим самым IE...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.043 секунд. Запросов: 21.