属性缺省值不能起作用(100分)

B

Bright

Unregistered / Unconfirmed
GUEST, unregistred user!
程序如下:
TSomeClass = class(TCustomListBox)
private
FMargeSize: Integer
procedure SetMargeSize(const Value: Integer);
...

public
...
constructor Create; override;
...
property MargeSize: Integer read FMargeSize write SetMargeSize stored True default 2;
end;

constructor TSomeClass.Create;
begin
FMargeSize := 2; // ***
end;

procedure TSomeClass.SetMargeSize(const Value: Integer);
begin
if Value <> FMargeSize then begin
FMargeSize := Value;
Repaint;
end;
end;

如果不加上***一句,属性MargeSize缺省为0,而且在属性编辑器中修改的值无法保存,不知为什么?
 
所有Components的所有Properties(如果可以有default的话)都是这样的,
因为在implementation段之前的一切都还没有implementated!就象你在大庭
广众之下宣布说“咱要结婚啦!”,但却没人跟你去领结婚证,那不白说了吗?哦!
 
unit、interface和implementation是在提问被我省略了,如果没有怎么能编译通过呢。而且我查看过其他人的构件源码,似乎和我的没有什么分别,但是缺省值却可以起作用。
 
你去看一看Delphi的Help吧,那里已经很明确的说明了,在Default定义的情况下,
Delphi会检查属性值是否与Default相等,如相等则不保存。你如不想写***的程序,
把Default去掉就行了。Default并不能完成设置属性值的功能。
 
这样的代码能运行?
ZX:我给发:)

是这样的,一定要加.如果要强制类型可以用ONLOADED
 
接受答案了.
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
933
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
449
import
I
顶部 底部