Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.028 c
14-1124880528
Korvet
2005-08-24 14:48
2005.09.18
Где скачать "Ras"


2-1123826523
syte_ser78
2005-08-12 10:02
2005.09.18
Почему и как исправить?


3-1123018005
makvell
2005-08-03 01:26
2005.09.18
Как записать RTF в поле таблицы Paradox?


14-1124710103
КК
2005-08-22 15:28
2005.09.18
SHS1.EXE - что это


1-1124737437
Phantomouse
2005-08-22 23:03
2005.09.18
TWebBrowser и Flash




   Наверх