我写了一个自定义控件,它有几个子面板。我希望这些子面板能够接受在设计时放置在它们上面的任何附加控件。
不幸的是,在设计时删除的任何控件最终都会出现在我的自定义控件上,而不是面板上。如果我尝试删除标签,这尤其显示:标签的蓝点已显示,但标题未显示,如果我取消选择标签,则根本不再可见。
简化代码(只有一个子面板):
type
TMyContainer = class(TPanel)
p_SubPanel: TPanel;
public
constructor Create(_Owner: TComponent); override;
end;
constructor TMyContainer.Create(_Owner: TComponent);
begin
inherited;
p_SubPanel := TPanel.Create(Self);
p_SubPanel.Parent := Self;
p_SubPanel.Align := alClient;
end;
我在这里做错了什么?
(以防万一:我使用的是 Delphi 2007。)
[编辑]
我现在以不同的方式解决了它。该组件不再包含面板,而是指外部面板。这使得它实际上更加灵活,但不利的一面是它不再那么直观易用。
我仍然想知道如何完成我最初描述的内容。是不是有一个开源组件可以做到这一点,所以我可以研究源代码?