Witam wszystkich.
Testuje sobie możliwość napisania komponentu z możliwością rozwijania właściwości i tu właśnie pojawił się problem.
Generalnie w Object Inspektorze pojawia mi się property kolory, niestety po naciśnięciu "+" nie rozwija się lista.
Wzorowałem sie i podglądałem jak to jest zrobione w innych komponentach i klasach które posiadają taką właściwość np. klasa TSizeConstraints ale nie wiem czemu w moim komponencie to nie działa.
Proszę o podpowiedź gdzie robię błąd.
unit KonfigType;
interface
uses
SysUtils, Classes, Registry, Controls;
type
TKoloryGridow = class(TPersistent)
private
FControl : TControl;
FNotFound : integer;
FColIndex : integer;
FKursor : integer;
FTabela : integer;
FColHead : integer;
FLv1 : integer;
FLv2 : integer;
FLv3 : integer;
FDefaultKol : integer;
FFound : integer;
FSelect : integer;
FOnChange : TNotifyEvent;
procedure SetKolor(Index: Integer; Value: Integer);
protected
procedure Change; virtual;
property Control: TControl read FControl;
public
constructor Create(Control: TControl); virtual;
property OnChange: TNotifyEvent read FOnChange write FOnChange;
published
property Tabela : integer index 0 read FTabela write SetKolor default 0;
property Kursor : integer index 1 read FKursor write SetKolor default 0;
property Select : integer index 2 read FSelect write SetKolor default 0;
property Lv1 : integer index 3 read FLv1 write SetKolor default 0;
property Lv2 : integer index 4 read FLv2 write SetKolor default 0;
property Lv3 : integer index 5 read FLv3 write SetKolor default 0;
property Found : integer index 6 read FFound write SetKolor default 0;
property NotFound : integer index 7 read FNotFound write SetKolor default 0;
property DefaultKol : integer index 8 read FDefaultKol write SetKolor default 0;
property ColIndex : integer index 9 read FColIndex write SetKolor default 0;
property ColHead : integer index 10 read FColHead write SetKolor default 0;
end;
TKonfigKomponent = class(Tcomponent)
private
FKolory : TKoloryGridow;
procedure SetKolory(const Value: TKoloryGridow);
public
constructor Create(AOwner: TComponent); override;
Destructor Destroy; override;
published
property Kolory : TKoloryGridow read FKolory write SetKolory;
end;
procedure Register;
implementation
{ TKonfigKomponent }
constructor TKonfigKomponent.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
end;
destructor TKonfigKomponent.Destroy;
begin
inherited;
end;
procedure TKonfigKomponent.SetKolory(const Value: TKoloryGridow);
begin
FKolory.Assign(Value);
end;
{ TKoloryGridow }
procedure TKoloryGridow.Change;
begin
if Assigned(FOnChange) then FOnChange(Self);
end;
constructor TKoloryGridow.Create(Control: TControl);
begin
inherited Create;
FControl := Control;
end;
procedure TKoloryGridow.SetKolor(Index, Value: Integer);
begin
case Index of
0: FTabela := Value;
1: FKursor := Value;
2: FSelect := Value;
3: FLv1 := Value;
4: FLv2 := Value;
5: FLv3 := Value;
6: FFound := Value;
7: FNotFound := Value;
8: FDefaultKol := Value;
9: FColIndex := Value;
10: FColHead := Value;
end;
end;
procedure Register;
begin
RegisterComponents('Test',[TKonfigKomponent]);
end;
end.