Форум: "Основная";
Текущий архив: 2003.07.14;
Скачать: [xml.tar.bz2];
ВнизКак обратиться к свойству, зная его название? Найти похожие ветки
← →
Пубертанец (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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.012 c