Delphi 5 组件会自动添加 "db.pas" 单元到 uses 子句?
Delphi 5 component that will automatically add "db.pas" unit to uses clause?
我正在编写自己的组件,我希望它在我将它放在表单上时将 "db"
单元添加到 interface
uses 子句,因为它有一个已发布的事件,例如:
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
,但是Delphi5(我知道。。。)好像没有这个单位。
我有哪些选择?
您可以使用相同的名称在组件单元内为类型设置别名:
type
TDataSet = Db.TDataSet;
无论何时将组件放在表单上,Delphi 都应将其单位添加到 uses 子句中。那么无论您是否以该形式使用 Db
,都有一个有效的 TDataSet
等同于 Db
.
中的那个
Could there be any side effects/implications/conflicts issues to such type aliasing?
从语言的角度来说,没有。
通常不建议使用同名类型,因为当 2 段代码(有时甚至在同一单元内)似乎使用相同的类型,但实际上它们在内部是不同的类型时,这可能会导致问题。 但是,在这种情况下,类型实际上是 相同。
从IDE的角度来看,不多。
- 一个小问题是 IDE 中的 "Find Declaration" 需要额外的步骤才能到达基础类型。
- 另一个问题与代码完成有关。我曾经历过,当使用这种稍微不寻常的引用技术
<unit-name>.<type-name>
时,某些版本的 Delphi 偶尔会遇到代码完成问题。 (我不记得 Delphi 5 是如何(甚至是否)受到影响的。)
Are there any other known components that uses this trick?
我不知道有任何组件使用该技术。但出于各种原因,我曾多次使用别名。主要是为了避免对客户端单元造成连锁依赖。
我正在编写自己的组件,我希望它在我将它放在表单上时将 "db"
单元添加到 interface
uses 子句,因为它有一个已发布的事件,例如:
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
,但是Delphi5(我知道。。。)好像没有这个单位。
我有哪些选择?
您可以使用相同的名称在组件单元内为类型设置别名:
type
TDataSet = Db.TDataSet;
无论何时将组件放在表单上,Delphi 都应将其单位添加到 uses 子句中。那么无论您是否以该形式使用 Db
,都有一个有效的 TDataSet
等同于 Db
.
Could there be any side effects/implications/conflicts issues to such type aliasing?
从语言的角度来说,没有。
通常不建议使用同名类型,因为当 2 段代码(有时甚至在同一单元内)似乎使用相同的类型,但实际上它们在内部是不同的类型时,这可能会导致问题。 但是,在这种情况下,类型实际上是 相同。
从IDE的角度来看,不多。
- 一个小问题是 IDE 中的 "Find Declaration" 需要额外的步骤才能到达基础类型。
- 另一个问题与代码完成有关。我曾经历过,当使用这种稍微不寻常的引用技术
<unit-name>.<type-name>
时,某些版本的 Delphi 偶尔会遇到代码完成问题。 (我不记得 Delphi 5 是如何(甚至是否)受到影响的。)
Are there any other known components that uses this trick?
我不知道有任何组件使用该技术。但出于各种原因,我曾多次使用别名。主要是为了避免对客户端单元造成连锁依赖。