Delphi XE6 - 如何使用户定义的组件图像显示在调色板上

时间:2014-05-17 21:44:07

标签: image delphi delphi-xe6

我正在从2007年迁移到XE6,并且我自己和第三方都有几个用户定义的组件。

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

在delphi中,XE6不会自动加载图像文件,而只是为每个用户定义的组件获取一个默认图像。

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

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

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

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

有什么线索发生了什么?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

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

将dcr保存在与MyLibReg.pas相同的目录中。

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

Voila,所有正确的图标出现了。

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