Oder hast du ein SET von TEigenschaften und willst deren Bestandteile in einzelnen Properties haben.
Dann geht das so:
Code: Alles auswählen
 
type
 TEigenschaft = (Eigenschaft1, Eigenschaft2, Eigenschaft3);
 TEigenschaften = set of TEigenschaft;
 
TMeineKomponente = class
private
 fEigenschaften : TEigenschaften;
 function    GetEigenschaft1 : boolean;
 procedure SetEigenschaft1(const Value : boolean);
public
 property Eigenschaft1 : boolean read GetEigenschaft1 write SetEigenschaft1;
 property Eigenschaft2...
end;
 
implementation
 
function TMeineKomponente.GetEigenschaft1 : boolean;
begin
 Result := (Eigenschaft1 in fEigenschaften);
end;
 
procedure TMeineKomponente.SetEigenschaft1(const Value : boolean);
begin
 if Value <> Eigenschaft1 then
 begin
  if Value then
   Include(fEigenschaften, Eigenschaft1)
  else
   Exclude(fEigenschaften, Eigenschaft1);
  Invalidate();
 end;
end;
 
Wenn man sehr viele solcher Eigenschaften hat, kann man sich auch der indizierten Methode bedienen:
Dabei nutzt man den Umstand, dass SET's intern nix anderes wie Integer sind.
Code: Alles auswählen
 
  TEigenschaft = (Eigenschaft1, Eigenschaft2, Eigenschaft3);
  TEigenschaften = set of TEigenschaft;
 
  { TMeineKomponente }
 
  TMeineKomponente = class
  private
    fEigenschaften : TEigenschaften;
    function  GetEigenschaft(Index : integer) : boolean;
    procedure SetEigenschaft(Index : integer; const aValue : boolean);
    procedure Invalidate;
  public
    property Eigenschaft1 : boolean index 0 read GetEigenschaft write SetEigenschaft;
    property Eigenschaft2 : boolean index 1 read GetEigenschaft write SetEigenschaft;
    property Eigenschaft3 : boolean index 2 read GetEigenschaft write SetEigenschaft;
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
{ TMeineKomponente }
 
function TMeineKomponente.GetEigenschaft(Index: integer): boolean;
begin
  Result := TEigenschaft(Index) in fEigenschaften;
end;
 
procedure TMeineKomponente.SetEigenschaft(Index: integer; const aValue: boolean
  );
begin
 if GetEigenschaft(Index) <> aValue then
 begin
   if aValue then
     Include(fEigenschaften, TEigenschaft(Index))
   else
     Exclude(fEigenschaften, TEigenschaft(Index));
 end;
 Invalidate;
end;
 
procedure TMeineKomponente.Invalidate;
begin
  // Macht hier nix
end;