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

时间:2015-06-04 15:31:28

标签: delphi components delphi-2009

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

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

myres.rc

FIXED BMP "fixed.bmp"

我使用:brcc32 myres.rc

编译了资源文件

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

implementation
{$R .\resources\myres.res}

并使用...

访问它
MyComponent.Glyph.LoadFromResourceName(HInstance,'FIXED');
// MyComponent = class(TSpeedButton)

EDIT1: 我删除了{$ R。\ resources \ myres.res}指令,并从菜单Project - >中加载了资源。资源和它的工作,使用HInstance或FindClassHInstance(MyComponent)。

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

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

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

1 个答案:

答案 0 :(得分:9)

将RC文件中的BMP更改为BITMAP,并在代码中将HInstance更改为FindClassHInstance()

FIXED BITMAP "fixed.bmp"

Glyph.LoadFromResourceName(FindClassHInstance(MyComponent), 'FIXED');