如何在父类中所调用派生子类的同一事件(50分)

  • 主题发起人 主题发起人 whsunbin
  • 开始时间 开始时间
W

whsunbin

Unregistered / Unconfirmed
GUEST, unregistred user!
如在父类表单中事件FormKeyDown中如何写代码,
需调用从该表单派生表单的OnClick事件方法。
如写Self.FormClick(Sender)调用的是该父类的代码,而派生类的OnClick代码没有执行
 
一般是继承父类的事件,比如说OnClick可以继承Click事件。
procedure Click(....);override;
begin
//do what you waht here...
inherited;
end;
这样就可以了了吧
 
你把父类表单中的事件处理过程声明为 virtual 的,然后子类表单声明中 override 该事件
处理过程就行了。如:
1,父类表单的单元:
type
TParentForm = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject); virtual; //加上 virtual
private
public
end;
...
2,子类表单的单元:
TChildForm = class(TParentForm)
procedure Button1Click(Sender: TObject); override; //加上 override
private
public
end;
3, 然后利用多态:
var
ParentForm: TParentForm;
..
ParentForm := TChildForm.Create(Application);
则 ParentForm 上的 Button1 被 Click 时, 实际调用的是 TChildForm 的 Button1Click 方法中的代码
事件处理过程。
 
来迟一步。同意楼上的观点[^]
 
接受答案了.
 
后退
顶部