Форум: "Компоненты";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
ВнизКак получить список допустимых констант для перечисления Найти похожие ветки
← →
PRM (2004-11-01 16:26) [0]Здравствуйте. Необходимо получить список констант перечисления, типа вот так как ниже,только необходимо вместо TBrushStyle имя перечисления необходимо задавать строкой
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
← →
Юрий Зотов © (2004-11-01 16:40) [1]Если строка - имя класса, то Get/FindClass дают ссылку на класс по его строковому имени. Подставляете вместо TBrushStyle и все.
Если же это просто любая строка, то придется делать ручками.
← →
PRM (2004-11-02 09:48) [2]Чёто не понял.........TBrushStyle перечисление, а не класс......
Разве Get/FindClass позволяет получать информацию о перечислениях????
Вообще я решил задачу по другому. Я использовал не тип перечисления, свойство объекта, заданного типа......Получилось следующее
procedure TEnumPropElementsAsStrings(Obj:TObject;PropName:String;AList:
TStrings);
var
i: integer;
pInfo: PTypeInfo;
pEnum: PTypeData;
begin
AList.Clear;
pInfo:=GetPropInfo(Obj,PropName)^.PropType^;
if pInfo.Kind=tkEnumeration then
begin
pEnum := GetTypeData(pInfo);
with pEnum^ do
begin
for i := MinValue to MaxValue do
AList.Add(GetEnumName(pInfo, i));
end;
end
else
Raise Exception.Create("Свойство не является перечислением!");
end;
← →
Юрий Зотов © (2004-11-02 13:26) [3]> PRM (02.11.04 09:48) [2]
Сорри, нечетко понял вопрос.
Можно сделать гораздо проще:
uses
TypInfo;
type
TMyEnum = (me0, me1, me2);
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
begin
for i := Ord(Low(TMyEnum)) to Ord(High(TMyEnum)) do
ListBox1.Items.Add(GetEnumName(TypeInfo(TMyEnum), i))
end;
Страницы: 1 вся ветка
Форум: "Компоненты";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.011 c