我怎样才能加载资源

时间:2014-11-17 15:38:56

标签: android delphi delphi-xe7

我正在使用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 个答案:

答案 0 :(得分:0)

如果您阅读了LoadFromStrings()的{​​{3}},则会说:

  

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

     

此方法使用以下参数:

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

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

  •   

这是您遇到的确切方案。您的HTML包含指向外部图像的相对链接,但您没有提供BaseURL,因此WebBrowser无法解析加载这些图像所需的正确URL。

在Deployment Manager中,将图像文件的远程路径设置为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"