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

Вниз

Как обратиться к свойству, зная его название?   Найти похожие ветки 

 
Пубертанец   (2003-07-01 09:19) [0]

Т.е. что-то типа GetPropValue(Obj, "Number").

Пытался подключить TypInfo.pas и взял оттуда функцию GetPropValue
(GetPropValue(self, "Number")), но вырубается с исключением, что не найдено свойство Number, хотя такое свойство у меня в классе есть.


 
MBo ©   (2003-07-01 09:33) [1]

А оно у тебя published?

вот это работает:

Caption:=GetPropValue(Self,"Width");


 
Пубертанец   (2003-07-01 09:37) [2]

Нет, оно не published. А как тогда мне обратиться к нему, если оно не published? (на всякий случай, тип Number - string)


 
MBo ©   (2003-07-01 09:42) [3]

RTTI-информация генерируется только для published.
А что за задача?
Нужно ли применение RTTI?


 
Пубертанец   (2003-07-01 09:53) [4]

Задача такая: нужно получить значения всех свойств класса и потом манипулировать ими (например, вывести в Listbox)


 
MBo ©   (2003-07-01 10:05) [5]

Эта задача решаема для published.


 
Пубертанец   (2003-07-01 10:19) [6]

Хотя бы так. Но почему-то этот код вываливается с ошибкой "property Number not found".

TReestr = class
private
FNumber: string;
published
property Number: string read FNumber write FNumber;
end;


Caption:=GetPropValue(self, "Number");


 
Poirot ©   (2003-07-01 10:23) [7]

self, форма в вашем случае или то где вы её (функ) юзаете...
вам надо обж типа TReestr вместо self указать!


 
Пубертанец   (2003-07-01 10:28) [8]

Нет, у меня класс расположен в отдельном модуле, и даже подсказка говорит, что Self - это TReestr


 
Zacho ©   (2003-07-01 10:34) [9]


> Пубертанец (01.07.03 10:28)

Т.е. строка Caption:=GetPropValue(self, "Number");
находится в каком-либо методе класса TReestr ? Точно ?


 
NDeu ©   (2003-07-01 10:39) [10]


> Пубертанец (01.07.03 10:28)
> Нет, у меня класс расположен в отдельном модуле, и даже
> подсказка говорит, что Self - это TReestr

Тогда

> Caption:=GetPropValue(self, "Number");

Caption чей?


 
Пубертанец   (2003-07-01 10:41) [11]

Yes


 
Poirot ©   (2003-07-01 10:44) [12]

Давай код! Тут явно что-то не чисто!!!
Если ты говоришь, что self is TReestr, to где у него свойство Caption?


 
Poirot ©   (2003-07-01 10:45) [13]


> Пубертанец (01.07.03 10:41)
> Yes

что yes?


 
Пубертанец   (2003-07-01 10:48) [14]

Ой, yes - это NDeu. А код такой:

TReestr = class
private
FNumber: string;
public
constructor Create;
published
property Number: string read FNumber write FNumber;
end;

constructor TReestr.Create;
var Caption: string;
begin
inherited Create;
Number:="343";
Caption:=GetPropValue(Self, "Number");
showmessage(Caption);
end;


 
Poirot ©   (2003-07-01 11:08) [15]

что-то мне кажктся, что для наследника TObject не пашет эта фигня!!!


 
Пубертанец   (2003-07-01 11:23) [16]

*Б ТВОЮ МАТЬ!!!
Это только для TComponent!!!
Ох, ё-мое. Ну, спасибо. Буду наследовать от него.
Кстати, а как получить список свойств?


 
Poirot ©   (2003-07-01 11:26) [17]


> *Б ТВОЮ МАТЬ!!!

надеюсь это не мне %)

Исследуй модуль TypInfo.pas!


 
Zacho ©   (2003-07-01 11:37) [18]


> Пубертанец (01.07.03 11:23)

Насколько я понимаю, для TPersistent


 
icWasya ©   (2003-07-01 13:15) [19]

во нашел!!!
{$TYPEINFO ON}// или {$M+}
type TReestr = class
private
FNumber: string;
public
constructor Create;
published
property Number: string read FNumber write FNumber;
end;
{$TYPEINFO OFF}// или {$M-} см $M+F1

constructor TReestr.Create;
var Caption: string;
begin
inherited Create;
Number:="343";
Caption:=GetPropValue(Self, "Number");
showmessage(Caption);
end;


и всё заработает



Страницы: 1 вся ветка

Текущий архив: 2003.07.14;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.012 c
4-44951
HollowMan
2003-05-12 15:23
2003.07.14
Как отследить положение мыши находящейся вне области программы?


6-44788
snoup
2003-05-05 23:50
2003.07.14
Как в TWebBrowser поменять кодировку?


3-44614
Evgenij Kardash
2003-06-20 18:39
2003.07.14
Число записей в таблице MSAccess


3-44547
kati
2003-06-19 16:46
2003.07.14
Стек переполнен


14-44859
Marser
2003-06-26 19:54
2003.07.14
Как искупать кошку: