uses
TypInfo;
type
TTest = (a, b, c, d, haha, yeah);
procedure TForm1.Button1Click(Sender: TObject);
var
ti: PTypeInfo;
td: PTypeData;
i: Integer;
begin
ti := TypeInfo(TTest);
td := GetTypeData(ti);
for i := td^.MinValue to td^.MaxValue do
ListBox1.Items.Add(GetEnumName(ti, i));
end;