Lazarus fpCEF3 - об’єднуємо браузер та десктопну програму

fpcef3

Можна об'єднати можливості десктопного та браузерного додатків, підключивши справжній сучасний браузер. .

Вважаю за необхідне підключення Synapse до багатьох проектів, щоб мати можливість коректно працювати з URL (функції EncodeURL() та DecodeURL() модуля synacode ) плюс працювати з інтернет-серверами безпосередньо, без браузера. Як підключати Synapse.

Для навігації по всіх сторінках цього розділу сайту скористайтесь іконкою меню або посиланням Навігація в рядку навігації.

Довідкова інформація fpCEF3

TChromium Options – опції в інспекторі об'єктів – налаштування роботи Chromium через значення Options компонента TChromium.

Підключення веб-браузера до Lazarus

Потрібні вихідні файли fpCEF3 і runtime-файли веб-движка Chromium.

Розпаковуємо, наприклад, у папку поруч із папками проектів (потім видаляти звідти не можна - буде помилка при складанні проектів).

У Lazarus «Пакет - Відкрити файл пакета (.lpk)» і вибираємо cef3.lpk . Відобразиться вікно інсталяції пакета. У ньому натиснути спочатку кнопку «Компілювати», потім кнопку «Використовувати - Встановити». Потім підтвердити перескладання Lazarus, вибравши «Так» у діалоговому вікні. Після цього відбувається процес перескладання і на палітрі компонентів має з'явитися вкладка Chromium. У версіях fpCEF3 до 2704 на вкладці 2 компоненти: TChromium (cef3lcl.pas) і TChromiumOSR (cef3osr.pas). Починаючи з версії fpCEF3 2704 на вкладці вже 3 компоненти: TChromium (cef3lcl), TChromiumOSR (cef3osr), TChromiumContext (cef3context).

браузер
lazarus
fpcef3

Оновити версію Chromium можна так: відкриваємо файл CEF3 через меню«Пакет – Відкрити завантажений пакет. або Пакет - Відкрити недавній пакет. », далі вибираємо «Використовувати - Видалити», підтверджуємо. Потім робимо встановлення нової версії пакета. Перекомпілюємо проекти - зібрані exe-файли завжди працюють тільки з однією (своєю) версією Runtime-файлів Chromium.

Завантажуємо runtime - файли CEF3 (32bit або 64bit - залежить від версії Lazarus і ОС), можна завантажити звідси: http://opensource.spotify.com/cefbuilds/index.html

При роботі скомпільованої програми, коли відбувається робота з TChromium - повинні бути доступні runtime - файли браузера, інакше виникатиме помилка. Вміст папки «Release» необхідно помістити в таке місце, щоб runtime - файли браузера були доступні нашому додатку (наприклад, поруч із exe-шником скомпільованої програми), коротше кілька dll та інших файлів повинні бути доступні програмі при старті. Це і є наш браузер, його можна запускати окремо (cefclient.exe).

У 2017 році різницю між новими версіями Chromium незначні, остання важлива відмінність - це включення підтримки CSS-variables, ми можемо використовувати такі змінні починаючи з fpCEF3 2704 (Chromium 51). Подробиці та порівняння браузерів див. caniuse.com

Починаючи з версії 2704, Chromium вже не працює з Windows XP, відповідно браузер Chrome більше не оновлюватиметься для XP Остання версія fpCEF3 для роботи під WinXP: v3.2526 (Chromium 47.0.2526.80) - відсутня підтримка CSS

У мене є оригінальні копії runtime - файлів цієї збірки під 32 біт (cef_binary_3.2526.1373.gb660893_windows32_client.7z) та 64 біт (cef_binary_3.2526.1366.g8617e7 30 Мбайт відповідно, тому можу поділитися з ними лише через запит у формі зворотного зв'язку,тому що прямі посилання на завантаження робити не хочу, щоб спам-боти не забивали канал.

Підключення Synapse

Остання версія Synapse (2012-04-23 - release no. 40 synapse.zip (898.65 KB). Я розпакував файли Synapse в папку поряд з папками проектів. У Lazarus >«Пакет - Відкрити файл пакета ( .lpk)» і вибрав laz_synapse.lpk , потім вибрав «Компілювати» . Для нових проектів я вручну додаю модулі Synapse, через «Використовувати - Додати до проекту» вікна установки пакета.

Відразу потрібно сказати про обов'язкову підтримку кодування UTF-8 - всі файли потрібно робити саме в ній. Якщо з якихось причин IDE не працює з UTF-8, потрібно оновитися на нову версію.

Отже, створимо в notepad++ HTML-файл 1.html у кодуванні UTF-8 (без BOM):

test http-equiv="Content-Type" content="text/html; charset=utf-8"> text text text