Delphi 设计器中的资源正常,在模块中发现运行时异常

Delphi 设计器中的资源正常,在模块中发现运行时异常,delphi,components,Delphi,Components,我正在尝试向我的新组件添加一些图像。所以我做了这个 项目->资源和图像 添加了一个新资源 文件名:Logo.png 类型:RCDATA 标识:徽标 在构造函数上,我执行以下操作: OptionsImage.Glyph.LoadFromResource(HInstance,'Logo',RT_RCDATA); OptionsImage.Glyph.SourceHeight:=24; OptionsImage.Glyph.SourceWidth:=24; 在Designer中,这是完美

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

项目->资源和图像

添加了一个新资源 文件名:Logo.png 类型:RCDATA 标识:徽标

在构造函数上,我执行以下操作:

  OptionsImage.Glyph.LoadFromResource(HInstance,'Logo',RT_RCDATA);
  OptionsImage.Glyph.SourceHeight:=24;
  OptionsImage.Glyph.SourceWidth:=24;
在Designer中,这是完美的。但是如果我试着运行这个。。。我明白了 错误:

在模块Project1.exe的00074128处发现异常ERESNOTF。 找不到资源徽标

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

谢谢你的帮助

更新1:

我有一个GridButton.bpl在上面

{$R *.res}
{$R *.dres}
仅此一项,设计器就可以正常工作,但如果我尝试运行,就会出现错误

现在,如果我将相同的行添加到单元:cxGridButton.pas

{$R *.res}
{$R *.dres}
我收到一条警告,说我有重复的资源。但现在它可以在设计时和运行时工作

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

更新2

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

与此同时,我解决了它,但我不明白为什么它现在能工作

GridButton.bpl

包装网格按钮

{$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}
现在它可以在设计时和运行时工作。资源管理器中是否存在错误或我做错了什么?有人能解释一下吗。

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


当您在IDE之外进行编译时,比如在构建服务器上进行编译,事情就复杂了一点。在这种情况下,您必须自己创建DRES文件。

请查看我的更新。谢谢。我找到了那个,但我没法用。我不想垃圾邮件的问题,它看起来像你正在使用一些DevExpress组件。在这种情况下,您应该将适当的DevExpress软件包添加到软件包的requires子句中,并从contains中删除cxGridButton。