Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.18;
Скачать: CL | DM;

Вниз

Как получить список допустимых констант для перечисления   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.031 c
1-1124861492
Pearled
2005-08-24 09:31
2005.09.18
Как избавиться от появления окна CPU?


1-1124965022
Dust
2005-08-25 14:17
2005.09.18
ConvertStrToNetUnicode в функции ошибка


14-1124526656
Веретенников
2005-08-20 12:30
2005.09.18
Оцифровка видио


14-1124728464
programania
2005-08-22 20:34
2005.09.18
Броузер для экономии трафика


14-1125051106
Игорь Шевченко
2005-08-26 14:11
2005.09.18
Однако спамеры...