Image Delphi XE6-如何使用户定义的组件图像显示在托盘上

Image Delphi XE6-如何使用户定义的组件图像显示在托盘上,image,delphi,delphi-xe6,Image,Delphi,Delphi Xe6,我正在从2007年迁移到XE6,有几个由我自己和第三方编写的用户定义组件 在delphi 2007中安装组件时,只需将组件添加到库中,它就会自动找到相同名称的DCR并将其加载到dpk文件中,然后将图像加载到托盘上 在delphi XE6中,它不会自动加载图像文件,相反,您只会得到一个默认图像,该图像对于每个用户定义的组件都是相同的 我寻找并找到了一些关于这个主题的主题,这些主题描述了如何将DCR文件手动添加到项目源代码中,我已经这样做了,但它不起作用和/或不可靠 首先,当我重新安装bpl时,sa

我正在从2007年迁移到XE6,有几个由我自己和第三方编写的用户定义组件

在delphi 2007中安装组件时,只需将组件添加到库中,它就会自动找到相同名称的DCR并将其加载到dpk文件中,然后将图像加载到托盘上

在delphi XE6中,它不会自动加载图像文件,相反,您只会得到一个默认图像,该图像对于每个用户定义的组件都是相同的

我寻找并找到了一些关于这个主题的主题,这些主题描述了如何将DCR文件手动添加到项目源代码中,我已经这样做了,但它不起作用和/或不可靠

首先,当我重新安装bpl时,samples Pallete(我已将所有组件加载到其中)删除了我刚刚安装的所有组件,并且没有显示任何内容

当我关闭Delphi并重新启动时,组件显示在托盘上,但随机的一些图像仍然是默认图像

我得到了不同的结果,每次我重新安装bpl,每次不同的图像都有正确的图像,而其他图像都有默认图像。那些没有出现的看起来很随机


有什么线索吗?

我想我找到了解决这个问题的办法

我注意到我已经加载了SynEdit,它在将图标放在调色板上时没有任何问题,所以我加载了dpk以查看它是如何做到的

当每个组件作为一个单独的文件添加到库中时,问题似乎就存在了

关键是只创建一个文件,例如MyLibReg.pas,并将每个组件文件添加到单元的“使用”部分。创建注册过程,然后在注册过程中一次性注册所有组件。您必须遍历每个文件,找到各个注册过程,将类名复制并粘贴到MyLibReg.pas的注册过程中,然后在这些文件中删除这些过程

接下来,加载图像编辑器并创建一个名为MyLibReg.dcr的新dcr文件

下一位有点乏味,将所有用户组件中的所有dcr文件加载到图像编辑器中,然后将图像复制并粘贴到MyLibReg.dcr中,您需要手动创建所有位图名称,然后将图像粘贴到中

将dcr保存在MyLibReg.pas所在的目录中

在XE6选择组件/安装组件中,选择“安装到新软件包中”。 在单元文件名中,导航到MyLibReg.Pas并继续构建/安装包

瞧,所有正确的图标都出现了

似乎XE6只能可靠地在每个bpl中使用一个dcr文件