仅使用内置工具在Delphi XE中创建组件图标的最佳方法

仅使用内置工具在Delphi XE中创建组件图标的最佳方法,delphi,components,delphi-xe,Delphi,Components,Delphi Xe,Delphi 7中包括一个图像编辑器程序,它可以读取和写入.dcr文件,这些文件只是具有不同扩展名的二进制资源文件(.res文件),按照惯例,它表示.dcr文件包含一个已编译的资源,该资源具有与组件名称对应的命名位图资源(对于名为TMYCOMPONENT的组件,名为TMYCOMPONENT的位图资源)。这些位图是用来在delphi组件调色板上放置图标的“图标”,以及在窗体或数据模块上放置非可视组件时放置图标的“图标”的来源 在Delphi XE的10年中,我尝试使用位图文件和RC文件制作组件图标

Delphi 7中包括一个图像编辑器程序,它可以读取和写入
.dcr
文件,这些文件只是具有不同扩展名的二进制资源文件(
.res
文件),按照惯例,它表示.dcr文件包含一个已编译的资源,该资源具有与组件名称对应的命名位图资源(对于名为TMYCOMPONENT的组件,名为TMYCOMPONENT的位图资源)。这些位图是用来在delphi组件调色板上放置图标的“图标”,以及在窗体或数据模块上放置非可视组件时放置图标的“图标”的来源

在Delphi XE的10年中,我尝试使用位图文件和RC文件制作组件图标,并将其构建为.DCR文件,作为Delphi IDE的一部分

只需在.dpk(包源)文件中添加一个.Rc文件和这样的声明,如下所示:

{$R mypackageicons.rc mypackageicons.dcr}
包含组件图标的示例.rc文件:

 // COMPONENT ICON RESOURCES
 TMYCOMPONENT BMP "TMYCOMPONENT.BMP"
然而,我不能让这个工作。当我尝试时,您似乎遇到了一些奇怪的RLINK32错误,并且在borlandmm.dll中IDE崩溃:

[DCC Error] E2161 Error: RLINK32: Unsupported 16bit resource in file "C:\temp\compicon\COMPONENTICONS.rc"
[DCC Fatal Error] F2084 Internal Error: AV21515155-W06000D07-1
讨论中的位图文件是一个简单的256色bmp文件,大小为24x24像素,我也尝试了16色位图,但没有成功。在我看来,ImageEdit程序是我所知道的唯一可以用来创建Delphi组件图标的方法

我错过了什么


更新:对于无法访问Delphi 7图像编辑器的人来说,外部工具是一个很好的解决方案,事实上可能更优秀,但我更喜欢使用Delphi附带的工具,因为似乎只需要一个{$R}声明,一个文本文件,和一个用画笔制作的bmp文件。当然,他们没有忘记用这个伟大的1.5G开发工具制作组件图标update2:有一种方法;鲁迪V.找到了。

试试看。这是旧图像编辑器的一个很好的替代品。

我使用了以下工具并取得了巨大成功:

  • 科林·威尔逊
  • 安德斯梅兰德酒店
更新 我刚刚在XE中尝试了以下方法,并且成功了

  • 我在NewAnimates.pas中创建了一个新组件TNewAnimate
  • 我将TNewAnimate.pas添加到dclusr.dpk
  • 我使用项目添加了一个位图(称为TMRUComboBox.bmp,反正我已经有了它)→ 资源和图像…对话框,并将其命名为TNEWANIMATE
  • 我重新安装了dclusr.dpk
dclusr.pdk的源文件获得了一个新条目
{$R*.dres}
(注意扩展名)。我可以在示例调色板中看到带有TMRUComboBox.bmp中标志符号的TNewAnimate

我将dclusr.dres定位在与dclusr.dpk相同的目录中(通常位于C:\Program Files下,但不在我的设置中)。我试图用XN资源编辑器打开它,但它拒绝用一条神秘的错误消息打开它。它似乎不是一个普通的.res文件


首先向项目中添加'mypackageicons.rc'文件,这将在编译时生成'mypackageicons.res'(请参见与“通过.rc文件而不是.res文件在项目中包含资源文件”相关的问题)

还包括
{$R mypackageicons.res mypackageicons.dcr}
到组件单元(或.dpk)。这不会生成“.dcr文件”,但会设置组件的图标



请注意,我使用“BMP”资源进行的测试失败。我使用“位图”作为资源类型。

我已经使用Delphi XE5 upd2调查了以前的响应。不太成功。因此,我试图构建一个新的解决方案,并从以前的答案中找到了一个

简言之: 1.使用Windows Paint程序创建位图。 2.使用位图创建资源脚本文件。 3.使用BRCC32编译脚本以生成dcr文件 4.将dcr文件包括到包源中 5.重新编译/安装软件包

为了实现自动化,只需将BRCC32命令行添加到包项目“预构建事件”中即可。这样,dcr文件将在每次生成之前重新创建


有关详细说明,请参见我的博客,网址为

“您是指Delphi还是编辑器?”?我必须承认我已经有一段时间没有做任何编辑了。我非常怀念那些编辑。另外,两个编辑器都支持多达256x256个32k颜色的图标,但我可能错了。科林的年龄稍大,所以它可能不再支持所有更新的格式。我是说在Delphi中。创建Delphi无法加载的漂亮图标没有多大用处。关于Delphi重新命名的图标:我不知道。我想现在各种各样的。六羟甲基三聚氰胺六甲醚。。。这是个好问题。关于更新:很好的发现。但这项新功能中似乎存在一些奇怪的bug。在它们中,似乎很容易在项目源(.dpk)文件中多次获得{$R*.dres}指令,为了不崩溃,必须删除它们。但是,它可以工作,我只是做了,它工作得很好,与{$R item1 item2}不同,它不会导致访问冲突。我看起来它在Xe5组件资源文件中被破坏,需要包含24x24像素、16色VGA图像。您不必给它dcr扩展;只需将
{$R YourRes.res}
添加到包含
Register
过程的包源文件中。我认为资源应该是“BITMAP”类型,而不是“BMP”。我也尝试过了。奇怪的是,使用D7图像编辑器创建的RES(DCR)文件创建的是BMP条目,而不是位图条目。我确信我包含的.DCR文件与进行注册的单元名称不同。我确信我只是将其包含在dpk文件中。使用
>brcc32 mypackageicons.rc-fomypackageicons.dcr
编译,并使用
{$R mypackageicons.dcr}
包含。至少所有的工具都包含在内。这对我来说很有效,只是它有时似乎会导致访问违规。@Warren-AFAIU-ar