Hm, hab also den Code so übernommen und mal testweise drei "UnterEigenschaften" eingefügt:
Delphi-Quellcode:
TPhongProperties = class(TPersistent)
private
/// vector which points towards the light source
FPhongLightVectorX: Single;
FPhongLightVectorY: Single;
FPhongLightVectorZ: Single;
FOnChange : TNotifyEvent;
procedure SetLightVectorX(ALightVectorX: Single);
procedure SetLightVectorY(ALightVectorY: Single);
procedure SetLightVectorZ(ALightVectorZ: Single);
function GetLightVectorX: Single;
function GetLightVectorY: Single;
function GetLightVectorZ: Single;
protected
procedure DoChange; virtual;
public
constructor Create;
destructor Destroy; override;
procedure Assign(Source : TPersistent); override;
property OnChange : TNotifyEvent read FOnChange write FOnChange;
published
/// x-coordinate of vector which points towards the light source
property PhongLightVectorX: Single read GetLightVectorX write SetLightVectorX;
/// y-coordinate of vector which points towards the light source
property PhongLightVectorY: Single read GetLightVectorY write SetLightVectorY;
/// z-coordinate of vector which points towards the light source
property PhongLightVectorZ: Single read GetLightVectorZ write SetLightVectorZ;
end;
Delphi-Quellcode:
constructor TPhongProperties.Create;
begin
FPhongLightVectorX := 0;
FPhongLightVectorY := 0;
FPhongLightVectorZ := 0;
end;
destructor TPhongProperties.Destroy;
begin
inherited Destroy;
end;
procedure TPhongProperties.Assign(Source : TPersistent);
begin
If Source is TPhongProperties then
begin
FPhongLightVectorX := TPhongProperties(Source).FPhongLightVectorX;
FPhongLightVectorY := TPhongProperties(Source).FPhongLightVectorY;
FPhongLightVectorZ := TPhongProperties(Source).FPhongLightVectorZ;
end
else
inherited Assign(Source);
end;
procedure TPhongProperties.DoChange;
begin
If Assigned(FOnChange) then
FOnChange(Self);
end;
Dann halt in meiner Komponenete ein Property eingefügt:
property PhongShading: TPhongProperties read FPhongShading write FPhongShading;
Im ObjectInsepector wird jetzt dann zwar PhongShading als Eigenschaft angezeigt, dahinter steht dann TPhongProperties, da ist auch ein Plus zum Aufklappen allerdings passiert dann nix. Ist leer... Was hab ich noch übersehen
?