【发布时间】:2017-08-27 05:06:36
【问题描述】:
我正在编写自己的组件,我希望它在我将它放在表单上时将 "db" 单元添加到 interface 使用子句,因为它有一个已发布的事件,例如:
TMyDBEvent = procedure(Sender: TObject; DataSet: TDataSet) of object;
TDataSet在db.pas中声明,我需要手动添加这个单元,我想避免。
我见过这个解决方案:
How are Delphi units automatically added when a component is added to a form?
还有这个:
Can I make a custom Delphi component add multiple units to the uses clause?
那个用RegisterSelectionEditor,但是Delphi 5(我知道...)好像没有这个单元。
我有什么选择?
【问题讨论】:
-
在源代码中搜索导出该功能的单元。在 D6 设计时返工中,事情可能刚刚发生了变化。
-
@DavidHeffernan,我在源代码中没有找到
RegisterSelectionEditor。 -
您可以尝试使用相同的名称为组件单元中的类型设置别名:
TDataSet = Db.TDataSet;每当您将组件放在表单上时,Delphi 都应将其单元添加到使用子句中。那么无论您是否在该表单中使用Db,都有一个有效的TDataSet等效于来自Db的@。 -
@zig
TSelectionEditor和RegisterSelectionEditor()在 Delphi 5 中不可用,它们是在 Delphi 6 中添加的。 -
@CraigYoung,您的解决方法有效。这种类型别名是否有任何副作用/影响/冲突问题?还有其他已知组件使用此技巧吗?