¿Cómo creo un control personalizado con un subpanel que acepta otros controles en el momento designado? [duplicar

Esta pregunta ya tiene una respuesta aquí:

Deje que los componentes que caigan en mi control en el IDE se conviertan en hijos de mi control 1 respuesta

He escrito un control personalizado, que tiene varios subpaneles. Quiero que estos subpaneles acepten cualquier control adicional que se les haya aplicado en tiempo de diseño.

Desafortunadamente, cualquier control que se caiga en el momento del diseño termina en mi control personalizado, no en los paneles. Esto se muestra en particular si intento soltar una etiqueta: se muestran los puntos azules de la etiqueta, pero su título no lo es y si anulo la selección de la etiqueta, ya no es visible en absoluto.

código simplificado (solo un subpanel):

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;

¿Qué estoy haciendo mal aquí

(Por si acaso importa: estoy usando Delphi 2007).

[editar

Ahora lo he resuelto de manera diferente. El componente ya no contiene paneles, sino que se refiere a paneles externos. Esto lo hace en realidad mucho más flexible, pero en el lado negativo ya no es tan intuitivo de usar.

Todavía me gustaría saber cómo lograr lo que describí originalmente. ¿No hay un componente de código abierto en algún lugar que haga esto, así puedo estudiar el código fuente?