Napisałem funkcję która (prawie) to robi ale nie potrafię zamienić stringa z nazwą typu na TMetaClass lub od razu na TTypeInfo.
Wygląda to tak:
{
String enumtype = "TAlign";
GetEnumNames(enumtype, Memo1->Lines);
}
//---------------------------------------------------------------------------
void TForm1::GetEnumNames(String enumtype, TStrings* enumnames)
{
// Wypelnia liste 'enumnames' nazwami wartosci enumeratora
// -------------------------------------------------------
TMetaClass* MC = ????(enumtype); // TUTAJ zamienić "TAlign" na TMetaClass
TTypeInfo* TI = (TTypeInfo*)MC->ClassInfo(); // ALBO TUTAJ zamienić "TAlign" na TTypeInfo
TTypeData* TD = GetTypeData(TI);
String nazwa;
enumnames->Clear();
if ( TI->Kind == tkEnumeration )
{
for (int i=TD->MinValue ; i<=TD->MaxValue ; i++)
{
nazwa = GetEnumName(TI, i);
enumnames->Add(nazwa);
}
}
}
//---------------------------------------------------------------------------
A może ktoś ma zupełnie inny pomysł?