Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как настроить базовую директорию для компонента WebBrowser в Delphi для корректного отображения относительных путей

Delphi , Интернет и Сети , Браузер

При создании HTML-файлов в программе на Delphi и последующем отображении их в компоненте TWebBrowser, важно правильно настроить базовую директорию, чтобы обеспечить корректное отображение относительных путей, особенно когда исполняемый файл запущен из разных мест.

Проблема

Пользователь столкнулся с проблемой, когда созданные HTML-файлы в его программе на Delphi должны были отображаться в компоненте TWebBrowser. Он хотел, чтобы при нажатии на кнопку создавался TWebBrowser и загружался HTML-файл, но возникла проблема с базовой директорией: при запуске программы из разных мест (например, D:\data\delphi\pgm.exe или C:\stuff\pgm.exe) пути к ресурсам (изображениям) должны были автоматически подстраиваться под текущий путь запуска исполняемого файла.

Решение

Поскольку TWebBrowser является оберткой вокруг движка Internet Explorer, существует способ настроить базовую директорию с использованием клиентского скриптинга, если его выполнение разрешено в браузере. Вот шаги решения:

  1. Создать автоматизированный объект в вашем приложении, который реализует интерфейс IDispatch и имеет свойство строкового типа, возвращающее текущий путь запуска приложения.
  2. Создать автоматизированный объект, реализующий интерфейс IDocHostUIHandler, и переопределить метод GetExternal, чтобы он возвращал указатель на объект из первого шага.
  3. Получить интерфейс ICustomDoc браузера и передать ваш объект IDocHostUIHandler в метод SetUIHandler.

Для более подробной информации обратитесь к документации MSDN: Web Browser Customization.

Таким образом, ваш HTML может содержать скрипты, которые используют объект window.external для получения пути к приложению и динамического обновления ссылок на JPG-файлы, например, в событии OnLoad:

<script language="JScript">
function UpdateJPGs()
{
  var path = window.external.ExePath;
  document.images.item("jpg1").src = path + "1.jpg";
  document.images.item("jpg2").src = path + "2.jpg";
  // и так далее...
}
</script>

<body onLoad="UpdateJPGs">

Альтернативный подход

Если HTML-файл и изображения хранятся в одной папке, нет необходимости устанавливать базовый путь. Используйте относительные пути в HTML, и тогда не потребуется вмешиваться в настройки базового пути.

Пример кода

Пример простого использования относительных путей в HTML:

<img src="jpgs/logo.jpg">

Используя такой подход, вы не столкнетесь с необходимостью изменения базового пути, и ваши HTML-файлы будут корректно отображаться вне зависимости от места запуска программы.

Заключение

Настройка базовой директории для TWebBrowser в Delphi может быть выполнена с помощью клиентского скриптинга, что позволяет динамически обновлять пути к ресурсам. Однако, в большинстве случаев, использование относительных путей в HTML-файлах является более предпочтительным и простым решением.

Создано по материалам из источника по ссылке.

Настройка базовой директории для компонента `TWebBrowser` в Delphi необходима для корректного отображения HTML-ресурсов с относительными путями при запуске программы из разных мест.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Браузер ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-20 22:53:53/0.0048611164093018/1