Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Найти свойство по имени


Ш-К ©   (2004-06-18 09:48:00) 

У меня есть св-во от TPersistent. Как мне получить его, если я знаю только имя?

Что-то типа:
function FindObjectProp(AInstance: TPersistent; AFindName: string): TPersistent;


DieHard   (2004-06-18 13:16:00) [1]

Что за имя такое у свойства 'Columns[2]'?
Что в объявлении класса написано? 'Columns'


Amoeba   (2004-06-18 12:33:00) [2]


> Ш-К   (18.06.04 12:25) [5]
> Тогда поднимаю вопрос.
> Если свойство не Published, что - кирдык?

Ага! Именно что кирдык. В RTTI есть информация только о Published свойствах.


Ш-К   (2004-06-18 12:25:00) [3]

Тогда поднимаю вопрос.
Если свойство не Published, что - кирдык?

SetPropValue(ListView1.Columns[2], 'Caption', 'aaaaa');
Выполняется же и с паблик св-вом. А мне-то надо всего чтобы:
SetPropValue('ListView1.Columns[2]', 'Caption', 'aaaaa');


Amoeba   (2004-06-18 11:58:00) [4]

С-во должно быть Published и класс должен быть зарегистрирован.
Подобный вопрос рассматривался в форуме на днях.


Ш-К   (2004-06-18 10:45:00) [5]

Делаю следущее:

 ListView1.Columns.Clear;
 ListView1.ViewStyle := vsReport;
 ListView1.Columns.Add.Caption := '11111';
 ListView1.Columns.Add.Caption := '22222';
 ListView1.Columns.Add.Caption := '33333';
 TypInfo.SetPropValue(ListView1.Columns[2],
   'Caption', 'aaaaa');

Все работает.
Хочу найти св-во Columns[2] по имени:

procedure TForm1.Button3Click(Sender: TObject);
var
 Propinfo: PPropInfo;
 AInstance: TPersistent;
begin
 Propinfo := GetPropInfo(ListView1.ClassInfo, 'Columns[2]');
 if Propinfo <> nil then
   AInstance := TPersistent(GetOrdProp(ListView1, PropInfo));
 ....
end;

Не могу найти - Propinfo всегда nil.
Как получить PPropinfo от 'Columns[2]'?
Собственно, мне надо устанавливать св-ва для TCollectionItem.


Гаврила   (2004-06-18 09:52:00) [6]

только для Published свойств
unit TypInfo;
function GetStrProp(Instance: TObject; const PropName: string): string;
{для строкового свойства, для других типов - функции там же }


Skier   (2004-06-18 09:50:00) [7]

TypInfo.pas


Наверх

Титульная страница Поиск, карта сайта Написать письмо