制作包含其他组件的自定义组件的正确方法

时间:2018-10-24 10:49:37

标签: delphi firemonkey custom-component

我想制作自己的包含其他组件的简单组件。看起来像:

TTag = class(TLayout)
private
    _line: TLine;
    _label: TLabel;
    _background: TRoundRect;
    _button: TLabel;
public
    constructor Create(AOwner: TComponent); override;
end;

当我将此组件放在表单上时,一切正常,并且表单结构如下: enter image description here

但是在Delphi IDE重新打开后,它看起来像:

enter image description here

如何添加子组件来避免这种奇怪的行为?

1 个答案:

答案 0 :(得分:8)

这是SetSubComponent的典型情况:

  

调用SetSubComponent指示此组件是否为   子组件。子组件是其所有者是组件的组件   而不是其所在的表单或数据模块。除非这样   组件调用IsSubComponent设置为True的SetSubComponent,其   已发布的属性不会保存到表单文件中。

对于您的每个子组件,请在构造函数中调用SetSubComponent(True)