Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 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.01 c
1-1125267132
vadim1
2005-08-29 02:12
2005.09.18
TReplica example


14-1124892065
cyborg
2005-08-24 18:01
2005.09.18
Почему сетевой доступ с XP Pro на XP Home долго открывается?


1-1124739442
Michael5
2005-08-22 23:37
2005.09.18
После копирования-вставки компонента он начинает криво работать!


3-1123565477
Shopot
2005-08-09 09:31
2005.09.18
ADO Query и SQL Server. Проблемы с памятью.


3-1123491610
Rentgen
2005-08-08 13:00
2005.09.18
Как пробежаться по выделеным записям в Table?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский