如何正确地将资源(*.res)文件添加到包中?

And*_*rew 3 delphi resources components image

我在单个.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);
Run Code Online (Sandbox Code Playgroud)

RES文件由此RC创建:

MY_PICTURE1 RCDATA "my_picture1.png"
Run Code Online (Sandbox Code Playgroud)

Ond*_*lle 7

{$R 'MyImages.res'}直接在声明组件的单元中使用该指令.在加载资源时,使用FindClassHInstance(TMyComponent)(模块在哪里TMyComponent)而不是HInstance(主要可执行文件 - 这可能同时也是模块所在TMyComponent,具体取决于您的链接方式).

编辑:似乎您想要与运行时包链接,但实际上您将组件静态链接到主可执行文件中.显然,您已经编译了运行时(和设计时).bpl包.要编译使用带有运行时包的组件的主项目(.exe或.dll),您应该:

  1. 在"项目选项"中选择"使用运行时包构建"
  2. 将包的基本名称添加到"项目选项"中的运行时包列表中.