{$mode objfpc}
{$modeswitch typehelpers} 
{$M+}

uses typinfo;

type
    TRoosters = (GoldenRooster, Junglefowl, FightingCock, Fjalarr, Gullinkambi, GallicRooster, You);

    TTestPituh = class(TObject)
    private  
        TestField: TRoosters;
    published
        property TestProp: TRoosters read TestField write TestField;
    end;

    TRoostersHelper = type helper for TRoosters
    public
        function GetRoosterName: string;
    end;
 
function TRoostersHelper.GetRoosterName: string;
    begin
        GetRoosterName := GetEnumName(GetPropInfo(TTestPituh,'TestProp')^.PropType, LongInt(self))
    end;

begin
    Writeln(FightingCock.GetRoosterName)
end.