0

我正在使用 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>'...

非常感谢。

4

1 回答 1

0

如果您阅读 的文档LoadFromStrings()它会说:

在 TWebBrowser 组件中显示 HTML 字符串内容。

此方法使用以下参数:

  • 内容:指定要显示的 HTML 字符串。

  • BaseUrl:指定用于解析加载页面中的相对 URL 的路径。为了澄清,考虑以下场景:此参数设置为www.mycompany.com/departments/,并且加载的页面定义了一个链接<a href=’Sales.html’&gt;Sales dept</a>。在给定的情况下,单击此链接将打开http:// www.mycompany.com/departments/Sales.html

这就是您遇到的确切情况。您的 HTML 包含指向外部图像的相对链接,但您没有提供BaseURL,因此 WebBrowser 无法解析加载这些图像所需的正确 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"等之类的问题。

于 2014-11-17T22:29:41.443 回答