项目范围的自定义组件

Project-wide custom component

我能否拥有一个自定义可视化组件(稍微修改过的 TSpeedButton),它可以被拖动形成并仅存在于某些项目中,而不需要在 Delphi 范围内注册?我也不想使用 TFrame 模拟按钮。它不应该对其他 Delphi 项目可用。

很遗憾,没有。在设计时使用该组件需要将其放入安装到 IDE 的包中。但是,您可以根据需要 enable/disable 在每个项目的基础上安装包。

您或许可以使用所谓的插入器 class。像这样定义您的自定义组件:

type
  TSpeedButton = class(Buttons.TSpeedButton)
    ....
  end;

请注意 class 名称与父名称 class 相同。这是使插入技术起作用所必需的。

将您的自定义设置放入此插入器中 class。当您在设计器中构建 UI 时,请使用调色板中的 TSpeedButton。确保声明自定义组件的单元列在包含自定义组件之一的每个表单的使用子句中。

在 运行流式传输表单时,将实例化插入的组件而不是原始组件。

这样做的缺点是您无法安排您的定制在设计时可见。如果您需要设置 vanilla 组件中不存在的属性,则必须在 运行 时间完成。这是您不想在 IDE.

中安装任何东西的结果

如果这种方法不能满足您的需求,那么您应该以通常的方式制作一个组件,使用设计时包。如果您愿意,您可以安排该包仅包含在特定项目中。