Главная страница
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.039 c
2-1123752758
Русланка
2005-08-11 13:32
2005.09.18
Как преобразовать число потери нулей впереди


14-1124946500
Priest
2005-08-25 09:08
2005.09.18
Безопасность макросов в экселе


14-1124449126
DiamondShark
2005-08-19 14:58
2005.09.18
Вот такая у нас была гроза


2-1123573788
rolex
2005-08-09 11:49
2005.09.18
В событии Form1 onShow пишу Form2.ShowModal, но Form1 не показыва


2-1123725034
Проэкт
2005-08-11 05:50
2005.09.18
Как называется такая конструкция?