Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type
- TCompatibilityKind = (
- Delphi1,
- Delphi2,
- Delphi3
- );
- TCompatibility = set of TCompatibilityKind;
- TMyClass = class
- private
- FCompatibility: TCompatibility;
- function GetCompatibility(Kind: TCompatibilityKind): Boolean;
- procedure SetCompatibility(Kind: TCompatibilityKind; Value: Boolean);
- public
- // this property is for access to the set at once, if you need it; if you make it published, you will see
- // it in the Object Inspector
- property Compatibility: TCompatibility read FCompatibility write FCompatibility;
- // and this one is for access to elementary values of the set; they are usually prefixed by "Is" or "Has";
- // note, that this one you won't see in the Object Inspector if you make it published
- property HasCompatibility[Kind: TCompatibilityKind]: Boolean read GetCompatibility write SetCompatibility;
- end;
- implementation
- { TMyClass }
- function TMyClass.GetCompatibility(Kind: TCompatibilityKind): Boolean;
- begin
- Result := Kind in FCompatibility;
- end;
- procedure TMyClass.SetCompatibility(Kind: TCompatibilityKind; Value: Boolean);
- begin
- if Value then
- Include(FCompatibility, Kind)
- else
- Exclude(FCompatibility, Kind);
- end;
- // example usage
- procedure TForm1.Button1Click(Sender: TObject);
- var
- MyClass: TMyClass;
- begin
- MyClass := TMyClass.Create;
- try
- // write elementary property value
- MyClass.HasCompatibility[Delphi1] := CheckBox1.Checked;
- MyClass.HasCompatibility[Delphi2] := CheckBox2.Checked;
- // read elementary property value
- CheckBox3.Checked := MyClass.HasCompatibility[Delphi1];
- CheckBox4.Checked := MyClass.HasCompatibility[Delphi2];
- // or you can access the MyClass.Compatibility set at once as you
- // did before...
- finally
- MyClass.Free;
- end;
- end;
Advertisement
Add Comment
Please, Sign In to add comment