昨天说了一个不是问题的问题,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;
今天有发现另一个奇怪问题:我重载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;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货