【问题标题】:Delphi XE6 - How to make user defined components image show up on the palletteDelphi XE6 - 如何使用户定义的组件图像显示在调色板上
【发布时间】:2026-01-10 12:10:02
【问题描述】:

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

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

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

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

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

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

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

有什么线索吗?

【问题讨论】:

    标签: image delphi delphi-xe6


    【解决方案1】:

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

    我注意到我已经加载了 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 文件。

    【讨论】:

      最近更新 更多