我正在从2007年迁移到XE6,并且我自己和第三方都有几个用户定义的组件。
在delphi 2007中安装组件时,只需将组件添加到库中,它就会自动找到并将同名的DCR加载到dpk文件中,然后将图像加载到托盘上。
在delphi中,XE6不会自动加载图像文件,而只是为每个用户定义的组件获取一个默认图像。
我寻找并找到了关于这个主题的一些主题,其中描述了手动将DCR文件添加到我已经完成的项目源中但它不起作用和/或它不可靠。
首先,当我重新安装bpl时,样本pallette(我已将所有组件加载到其中)删除了我刚刚安装的所有组件,并且没有显示任何内容。
当我关闭Delphi并重新启动时,组件出现在托盘上,但随机的一些图像仍然是默认图像。
每次重新安装bpl时,我都会得到不同的结果,每次不同的图像都有正确的图像而其他图像都有默认的图像。它看起来很随机,哪些不会出现。
有什么线索发生了什么?
答案 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文件。