我在单个.dpk文件中设置了自己的Delphi组件。我的一个组件需要一些图像随其一起分发。我创建了RES文件(让它成为“MyImages.RES”),我希望我的可视组件在创建时加载其内容。
如何正确地将此RES文件添加到DPK?
当我将{$ R'MyImages.RES'}放入我的.dpk文件时,TResourceStream在创建时失败,因为它无法按资源名称找到我的图片:
constructor TMyComponent.Create(AOwner: TComponent);
begin
S := TResourceStream.Create(HInstance, 'MY_PICTURE1', RT_RCDATA);
RES文件由此RC创建:
MY_PICTURE1 RCDATA "my_picture1.png"
答案 0 :(得分:7)
直接在声明组件的单元中使用{$R 'MyImages.res'}
指令。加载资源时,请使用FindClassHInstance(TMyComponent)
(TMyComponent
所在的模块)而不是HInstance
(主要可执行文件 - 这可能同时也是TMyComponent
所在的模块,具体取决于方式你正在联系)。
编辑:您似乎想要与运行时包链接,但实际上您将组件静态链接到主可执行文件中。显然,您已经编译了运行时(和设计时).bpl包。要编译使用带有运行时包的组件的主项目(.exe或.dll),您应该:
答案 1 :(得分:1)
从评论到您的问题很明显,您没有在运行时正确链接到包,TMyComponent
正静态链接到您的可执行文件,而不是从包中动态链接。
您可以通过以下两种方式之一解决这个问题: