我正在尝试向我的新组件中添加一些图像。所以我做到了
项目->资源和图像
添加了新资源 档名: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}
现在它可以在设计时和运行时工作。资源管理器中是否有错误,或者我做错了什么?有人可以解释一下吗。
答案 0 :(得分:1)
通过 Project->资源和图像添加的资源被编译为单独的资源文件名 .dres 。该资源文件必须在 DPR 中提及。通常,IDE会负责添加此文件,但是在您的情况下可能会丢失。
当您在IDE外部进行编译时,事情会更加复杂-例如在构建服务器上。在这种情况下,您必须自己创建 DRES 文件。