我希望能够执行Panel1.Update(param),其中Panel1是Form1上的对象,而Update(param)是我的方法-我想将TPanel的这个实例添加到所有VCL方法中天生。
新手。自从我与Delphi合作以来已有25年了。我猜我在面向对象概念上挣扎。
没有代码
Panel1.Update(param);
答案 0 :(得分:3)
以下是使用插入器类添加新方法的最小示例 到TPanel。
type
TPanel = class(ExtCtrls.TPanel)
protected
procedure Update(Param : String);
end;
TForm1 = class(TForm)
Panel1: TPanel;
procedure FormCreate(Sender: TObject);
public
end;
[...]
{ TPanel }
procedure TPanel.Update(Param: String);
begin
Caption := 'ParamValue: ' + Param;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Panel1.Update('abc');
end;
请注意,您必须将方法添加到ExtCtrls.TPanel派生的类中。 您不能将方法添加到TPanel的实例,因为这不是Delphi的方法 工作时,Delphi会为类的方法生成代码,而不是为该类的特定实例生成代码。
还请注意,没有什么可以阻止您为插入器类提供相同的名称 作为其所属的类(单元限定符“ ExtCtrls”消除了两者的歧义)。
还请注意,插入器类可以与表单分开放置;在那里面
内插器类单位必须出现在表单的Uses
列表中,在 ExtCtrls之后之后。