为不同的类添加一些常用方法

问题描述

我有以下结构...我制作的三个控件,它们继承自同一个公共控件 TCustomControl

TDriveBar [MyShell.pas] > TCustomPanel [Vcl.ExtCtrls.pas] > TCustomControl [Vcl.Controls.pas]...

TPathBar [MyShell.pas] > TCustomControl [Vcl.Controls.pas]...

TFileList [MyShell.pas] > TCustomSuperList [MySuperList.pas] > TCustomControl [Vcl.Controls.pas]...

现在,我想改变一些东西,以便我的 TDriveBarTPathBarTFileList 可以作为一个共同的祖先类被访问(类型转换)并且有一些共同的新方法。那个祖先似乎是TCustomControl,但我不知道是否可以在那里插入一个新类。更重要的是,我希望 TCustomSuperList 在单独使用时不要包含这些新方法。不知道有没有让自己明白...

我不能使用接口,因为我的想法是只编写一次通用方法并在那些控件中使用它们......有了接口,我必须在每个 Shell 控件中实现它......

解决方法

Delphi 能够使用关键字 implements 将接口的方法委托给另一个对象。

在您的情况下,想法是创建一个对象,实现一个具有通用方法的接口,并在您的每个组件中创建一个具有接口类型并委托给该对象的属性。