昨天说了一个不是问题的问题,http://bbs.csdn.net/topics/390380777
今天有发现另一个奇怪问题:我重载Caption、BorderStyle、BorderIcons三个属性,可是BorderIcons在运行时未被加载,断点调试发现程序
先执行TCustomForm.SetBorderIcons,再执行TCustomForm.SetBorderStyle,
之后执行TFrmBasic.Create,这个构造函数中执行了inherited Create(AOwner);
由inherited Create(AOwner)引起了后面三个函数的依次执行。SetCaption,再执行SetNewBorderStyle最后执行SetCaption。之后就到TFrmBasic.Create的后续代码,程序唯独没执行过SetNewBorderIcons?而且发现第一次SetCaption传入参数是TFrmBasic窗体的Caption属性,第二次才是TMyForm窗体设置的属性,TCustomForm.SetBorderStyle、SetNewBorderStyle两次传入的都是TMyForm窗体设置的值。请问如果要继承TForm并修改一些属性行为作为新的窗体基类,这样处理有何不妥?上面的问题怎么解决?TfrmBasic = class(TForm)
        pnlRight: TPanel;
        pnlLeft: TPanel;
        pnlMain: TPanel;
        pnlTop: TPanel;
 private
 { Private declarations }
        FNewBorderStyle: TFormBorderStyle;
        FNewBorderIcons: TBorderIcons;
    protected
     function GetCaption: TCaption;
     procedure SetCaption(const ACaption: TCaption);
     procedure SetNewBorderStyle(const Value: TFormBorderStyle);
     procedure SetNewBorderIcons(Value: TBorderIcons);
    public
    constructor Create(AOwner: TComponent);override;
  published
   property Caption:TCaption read GetCaption write SetCaption;
   property BorderStyle:TFormBorderStyle read FNewBorderStyle write SetNewBorderStyle;
   property BorderIcons:TBorderIcons read FNewBorderIcons write SetNewBorderIcons; end;TMyForm = Class(TfrmBasic)
end;//使用代码:myForm := TMyForm.Create(nil); myForm.Show;