比方说,我从TPanel创建并安装了自己的控件。它仅包含一个按钮:
constructor TMyPanel.Create(aOwner: TComponent);
begin
inherited Create(aOwner);
btn:= TButton.Create(Self);
btn.Parent:= Self;
btn.Name:= 'xxx'; <-------- mandatory?
end;
是否必须为该面板命名?
此问题从dummzeuch在此处发布的评论开始:
这种情况发生在您的标签没有名字的时候。 IDE添加 仅当控件具有名称时才向类声明(否则 应该声明吗?)。
(我仅指该评论)
答案 0 :(得分:3)
否,您无需命名子组件。
但是,如果您打算将对子组件的访问权限公开为在DFM中流式传输的属性,则确实需要标记子组件,至少:
constructor TMyPanel.Create(aOwner: TComponent);
begin
inherited Create(aOwner);
btn := TButton.Create(Self);
btn.Parent := Self;
btn.SetSubComponent(True); // <-- ADD THIS
end;
答案 1 :(得分:2)
IDE需要组件具有名称,否则则没有名称。因此,如果IDE不直接访问子组件的任何属性,则不需要名称。这不会阻止父级设置的组件属性,例如通过IDE可见的父级属性。