Witam serdecznie,

Jestem w trakcie pisania komponentu bazującego na TreeView i HeaderView. Póki co mam jednak problem z właściwościami.
Od razu powiem, że nie interesuje mnie VirtualTreeView z uwagi na duży stopień skomplikowania i brak możliwości imporowania komponentów. Chcaiłbym nauczyć się pisać własne komponenty.

A więc do rzeczy,

type
  TTreeColumns = class(TPersistent)
  private
    FFontSize: Integer;
    FColor: String;
    FColumn: String;
  published
    property FontSize : Integer read FFontSize write FFontSize;
    property Color: String read FColor write FColor;
    property Column: String read FColumn write FColumn;
  end;

  TColTree = class(TPanel)
  private
    FTreeColumns: TTreeColumns;
    FTreeView : TTreeView;
    FHeaderControl : THeaderControl;
  protected
  public
    Constructor Create(AOWner:TComponent);override;
    Destructor Destroy;override;
  published
    property TreeColumns : TTreeColumns read FTreeColumns write FTreeColumns;
    property TreeView : TTreeView read FTreeView write FTreeView;
    property HeaderControl : THeaderControl read FHeaderControl write FHeaderControl;
  end;

Po skompilowaniu komponent dobrze wygląda, mogę dodwać dyamicznie naglowki oraz elementy do drzewka. Mam jednak klopot z właściwościami. Gdy jest w widoku projektowania formularza, i we właściwościach Panelu --> HeaderControl --> Sections zakładam nowe sekcje, to widzę je od razu na formularzu. jednak po uruchomieniu programu, nie ma już tych sekcji. Nie ma tego problemu gdy dodaję sekcje w trakcie działania programu. Przypuszczam zatem, że pomimo, iż w ObjectInspektorze wposuje nagłowki kolumn, to informacja ta nie przenosi sie na mój komponent po uruchomieniu.

Poniżej załączam konstruktora komponentu ColTree.

Constructor TColTree.Create(AOWner:TComponent);
begin
  inherited Create(Aowner);
  FHeaderControl := THeaderControl.Create(Self);
  FHeaderControl.Parent := Self;
  FHeaderControl.Align := alTop;
  FTreeView := TTreeView.Create(Self);
  FTreeView.Parent := Self;
  FTreeView.Align := alTop;
  FTreeColumns := TTreeColumns.Create;
//  HeaderControl.Sections.add.Text := TreeColumns.Column;
end;

W ostatniej linii próbowalem nawet sprawdzic, czy gdybym wypelnil wlasciwosc Column to czy podczas tworzenia komponentu ColTree zostanie zalozona sekcja to i tak nie dziala. Wlasciwosc jest pusta.

Mam wrazenie ze nie do konca rozumiem widocznosc wlasciwosc.

Czy jeseli osadzilem HeaderControl na Panelu, to juz nie moge sie tak latwo odnosci do wlasciwosci HeaderControla, tylo musze je niejako od nowa oprogramowac. Byc moze trzeba by zastosowac procedurę, przenoszącą wlaściwości z pola column do headercontrol juz po uruchomieniu programu ?

z góry dziękuje za pomoc. To mój pierwszy post na forum, choć aktyuwnie czytam je już od dłuższego czasu. Dodam także, że po nabyciu książki Adama B, nie byłem w stanie rozkminić mojego przypadku.

Podsumowując, jesli dodaję sekcje po uruchomieniu programu to jest OK, ale wolalbym wypelnic te sekcje w Inspektorze Objektow juz na etapie projektowania formularza.