【问题标题】:How to load resources in a FMX-component如何在 FMX 组件中加载资源
【发布时间】:2015-07-10 00:45:00
【问题描述】:

我尝试在 FMX 组件中使用资源,并在尝试读取资源时收到 EResNotFound-Error。

以下场景:

  • 一个 FMX-bpl (FmxComponents.bpl) 我在我的 IDE (XE7) 中通过“资源和图像”添加了一些 png 文件。
  • 资源在“FmxComponents.dres”中,但不在“FmxComponents.res”中。
  • 当我尝试执行此语句 TResourceStream.Create(FindClassHInstance(TPmFmxTitelbar), 'ImgOptions', RT_RCDATA); 时,我收到错误 EResNotFound 'resource ImgOptions not found'
  • 我尝试通过 haole (how-to-add-and-use-a-resource-from-a-custom-package-component-in-delphi) 的帖子解决此问题,但没有成功。

【问题讨论】:

  • 你为什么使用FindClassHInstance?不是要把TResourceStream.Create调用放到资源链接的模块里,传HInstance吗?
  • 谢谢,很好的提示。我以为 HInstance 给了我来自 mainUnit 的句柄。
  • 是的,这是我的一个误会。对包裹没有好处。

标签: delphi resources components firemonkey


【解决方案1】:

好的,我解决了这个问题。 我使用{$R FmxComponents.dres} 将“FmxComponents.dres”添加到我的组件中。

我认为在 dpk 文件中添加这个就足够了。

【讨论】:

    【解决方案2】:

    TResourceStream 构造函数的第一个参数是要搜索资源的模块的实例。因此,如果您确实使用正确的类型和名称正确链接了资源,那么人们会认为您传递了错误的模块实例。

    因此,可能实现拼写错误的TPmFmxTitelbar 的模块不是资源链接到的模块。

    如果您确实传递了正确的模块实例,那么剩下的结论是您无法链接具有指定类型和名称的资源。使用资源查看器/编辑器进行检查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-13
      • 2015-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      • 1970-01-01
      相关资源
      最近更新 更多