Hola,
A ver si dices algo así... (que hace poco me he pegado con ello):
Código Delphi
[-]
unit UComponente;
interface
uses
Classes;
type
TElementos = class;
TComponente = class(TComponent)
private
FElementos: TElementos;
procedure SetElementos(elementos: TElementos);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy(); override;
published
property Elementos: TElementos read FElementos write SetElementos;
end;
TElemento = class(TCollectionItem)
private
FNombre: string;
published
property Nombre: string read FNombre write FNombre;
end;
TElementos = class(TCollection)
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples',[TComponente]);
end;
constructor TComponente.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FElementos := TElementos.Create(TElemento);
end;
destructor TComponente.Destroy();
begin
FElementos.Free();
inherited Destroy();
end;
procedure TComponente.SetElementos(elementos: TElementos);
begin
FElementos.Assign(elementos);
end;
end.