--- ---
You can use runtime type information (RTTI) to do that. Below is an example:
uses {...}, TypInfo procedure BrushStylesAsStrings(AList: TStrings); var a: integer; pInfo: PTypeInfo; pEnum: PTypeData; begin AList.Clear; pInfo := PTypeInfo(TypeInfo(TBrushStyle)); pEnum := GetTypeData(pInfo); with pEnum^ do begin for a := MinValue to MaxValue do AList.Add(GetEnumName(pInfo, a)); end; end;