buhta-doc

View My GitHub Profile

На главную

Новое в версии. Релиз 302 от 30.09.2026

Содержание:

Добавление новой возможности

Современный встроенный браузер в формах

В конструкторе форм на странице палитры БУХта появился компонент TbmWebBrowser2 — встроенный браузер на движке Microsoft Edge WebView2 (Chromium). В отличие от прежнего компонента TWebBrowser (на основе Internet Explorer), он правильно показывает современные страницы: HTML5, CSS Grid, JavaScript ES6, fetch, async/await.

Возможности компонента:

Примеры скриптов формы (компонент на форме называется bmWebBrowser21)

Показать HTML или открыть страницу. Вызывать можно сразу, не дожидаясь, пока браузер запустится: команды выполнятся, как только он будет готов.

procedure Button1Click(Sender: TObject);
begin
  bmWebBrowser21.LoadHtml('<html><body><h1>Остатки</h1><div id="sum"></div></body></html>');
  // или страница из файла:
  // bmWebBrowser21.Navigate('file:///C:/Buhta/pages/ostatki.html');
end;

Передать данные на страницу — выполнить JavaScript или отправить объект JSON:

procedure Button2Click(Sender: TObject);
begin
  bmWebBrowser21.ExecuteScript('document.getElementById("sum").innerText = "12 345,00";');
  bmWebBrowser21.PostWebMessageAsJson('{"cmd":"setRows","n":42}');
end;

На странице объект принимается так: window.chrome.webview.addEventListener('message', e => { if (e.data.cmd === 'setRows') ... });

Получить данные со страницы. На странице: window.chrome.webview.postMessage('SAVE:' + document.getElementById('sum').innerText);, в скрипте формы — обработчик события OnWebMessageReceived:

procedure bmWebBrowser21WebMessageReceived(Sender: TObject; const Msg: string);
begin
  if Copy(Msg, 1, 5) = 'SAVE:' then
    ShowMessage('Пришло со страницы: ' + Copy(Msg, 6, Length(Msg)));
end;

Дать странице доступ к данным через window.bm. Страницу открывать через Navigate (для LoadHtml мост по умолчанию не работает):

procedure FormShow(Sender: TObject);
begin
  bmWebBrowser21.AllowSqlBridge := True;
  bmWebBrowser21.Navigate('file:///C:/Buhta/pages/ostatki.html');
end;

На странице: const n = await bm.GetValue('SELECT COUNT(*) FROM ТМЦ'); (внутри async-функции; ошибка SQL приходит как исключение — try/catch).

Проверить, запустился ли браузер, и сохранить страницу в PDF:

procedure Button3Click(Sender: TObject);
begin
  if bmWebBrowser21.Failed then
    ShowMessage(bmWebBrowser21.LastError)
  else
    bmWebBrowser21.PrintToPdf('C:\Buhta\ostatki.pdf');
end;

Старый компонент TWebBrowser продолжает работать в существующих формах, переделывать их не нужно.

Требуется Windows 10/11 или Windows Server 2016 и новее, Microsoft Edge WebView2 Runtime (в Windows 10/11 и Windows Server 2022 обычно уже установлен) и файл WebView2Loader.dll рядом с BuhtaClient.exe (входит в поставку).

Если встроенный браузер запустить нельзя (Windows XP/7/8, не установлен WebView2 Runtime, нет файла WebView2Loader.dll), при открытии формы один раз за сеанс выводится сообщение с причиной, например «Встроенный браузер недоступен в Windows XP. Он работает только в Windows 10 и новее», и тот же текст показывается на месте компонента. Остальная программа работает как обычно.

Исправление ошибок

Мобильный режим на большом экране

При запуске программы в мобильном режиме (ключ -MOBILE:N) на компьютере с большим экраном показывались рабочий стол, панель задач и главное меню.

Что сделано

В мобильном режиме на большом экране рабочий стол, панель задач и главное меню скрываются — видны только окна мобильных форм.

подробнее о конфигурации зарплата

скачать версию Buhta20260930.zip