2011-11-01 119 views
1

我已经写了TCustomEdit的后代控件,但是在StdCtrls中定义的组件的默认大小(即width = 121,height = 21)时遇到问题。设置自定义控件的默认属性

因此,在创建我有:

inherited Create(AOwner); 
width:=40; 
height:=20; 

但是,当控件放置在窗体上画有默认的宽度和高度TCustomEdit。我将测试用例简化为一个简单的组件,它只有上面的构造函数,没有别的。我也尝试在构造函数中设置autosize:=false,但没有喜悦。

从四周搜索我认为我做正确的事情,但显然它不工作。如何获得我之后的行为?

+4

你的构造函数被调用了吗?你有没有标记为“覆盖”? – jpfollenius

+0

总是解决所有编译器提示,警告和错误。 – NGLN

回答

4

这对我很有用(XE2)。确保你的构造标记override使得它实际上是所谓:

constructor Create(AOwner : TComponent); override; 

这是必要的,因为TComponent有一个虚拟的构造函数。

+0

D'oh,谢谢! :) – RobS

+0

另外不要忘记将已发布属性的默认值设置为相同的值。属性Width默认40;这有助于表单拖放器,并在将来要更改默认值时帮助您。 –

+1

@Lars,我不这么认为。 'default'不设置属性值;这是在构造函数中完成的。关于帮助未来改变价值;从设计师的角度来看,这很好,因为如果输入的值等于默认值,则“Object Inspector”突出显示与“default”不同的值,如粗体和粗体。从组件开发人员的角度来看,您可以轻易忘记在构造函数中更改'default'和实际的默认属性值。 – TLama

相关问题