Как я могу загрузить ресурс
Я использую 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"
, так далее.