让在IDE中放置在我的控件上的组件成为我的控件的子项。

3

我有一个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 中找到了解决方案。)


1
请参考这个几乎相同的问题 - NGLN
1个回答

6

ControlStyle设置csAcceptControls标志。

constructor TGroupPanel.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ControlStyle := ControlStyle + [csAcceptsControls];
end;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接