假设我在Unit1
中有两个课程:TParent = class(TCustomControl)
和TDescendant = class(TParent)
,他们都有很多方法,字段和属性。
在Unit2
我需要修改TParent
。假设我只需要以一种非常简单的方式修改单个方法Method1
,这种方法实际上不会影响其他任何东西(例如,打印红色而不是黑色的文本)。我还需要TDescendant
受此修改影响(因此每次调用Method1
时都会执行修改后的Method1
。
有没有办法在 Delphi 7 ,中执行此操作而不修改Unit1
并且不将整个TDescendant
类复制到Unit2
最重要的是,我真的需要类名保持不变(我只是尝试修改第三方控件中的方法而不创建一个全新的控件来执行此操作)。
我在TParent
中创建了Unit2
的拦截器类,但我不知道(如果可能的话)“告诉”TDescendant
成为拦截器的后代而不是原来的。
答案 0 :(得分:0)
据我所知,如果没有一些严重的低级别黑客(基于指针/内存),这是不可能的。因此我根本不会建议...(我也不知道该解决方案的实际答案)。
当你只想在TParent
类中添加一些额外的方法时,可以使用辅助类(Delphi XE + - 甚至可能是早期版本)。
实施例
TParentHelper = class helper for TParent
public
procedure MyMethod(param: string);
end;
现在你可以尝试这样的东西:
uses
MyParentHelperU;
Procedure test(D: TDescendant);
begin
D.MyMethod('test');
end;
注意: