gpt4 book ai didi

delphi - 让放置在 IDE 中我的控件上的组件成为我的控件的子级

转载 作者:行者123 更新时间:2023-12-03 15:47:51 25 4
gpt4 key购买 nike

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

最佳答案

ControlStyle设置csAcceptControls标志。

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

关于delphi - 让放置在 IDE 中我的控件上的组件成为我的控件的子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31220255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com