Dev Опубликовано 20 марта, 2018 Опубликовано 20 марта, 2018 Как отправить на печать WebBrowser в FMX? пробу так uses ActiveX procedure TForm1.Button2Click(Sender: TObject); var PostData, Headers: OLEvariant; begin WebBrowser1.ExExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DODEFAULT, PostData, Headers); end; Ошибка Undeclared identifier: 'ExExecWB' Цитата
0 Akad Опубликовано 20 марта, 2018 Опубликовано 20 марта, 2018 Самое простое - вызвать ява скрипт с window.print(); Dev 1 Цитата
0 Dev Опубликовано 20 марта, 2018 Автор Опубликовано 20 марта, 2018 Если не трудно немного подробнее пример мне нужно для приложения под windows на FMX Цитата
1 Akad Опубликовано 20 марта, 2018 Опубликовано 20 марта, 2018 В HTML надо добавить что-то типа <script type="text/javascript"> function Printt(){ window.print(); }; </script> И потом просто вызвать этот ява код. TMSFMXWebBrowser1.ExecuteJavascript('Printt();'); Если страница грузится с интернета полностью, то естественно надо отредактировать её с учётом html синтаксиса. Так же стоит убрать весь мусор со страниц и повысить версию браузеру для лучшей совместимости: a := TRegistry.Create; a.RootKey := HKEY_CURRENT_USER; a.OpenKey('Software\Microsoft\Internet Explorer\PageSetup',true); a.WriteString('footer',''); a.WriteString('header',''); a.CloseKey; a.OpenKey('Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION',true); a.WriteInteger('Client1.exe',$2af9); a.CloseKey; a.Free; Где Client1,exe - имя вашего exe. P.S. И лучше использовать браузер от TMS, проблем под 10.2.х на порядок будет меньше. Dev 1 Цитата
0 SergB Опубликовано 1 апреля Опубликовано 1 апреля (изменено) Нашел решение для FMX (два дня ковырялся). 1. Удаляем стандартный WebBrowser с формы и FMX.Webbrowser из uses (чистим следы) 2. Подключаем uses SHDocVw, Vcl.Forms, Vcl.Controls 3. Из-за п.2 начнутся разногласия в типах данных (после этого нужно учитывать, что возможно где-то когда-то еще что-то вылезет и нужно будет для другого объекта конкретизировать тип ). Поэтому конкретизируем что наша форма ... type TForm1 = class(FMX.Forms.TForm) Так же пришлось мне конкретизировать, что ... ImageList1: FMX.ImgList.TImageList; 4. Объявляем глобальные переменные (объекты будем создавать динамически) Цитата var WebBrowser:TWebBrowser; Form:VCL.Forms.TForm; // нужно создать форму VCL, что б потом у WebBrowser указать Parent класса TWinControl, а в FMX таких нет Можно Form и не создавать, но тогда при вызове предварительного просмотра будет дополнительно вне нашей формы создаваться окно IE причем без заголовка окна + окно предпросмотра. А нужно только окно предпросмотра. 5. Далее создаем наши объекты procedure TForm1.FormCreate(Sender: TObject); ... Form:=VCL.Forms.TForm.Create(Application); Form.Visible:=false; Form.Height := 600; Form.Width := 800; WebBrowser:=TWebBrowser.Create(Form); TWinControl(WebBrowser).Parent:=Form; WebBrowser.Silent := true; WebBrowser.Visible := false; WebBrowser.Top:=0; WebBrowser.Left:=0; WebBrowser.Height :=Form.Height; WebBrowser.Width := Form.Width; WebBrowser.OnDocumentComplete:=WebBrowserDocumentComplete; WebBrowser.Visible:=true; ... end; procedure TForm1.WebBrowserDocumentComplete(ASender: TObject; const pDisp: IDispatch; const URL: OleVariant); begin WebBrowser.ExecWB(OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_PROMPTUSER); // то ради чего старались и наконец-то заработает end; 6. Там где нужно загрузить страницу пишем WebBrowser.HandleNeeded; // обязательно. Без этого ничего не загрузится WebBrowser.Navigate(s); P. S.: и кстати вообще не вариант, т к. нет окна предпросмотра, а тупо выскакивает окно выбора принтера и можно только отправить на печать, не подогнав размеры под лист. Этого же можно добиться обычным keybd_event, отправив на WebBrowser комбинацию Ctrl+P. Цитата Самое простое - вызвать ява скрипт с window.print(); Изменено 1 апреля пользователем SergB Цитата
0 krapotkin Опубликовано 2 апреля Опубликовано 2 апреля а вот этот вариант выполнения скрипта нерабочий? https://docwiki.embarcadero.com/Libraries/Alexandria/en/FMX.WebBrowser.TCustomWebBrowser.EvaluateJavaScript Цитата
Вопрос
Dev
Как отправить на печать WebBrowser в FMX?
пробу так
uses ActiveX
Ошибка Undeclared identifier: 'ExExecWB'
5 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.