规则16:可视化窗体继承(Visual Form Inheritance) 如果应用得当,这将是一个强大的工具。根据我的经验,你所开发的项目越大,越能体现它的价值。在一个复杂的程序中,你可以使用窗体的不同等级关系来处理一组相关窗体的多态性(polymorphism)。 可视化窗体继承允许你共享多个窗体的一些公共的动作:你可以使用共享的方法,公用的属性,甚至是事件处理程序,组件,组件属性,组件事件处理方法等等。
规则20:用于属性的虚拟方法(Virtual Methods For Properties) 即使是访问属性的方法也能定义成virtual,这样派生类就能改变属性的动作而不必重定义他们。虽然这种方法在VCL当中很少使用,但是它确实十分灵活、强大。为了实现这一点,仅仅需要将Rule 11当中的Get 和Set 方法定义成Virtual。基类的代码如下所示:
type TformDialog = class ( TForm) Procedure FormCreate(Sender:Tobject); Private Edit1:Tedit; Protected function GetText:String;virtual; procedure SetText(const Value:String);virtual; public constructor Create(Text :String):reintroduce;overload; property Text:String read GetText write SetText; end;
在继承窗体中,你可以添加一些额外的动作来重载虚拟方法SetText: procedure TformInherit.SetText(const Value:String); begin inherited SetText(Value); if Value=’’ then Button1.Enabled:=False; end;