Designer中的资源正常,模块中找不到运行时异常

时间:2019-07-04 09:43:45

标签: delphi components

我正在尝试向我的新组件中添加一些图像。所以我做到了

项目->资源和图像

添加了新资源  档名:Logo.png  类型:RCDATA  标识符:LOGO

在构造函数上,我这样做:

  OptionsImage.Glyph.LoadFromResource(HInstance,'Logo',RT_RCDATA);
  OptionsImage.Glyph.SourceHeight:=24;
  OptionsImage.Glyph.SourceWidth:=24;

在Designer中,它可以完美工作。但是,如果我尝试运行此...我得到 错误:

模块Project1.exe中的EResNotFound异常,为00074128。 找不到资源LOGO。

为什么在运行时找不到徽标?

谢谢您的帮助。

更新1:

我上面有一个GridButton.bpl

{$R *.res}
{$R *.dres}

仅此一项,设计器就可以正常工作,但是如果我尝试运行,则会收到错误消息。

现在,如果我添加到Unit中:cxGridButton.pas相同的行

{$R *.res}
{$R *.dres}

我收到警告,说我有重复的资源。但是现在它可以在Designtime和Runtime中使用。

我一定做错了什么。但是呢?

更新2

另一个问题是相同的,但是答案不起作用。

同时我解决了它,但我不明白为什么现在可以正常工作。

GridButton.bpl

包GridButton;

{$R *.res}
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO OFF}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS OFF}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION ON}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO OFF}
{$SAFEDIVIDE OFF}
{$STACKFRAMES OFF}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$DEFINE RELEASE}
{$ENDIF IMPLICITBUILDING}
{$IMPLICITBUILD ON}

requires
 *******;

contains
  cxGridButton in 'cxGridButton.pas';

end.

单位本身有

implementation

{$R GridButton.dres}

现在它可以在设计时和运行时工作。资源管理器中是否有错误,或者我做错了什么?有人可以解释一下吗。

1 个答案:

答案 0 :(得分:1)

通过 Project->资源和图像添加的资源被编译为单独的资源文件名 .dres 。该资源文件必须在 DPR 中提及。通常,IDE会负责添加此文件,但是在您的情况下可能会丢失。

当您在IDE外部进行编译时,事情会更加复杂-例如在构建服务器上。在这种情况下,您必须自己创建 DRES 文件。