2

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

在 delphi 2007 中安装组件时,您只需将组件添加到库中,它会自动找到同名的 DCR 并将其加载到 dpk 文件中,并将图像加载到调色板中。

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

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

首先,当我重新安装 bpl 时,示例托盘(我已将所有组件加载到其中)删除了我刚刚安装的所有组件并且什么也没有显示。

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

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

任何线索是怎么回事?

4

1 回答 1

0

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

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

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

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

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

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

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

在XE6中选择Component/Install Component,选择“Install Into new package”。在单元文件名中导航到 MyLibReg.Pas 并继续并构建/安装包。

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

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

于 2014-05-20T12:32:33.277 回答