13

我正在研究 XE2 中的一些组件。是否可以将超过组件的单元添加到它所放置的表单的使用子句中?

示例:当我从我构建并安装的包中选择 TCustomComponent 时,CustomComponent 单元被添加到表单的 uses 子句中。我还想添加单位 GlobalConstants。

有谁知道这是否可以做到?

4

1 回答 1

16

为您的组件创建一个设计时包(如果您还没有)。在该包中,创建一个实现ISelectionEditor接口的类(最简单的方法是从TSelectionEditor该类派生),覆盖其虚拟RequiresUnits()方法以报告您希望出现在uses使用您的组件的任何 Form/Frame/DataModule 的子句中的任何其他单元. 然后,让您的包的函数通过调用(除了)来Register()注册该类。RegisterSelectionEditor()RegisterComponents()

Indy 10的, 和组件正是这样做的TIdTCPServer,以确保将and单位添加到子句中。查看和单位,了解 Indy 是如何实现这一点的。TIdCmdTCPClientTIdUDPServerIdContextIdSocketHandleusesIdCoreSelectionEditors.pasIdRegisterCore.pas

更新IdCoreSelectionEditors.pasandIdProtocolsSelectionEditors.pas单元于 2014 年 3 月从 Indy 10 中删除。所有每个组件的 SelectionEditor 类都被替换为在IdRegisterCore单元本身中实现的新单个类。这个新的 SelectionEditor 类为所有 Indy 组件注册,它查找在设计时放置的任何 Indy 组件的所有实例,使用所有参数的数据类型的 RTTI 和任何分配的事件处理程序的返回值来了解哪个报告以包含在uses条款中的单位。

于 2013-01-15T06:55:16.620 回答