Как я могу загрузить ресурс

Я использую XE7 Rad Studio для создания "приложений" для Android и IPhone. Сосредоточение на Android на данный момент.

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

WebBrowser1.LoadFromStrings(ResourceStrings.HTMLString,'');
//Loads the resource-string successfully.

Однако в этой строке ресурсов мне нужно загрузить изображения, и я не могу понять, как это сделать. В развертывании я вижу, что у меня есть изображения, загруженные в проект {Bitmap_1, Bitmap_2,Bitmap_3}.

Как мне завершить эту строку:

resource-string:

...'<a href="/images/im2.bmp"><img id="img2" class="thumbnail" src="/images/im2.bmp" alt="/images/im2.bmp"/></a>'...

Большое спасибо.

1 ответ

Решение

Если вы читаете документацию для LoadFromStrings(), это говорит:

Отображает содержимое строки HTML в компоненте TWebBrowser.

Этот метод использует следующие параметры:

  • Содержимое: указывает отображаемую строку HTML.

  • BaseUrl: указывает путь, который используется для разрешения относительных URL-адресов в загруженной странице. Для пояснения рассмотрим следующий сценарий: для этого параметра установлено значение www.mycompany.com/departments/ и загруженная страница определяет ссылку <a href=’Sales.html’>Sales dept</a> , В данном случае, нажав на эту ссылку, открывается http:// www.mycompany.com/departments/Sales.html ,

Это точный сценарий, с которым вы сталкиваетесь. Ваш HTML содержит относительные ссылки на внешние изображения, но вы не предоставляете BaseURL поэтому веб-браузер не может разрешить правильные URL-адреса, необходимые для загрузки этих изображений.

В диспетчере развертывания установите для параметра "Удаленный путь" ваших файлов изображений StartUp/Documents/images/ или же StartUp/Library/Application Support/images/, При запуске приложения Delphi будет копировать файлы, начиная с StartUp в соответствующую папку на устройстве. Тогда вы можете сделать следующее при звонке LoadFromStrings():

// note sure which function to use for 'StartUp/Library/Application Support/',
// maybe TPath.GetLibraryPath()? This example is for '/StartUp/Documents/'...
WebBrowser1.LoadFromStrings(ResourceStrings.HTMLString, 'file://' + TPath.GetDocumentsPath);

Что позволит "/images/im2.bmp" разрешить что-то вроде file:///data/data/<application ID>/files/images/im2.bmp", так далее.

Другие вопросы по тегам