![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Использование найденого свойства компонента [D3, D4, D5, Win95/98]
MikeZ © (2002-07-27 19:14:00)Функция вроде работает, но опять проблемы...
Этой функцией я определяю, есть ли свойства Captionи/или Hint:
Function HasPublishedProperty(Obj: TObject; PropName: String): Boolean;
Begin
Result := GetPropInfo(Obj.ClassInfo, PropName) <> Nil;
End;
Определил - есть. Теперь надо получить их значения. Я делаю это так:
ACaption, AHint : String;
Cm : TComponent //или TObject поставить? Но все равно ошибка...
.....
If HasPublishedProperty(Cm, "Caption") Then
ACaption := Cm.Caption;
If HasPublishedProperty(Cm, "Hint") Then
AHint := Cm.Hint;
Только Delphi ошибку выдает, т.к. Cm - это TComponent, а у него свойств Caption и Hint нет. Вот и вопрос - как считать значение свойства, которое реально есть, "но его вроде нет" (C)
Холмс (2002-07-27 19:33:00) [1]Для получения значения published св-ва независимо от типа объекта есть специальные ф-и (модуль typinfo)
function GetPropValue(Instance: TObject; const PropName: string;
PreferStrings: Boolean = True): Variant; // Почти для всех типов, кроме обработчиков событий
function GetObjectProp(Instance: TObject; PropInfo: PPropInfo;
MinClass: TClass = nil): TObject; overload; // Для объектных св-в
function GetMethodProp(Instance: TObject; PropInfo: PPropInfo): TMethod; overload; // Только для обработчиков событий (TMethod)
Юрий Зотов (2002-07-27 19:32:00) [2]См. GetStrProp или GetPropValue в модуле TypInfo.
А если хотите, чтобы подобных вопросов больше не возникало, советую прочитать статью об использовании RTTI на "Королевстве". А также в журнале "Программист" за этот год (вот номер не скажу, не помню, попробуйте поискать на www.programme.ru).