【问题标题】:Setting default properties of custom control设置自定义控件的默认属性
【发布时间】:2011-11-01 10:18:54
【问题描述】:

我编写了一个源自 TCustomEdit 的控件,但在更改 StdCtrls 中定义的组件的默认大小时遇到​​了问题(即 width=121,height=21)。

所以在 Create 中我有:

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

但是当控件放置在窗体上时,它会使用 TCustomEdit 的默认宽度和高度进行绘制。我已经将测试用例简化为一个简单的组件,它只有上面的构造函数,没有别的。我也尝试在构造函数中设置autosize:=false,但没有任何乐趣。

通过四处搜索,我认为我在做正确的事情,但显然它不起作用。如何获得我所追求的行为?

【问题讨论】:

  • 你的构造函数被调用了吗?你把它标记为override了吗?
  • 始终解决所有编译器提示、警告和错误。

标签: delphi delphi-7 custom-component


【解决方案1】:

这对我有用 (XE2)。确保您的构造函数被标记为override,以便实际调用它:

constructor Create(AOwner : TComponent); override;

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

【讨论】:

  • 另外不要忘记将已发布属性的默认值设置为相同的值。属性宽度默认 40;这有助于表单流媒体,如果您想在将来更改默认设置,也会为您提供帮助。
  • @Lars,我不这么认为。 default 没有设置属性值;这是在构造函数中完成的。关于帮助改变未来的价值;从设计者的角度来看,这很好,因为Object Inspector 将与default 不同的值突出显示为粗体和不加粗体,如果输入的值等于default 之一。从组件开发人员的角度来看,您很容易忘记在构造函数中更改default 和真正的默认属性值。
  • @Lars 高度和宽度未使用默认值发布,因此它们始终保存在 .dfm 文件中。
  • @TLama 你是对的,在已发布属性上设置默认值不会改变它的值。我没有另外声明。
  • @David 不知道。然后让它成为其他已发布属性的建议。
猜你喜欢
  • 1970-01-01
  • 2012-10-03
  • 1970-01-01
  • 1970-01-01
  • 2013-12-21
  • 1970-01-01
  • 2010-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多