It does, if you put it in a function
And you only need a single function, not a new one for every set-of-type
[/quote]
To make it ONE function, you need either untyped params, or call it with Foo(@Options, ord(OThree).
Either will remove type checking (one of the advantages of pascal), and allow you to specify a enum that does not belong to the same type as used for the set.
Then you may as well choose a language that has no type checking to begin with.
It also will not work, if "Options" is a property. No function will (unless it is a published property, and RTTI is used (specifying property as string/name))