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;