我有TWinControl
的后代(事实上它现在就是这样)并且我将它注册为IDE中的一个组件:
type
TGroupPanel = class(TWinControl);
但是当我删除其他组件时,它们会附加到表单而不是我的控件。换句话说,我希望我的自定义控件的行为类似于TPanel
,以便放在其上的组件成为其子组件。
如果我在运行时创建组件并手动将它们分配给我的控件,就像在下面的代码中一样,那么它可以工作:
TForm1 = class(TForm)
Group: TGroupPanel;
procedure FormCreate(Sender: TObject);
private
Panel: TPanel;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Panel := TPanel.Create(Group);
Panel.Parent := Group;
Panel.Align := alClient;
end;
那么,我应该怎么做才能在设计时将组件放在TWinControl
上成为那种控制的孩子?
(我要做的是做一个特殊的控制来组合其他组件,所以我可以对齐并将它们放在一起。当然,我可以用普通的面板做到这一点,但我想这样做一个轻量级的控件,不会绘制任何东西,并在TWinControl
我找到了解决方案。)
答案 0 :(得分:6)
为csAcceptControls
设置ControlStyle
标记。
constructor TGroupPanel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ControlStyle := ControlStyle + [csAcceptsControls];
end;