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

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

Как программно проверить, есть ли у объекта свойство?


Peter Gluhiy ©   (2002-10-28 12:15:00) 

Например, есть ли у наследника TDataSet свойство IndexFieldNames?
Хочу сделать свой DBGrid универсальным.
Сейчас для переключения индекса по клику на Title, сделано, примерно так:
if DataSource.DataSet is TIBTable then
TIBTable(DataSource.DataSet).IndexFieldNames:=TmpIndexFieldNames;

А мне очень нужно, чтоб с любым TTable работало!

В хелпе почитал про TObject.FieldAddress и написал:
p := Table1.FieldAddress("IndexFieldNames");
Почему-то - р=nil :(


Peter Gluhiy   (2002-10-28 13:05:00) [1]

Спасибо! Принцип понял. Дальше постараюсь разобраться.


Игорь Шевченко   (2002-10-28 12:42:00) [2]

uses TypInfo;

function HSGetStrProp(Obj: TObject; const PropName : String): String;
var
PropInfo: PPropInfo;
begin
Result := "";
if Assigned(Obj) then begin
PropInfo:= Typinfo.GetPropInfo(Obj.ClassInfo, PropName);
if Assigned(PropInfo) then
Result:= GetStrProp(Obj, PropInfo);
end;
end;


Наверх

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