为什么我的默认值设置不了??(50分)

  • 主题发起人 主题发起人 budianermayi
  • 开始时间 开始时间
B

budianermayi

Unregistered / Unconfirmed
GUEST, unregistred user!
我在自定义组件中设置默认值:
property min:real read fmin write setmin default 0;
显示错误:
Default values must be of ordinal, pointer or small set type
请问怎么解决?是因为实形数不可以设置默认值吗?
 
你这样试试看:
property min:real read fmin write setmin default 0.0;
 
要在Create中付值。
关于property 中的 default 通常理解不正确。
这里的default 0 只是告诉Delphi我会在构造时为这个属性付以默认值 0,
因此当此属性值为 0 的时候不必保存在DFM(和程序资源)中(为了缩小EXE大小??)。
你可以对比查看 DFM 文件,加以认证。
而且这些值只能是
顺序类型,指针,和小型集合.
 
to blueboy:我试了,可还是同样的错误,而如果我把min赋成integer型,则可以编译通过
to jobslee:
我就是想要记下控件的默认值,然后,在使用时可以在设计期修改保存而不想在程序中,
比如create中修改

还请大家帮助我阿!!!!
 
注意:控件也有CREATE事件啊!并不是说要在程序的ONCREATE中写。
 
如果只是在设计期修改保存没必要写Default呀.
Default 只是起我上面说的那种作用,而起对数据类型有限制。
 
to jobslee :你是说default不可以设置实形的数吗?
我现在的具体情况是:我在自定义控件create上面输入默认值,在设计时可以修改,
并且可以在运行时显示修改的值,可是,如果我设计时修改的值为0,那么,在运行时出来的值
是我create的默认值,不是修改的0。


相关程序如下:
published
property leftvalue:real read fleftvalue write setleftvalue;
implementation

constructor Truler.create(Aowner: tcomponent);
begin
inherited ;
fleftvalue:=3;
end;

procedure Truler.setleftvalue(value: real);
begin
fleftvalue:=value;
end;
 
!!!有没有人可以帮我解决这个问题啊?难道这么难吗?
 
有没有人可以解答我的问题啊!!!
 
解决了,问题居然是因为我在constructor create 的时候没有加关键字:override
。。。。。。。。
 
1、create中赋的值确实是必须和default值一致的
2、real不行的话可以用double一定可以
 
哎,我说PiPi,你到底涉猎多少方面的内容啊,别让人家佩服你成么
 
后退
顶部