Как мне создать собственный элемент управления с дополнительной панелью, которая принимает другие элементы управления во время разработки? [Дубликат]

На этот вопрос уже есть ответ:

Элементы, добавленные на мой элемент управления в среде IDE, становятся дочерними элементами моего элемента управления 1 ответ

Я написал собственный элемент управления, который имеет несколько вспомогательных панелей. Я хочу, чтобы эти вспомогательные панели принимали любые дополнительные элементы управления, добавленные к ним во время разработки.

К сожалению, любой элемент управления, который отбрасывается во время разработки, оказывается на моем пользовательском элементе управления, а не на панелях. В частности, это проявляется, если я пытаюсь удалить метку: отображаются синие точки метки, но заголовок отсутствует, а если я отменяю метку, она больше не отображается.

упрощенный код (только одна подпанель):

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.)

[редактировать

Я решил это по-другому. Компонент больше не содержит панелей, а относится к внешним панелям. Это делает его на самом деле гораздо более гибким, но с другой стороны он более не интуитивно понятен в использовании.

Я все еще хотел бы знать, как выполнить то, что я описал изначально. Нет ли где-нибудь компонента с открытым исходным кодом, который бы делал это, чтобы я мог изучить исходный код?

Ответы на вопрос(3)

Ваш ответ на вопрос