加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Delphi 5组件会自动将“db.pas”单元添加到uses子句中吗?

发布时间:2020-12-15 09:47:49 所属栏目:大数据 来源:网络整理
导读:我正在编写自己的组件,我希望它将“db”单元添加到接口使用子句时,我将其放在表单上,??因为它有一个已发布的事件,如: TMyDBEvent = procedure(Sender: TObject; DataSet: TDataSet) of object; TDataSet在db.pas中声明,我需要手动添加此单元,我想避免. 我见
我正在编写自己的组件,我希望它将“db”单元添加到接口使用子句时,我将其放在表单上,??因为它有一个已发布的事件,如:

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(我知道……)似乎没有这个单元.

我有什么选择?

解决方法

您可以使用相同的名称为组件单元中的类型添加别名:

type
  TDataSet = Db.TDataSet;

无论何时将组件放在表单上,??Delphi都应将其单元添加到uses子句中.然后,无论你是否以该形式使用Db,都有一个与Db相当的有效TDataSet.

Could there be any side effects/implications/conflicts issues to such type aliasing?

从语言的角度来看,没有.

一般来说,当2个代码(有时甚至在同一个单元中)看起来使用相同的类型时,具有相同名称的类型会导致问题是不明智的,但它们实际上是内部不同的类型.但是,在这种情况下,类型实际上是相同的.

从IDE的角度来看,并不多.

>一个小问题是IDE中的“查找声明”需要额外的步骤才能达到基础类型.
>另一个问题与代码完成有关.我曾经历过,当这种稍微不同寻常的引用技术< unit-name>.< type-name>时,某些版本的Delphi偶尔会遇到代码完成的困难.用来. (我不记得Delphi 5是如何(或者甚至是)受到影响的.)

Are there any other known components that uses this trick?

我不知道使用该技术的任何组件.但是我在很多场合出于各种原因使用了混叠.主要是为了避免强制客户端单元的连锁依赖.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读