delphi property中default的含义
首先看个案例
TPerson = class
published
property Age: Integer read FAge write SetAge default 20;
end;
我们创建一个TPerson类 给其一个属性,然后使用了 default 20 关键字,按照我们的理解 应该是 这个age属性的默认值 就是20;
其实这个default 说明符不是 默认值的意思;官方也特别提示了:
https://docwiki.embarcadero.com/RADStudio/Athens/en/Properties_(Delphi)
可见 这个 default 与 我们理解的不一样,为了 降低 熵值,降低复杂度,还是不要使用 这些属性说明符了,就让其默认就可;
若要创建实例时,给其默认值,就在构造函数里 指定;
后来我开发一个按钮组件,给一个按钮默认 一个颜色,发现真的不生效:
//定义属性时,给其指定一个默认值,鼠标悬浮颜色
property ColorHot: TColor read FColorHot write SetColorHot default clWhite;
//在构造函数里指定初始化值,鼠标按下颜色
constructor TColorButton.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FColorPressed := clRed;
end;
所以 还是不要使用 default了,避免 程序难以理解;
default指令的意思不是设置属性默认值。它的意思是:当你在组件可视化设计时设置的属性值和它指定的值不相同时,才将该值存入dfm文件。比如
property open: boolean read FOpen write setOpen default true;
//如果你在Object Inspector中设置open为true时,open不会被保存,否则保存到dfm文件中。
//要设置默认值,应该在构造函数Create中设置,如:
constructor Ttest.Create(AOwner: TComponent);
begin
inherited;
open := true;
//....
end;
可见 default 是容易让开发者产生歧义的,故而尽量不要使用
标签:默认值,default,delphi,property,open,Create,属性 From: https://www.cnblogs.com/del88/p/18235178