如何在 FMX 组件中加载资源
Posted
技术标签:
【中文标题】如何在 FMX 组件中加载资源【英文标题】:How to load resources in a FMX-component 【发布时间】: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 的句柄。
是的,这是我的一个误会。对包裹没有好处。
【参考方案1】:
好的,我解决了这个问题。
我使用$R FmxComponents.dres
将“FmxComponents.dres”添加到我的组件中。
我认为在 dpk 文件中添加这个就足够了。
【讨论】:
【参考方案2】:TResourceStream
构造函数的第一个参数是要搜索资源的模块的实例。因此,如果您确实使用正确的类型和名称正确链接了资源,那么人们会认为您传递了错误的模块实例。
因此,可能实现拼写错误的TPmFmxTitelbar
的模块不是资源链接到的模块。
如果您确实传递了正确的模块实例,那么剩下的结论是您无法链接具有指定类型和名称的资源。使用资源查看器/编辑器进行检查。
【讨论】:
以上是关于如何在 FMX 组件中加载资源的主要内容,如果未能解决你的问题,请参考以下文章