我可以制作一个自定义Delphi组件,将多个单元添加到uses子句中吗?

Del*_*ber 13 delphi components

我正在研究XE2中的一些组件.是否可以将更多组件的单元添加到它所放置的表单的uses子句中?

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

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

Rem*_*eau 16

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

印第10正是这一点为它TIdTCPServer,TIdCmdTCPClientTIdUDPServer组件,以确保IdContextIdSocketHandle单位被添加到uses条款.看看IdCoreSelectionEditors.pasIdRegisterCore.pas单位,看看Indy如何实现这一点.

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