Практикуюсь в создании компонента на основе TGraphicControl. 
Подскажите где почитать или посмотреть пример компонента с возможностью добавления вложенных элементов (например как это сделано в TabControl или StatusBar). 
А так же у меня не получается создать в инспекторе объектов группу свойств второго порядка. Применяя стандартный тип, он будет отображаться в виде ветки дерева свойств, если применяю свой, то он будто не инициализирован - в инспекторе объектов появляется, но не может раскрыться. Вот поясняющая часть кода :
	Код:
	type TPivotPoint = (TopLeft,TopRight,BottomLeft,BottomRight); 
type
	TEdgeParams = class (TPersistent)
	 private
		FShowFrame:boolean;
		FWidth:byte;
		FColor: TColor;
 published
	 property ShowFrame:boolean read FShowFrame write FShowFrame default false;
	 property Color:TColor read FColor write FColor;
	 property Width:byte read FWidth write FWidth;
end;
type
	 TChartName = class(TPersistent)
	 private
		FChartText:string;
		FFontSize:integer;
		FFontStyle:TFontStyles; //Этот работает
		FEdgeParams:TEdgeParams; // Этот не раскрывается в инспекторе объектов
	 protected
	 published
		property ChartText:string read FChartText write FChartText;
		property FontSize:integer read FFontSize write FFontSize;
		property FontStyle:TFontStyles read FFontStyle write FFontStyle;
		property EdgeParams:TEdgeParams read FEdgeParams write FEdgeParams;
	end;
{========================================================================}
type
	TGraphPanel = class(TGraphicControl)
	private
   //...
		FPivotPoint : TPivotPoint;  
		FChartName : TChartName;    
		
	protected
		procedure SetPivot(NewPivot: TPivotPoint);
		procedure DrawEdge;
		procedure DrawChartName;
	public
		FWorkFrame:TAxis;
	published
	
			constructor Create(AOwner: TComponent); override;
    //...
		property PivotPoint : TPivotPoint read FPivotPoint write SetPivot default BottomLeft;
		property ChartName : TChartName read FChartName write FChartName;// default BottomLeft;
		property OnResize;
	end;
procedure Register;
implementation
uses DateUtils;
procedure Register;
begin
	RegisterComponents('Monitor', [TGraphPanel]); 
end;
constructor TGraphPanel.Create(AOwner: TComponent);
begin
	inherited Create(AOwner);
        FChartName:=TChartName.Create;
	FEdge:=TEdgeParams.Create;
	
 //...
	with FWorkFrame do
    begin
      x0:=0;
      y0:=0;
      x1:=Width;
      y1:=Height;
    end;
    
	Height := 100;
	Width := 100;
	FChartName.FFontSize:=8;
	FChartName.FFontName:='System';
end;
 
 
ЗЫ. Пробую сейчас разобраться в содержимом ComCtrl, наверное TCollectionItem и есть ответ на мой вопрос. В любом случае ваши прямые ответы будут мне полезными, указывая на важные моменты.