¿Cómo puedo hacer que una propiedad TList desde mi control personalizado se pueda transmitir?

Visión de conjunto

Estoy escribiendo mi propio control de cuadro de lista derivado deTCustomListBox.

También comencé a implementar mi propio editor de propiedades para permitir la edición del subtítulo y el índice de imagen de los elementos en el momento del diseño (estoy personalizado dibujando el cuadro de lista y he publicado mi propia propiedad ImageList desde mi control).

Problema

Hasta ahora todo funciona bien, sin embargo, no puedo hacer que los elementos se transmitan al dfm. Creo que esto podría deberse al hecho de que el cuadro de lista estándarItems la propiedad es deTStrings, y desde mi control he publicado mi propia propiedad que también se llamaItems, pero es deTList clase. No quiero el estándarItems propiedad del cuadro de lista para aparecer, pero en mi lugarItems tipo.

Entonces, aunque puedo soltar mi control en un formulario en el momento designado, edite elItems con mi propio editor de propiedades, si ejecuto la aplicación, los cuadros de lista están vacíos, si veo el DFM en el momento designado y luego vuelvo a la vista de formulario, los elementos también desaparecieron, básicamente no se almacenaron en el DFM y no estoy seguro de cómo para corregir esto?

Los extractos relevantes del código se ven así (comentarios agregados para el propósito de esta pregunta):

Mi propio tipo de elemento de cuadro de lista:

TListBoxItem = class(TObject) // Also tried TPersistent
private
  FCaption: string;
  FImageIndex: Integer;
public // Also tried Published
  property Caption: string read FCaption write FCaption;
  property ImageIndex: Integer read FImageIndex write FImageIndex;
end;

El control personalizado:

TMyListBox = class(TCustomListBox)
private
  FImageList: TImageList;
  FItems: TList;
  procedure SetImageList(const Value: TImageList);
protected
  procedure Notification(AComponent: TComponent;
    Operation: TOperation); override;
  procedure DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState); Override;
  procedure MeasureItem(Index: Integer; var Height: Integer); override;
public
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;

  procedure AddItem(ACaption: string; AImageIndex: Integer); // adds a new item to FItems and the listbox control
published
  .....
  property Color;
  property Images: TImageList read FImageList write SetImageList;
  property Items: TList read FItems write FItems; // take over standard Items type and publish my own Items type instead
  .....
  property Sorted;
  property TabOrder;
  property TabStop;
  property Visible;
  property OnClick;
  property OnContextPopup;
  property OnDblClick;
  property OnDragDrop;
  property OnDragOver;
  //property OnDrawItem;
  property OnEndDock;
  property OnEndDrag;
  property OnEnter;
  property OnExit;
  property OnKeyDown;
  property OnKeyPress;
  property OnKeyUp;
  //property OnMeasureItem;
  property OnMouseDown;
  property OnMouseEnter;
  property OnMouseLeave;
  property OnMouseMove;
  property OnMouseUp;
  .....
end;

Ese es el control en su forma más simple. Todo lo que quiero hacer con el control, como el dibujo personalizado y el editor de propiedades para miItems propiedad, etc. está funcionando como quiero.

Pregunta

¿Qué necesito hacer para hacerFItems propiedad transferible a la DFM? El DFM debe mostrar cada uno de mis propios tipos de elementos de cuadro de lista enItems.

Gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta