我在自定义组件中包含位图的可能性如何(如果可能的话)?

Mar*_*unu 4 delphi components delphi-2009

我正在编写一个需要在其上显示位图的组件(按钮).我不想创建ImageList属性,并且用户分配图像.我希望该按钮只有我选择的图像.

我试图将位图包含在资源文件中,但是当我尝试访问它时,我收到"未找到资源"错误消息.这就是我所做的:

myres.rc

FIXED BMP "fixed.bmp"
Run Code Online (Sandbox Code Playgroud)

我编译了资源文件: brcc32 myres.rc

然后我将它包含在我的组件单元中......

implementation
{$R .\resources\myres.res}
Run Code Online (Sandbox Code Playgroud)

并访问它...

MyComponent.Glyph.LoadFromResourceName(HInstance,'FIXED');
// MyComponent = class(TSpeedButton)
Run Code Online (Sandbox Code Playgroud)

Edit1: 我删除了{$ R.\ resources\myres.res}指令,我从菜单项目 - >资源中加载了资源,它正在运行,包括HInstance或FindClassHInstance(MyComponent).

使用资源编辑器,我发现当我从菜单加载资源时,资源显示名称为"FIXED",但是当我加载使用brcc32编译的资源时,它显示为名称"0".似乎brcc32没有正确设置名称.

但我不想从菜单中加载它,我希望它随组件自动加载.

Edit2: Remy Lebeau是对的.我使用的是错误的BMP格式(文件以'BM6'字符开头而不是'BM8',就像Photoshop制作它一样,并且它有效).

Rem*_*eau 9

切换BMPBITMAPRC文件,然后在代码中更改HInstanceFindClassHInstance():

FIXED BITMAP "fixed.bmp"
Run Code Online (Sandbox Code Playgroud)

Glyph.LoadFromResourceName(FindClassHInstance(MyComponent), 'FIXED');
Run Code Online (Sandbox Code Playgroud)