Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работа с RTTI информацией

46K
16 сентября 2010 года
nILruM
30 / / 10.02.2010
 
Код:
Typinfo::TTypeKinds SupportKinds;
SupportKinds << tkUnknown << tkInteger << tkChar << tkEnumeration <<
tkFloat <<  tkString << tkSet << tkClass  << tkWChar << tkLString <<   //  << tkMethod << tkInterface << tkInt64<< tkDynArray
tkWString << tkVariant << tkArray << tkRecord ;

Typinfo::TPropList pList;

int nPropCount = GetPropList((Typinfo::PTypeInfo)(Comp->ClassInfo()),SupportKinds,((Typinfo::PPropList)(&pList)));

В данном коде я получаю все __publisehed свойства класса и их типы, после чего для свойств с типами String и bool создаю на форме компоненты TEdit и TCheckBox...
А вот как сделать так чтобы при заполнении данных компонентов автоматически заполнялись и их свойства в объекте Comp не соображу..
Может кто то уже реализовывал подобное?
246
16 сентября 2010 года
GIZMO
1.8K / / 30.07.2004
Цитата: nILruM
В данном коде я получаю все __publisehed свойства класса и их типы, после чего для свойств с типами String и bool создаю на форме компоненты TEdit и TCheckBox...
А вот как сделать так чтобы при заполнении данных компонентов автоматически заполнялись и их свойства в объекте Comp не соображу..
Может кто то уже реализовывал подобное?


 
Код:
SetPropValue()
46K
17 сентября 2010 года
nILruM
30 / / 10.02.2010
Спасибо все оказалось проще чем я думал..))
46K
27 сентября 2010 года
nILruM
30 / / 10.02.2010
Еще вопрос.. Функция GetEnumName возвращает название перечисляемого типа enum по указателю на запись TTypeInfo и порядковому номеру значения. А как получить количество значений в enum, что бы можно было организовать цикл по всем названиям значений?

Что то вроде этого:
 
Код:
for(int i=0;i<CountEnum;i++)
   AComboBox->Items->Add(GetEnumName(EnumType,i));

Как узнать CountEnum?
246
27 сентября 2010 года
GIZMO
1.8K / / 30.07.2004
Цитата: nILruM
Еще вопрос.. Функция GetEnumName возвращает название перечисляемого типа enum по указателю на запись TTypeInfo и порядковому номеру значения. А как получить количество значений в enum, что бы можно было организовать цикл по всем названиям значений?

Что то вроде этого:
 
Код:
for(int i=0;i<CountEnum;i++)
   AComboBox->Items->Add(GetEnumName(EnumType,i));

Как узнать CountEnum?


см. GetTypeData(), PTypeData, PTypeData::MinValue, PTypeData::MaxValue

46K
27 сентября 2010 года
nILruM
30 / / 10.02.2010
Спасибо сделал)
46K
27 сентября 2010 года
nILruM
30 / / 10.02.2010
А насколько эти функции совместимы при переходе на другую версию Builder'а? Как я знаю в BDS2006 это недокументированные функции..
246
27 сентября 2010 года
GIZMO
1.8K / / 30.07.2004
Цитата: nILruM
А насколько эти функции совместимы при переходе на другую версию Builder'а? Как я знаю в BDS2006 это недокументированные функции..


хз, надо пробовать... компиллятор покажет

6
28 сентября 2010 года
George
4.1K / / 05.01.2007
Цитата: nILruM
А насколько эти функции совместимы при переходе на другую версию Builder'а? Как я знаю в BDS2006 это недокументированные функции..

В 2010-ой версии RTTI вроде прокачивали.

46K
15 ноября 2010 года
nILruM
30 / / 10.02.2010
Появился еще один вопрос.. не стал создавать новую тему решил написать тут...

Имеется класс у которого в __published секции указано свойство возвращающее указатель на класс... что то типо этого.

 
Код:
__published:
   
    __property TPlDiagr* Diagr={read=FDiagr,write=FDiagr};


когда пытаюсь присвоить значение

 
Код:
TPlDiagr* Buf=new TPlDiagr(this);
SetPropValue(FindComp,"Diagr",Buf);


выдает ошибку Invalid property type: TPlDiagr
Класс TPlDiagr объявлен как

 
Код:
class DELPHICLASS TPlDiagr;


Пробовал сначала приводить к Variant все равно не помогает..
Из-за чего может быть ошибка?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог