Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];

Вниз

Использование найденого свойства компонента   Найти похожие ветки 

 
MikeZ   (2002-07-27 19:14) [0]

Функция вроде работает, но опять проблемы...
Этой функцией я определяю, есть ли свойства 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:32) [1]

См. GetStrProp или GetPropValue в модуле TypInfo.

А если хотите, чтобы подобных вопросов больше не возникало, советую прочитать статью об использовании RTTI на "Королевстве". А также в журнале "Программист" за этот год (вот номер не скажу, не помню, попробуйте поискать на www.programme.ru).


 
Холмс   (2002-07-27 19:33) [2]

Для получения значения 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)



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

Форум: "Основная";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.007 c
1-24121
Александр
2002-07-26 16:35
2002.08.08
Форма


6-24157
Sherbacov
2002-05-29 15:39
2002.08.08
NMFTP1.Download (Все файлы)


3-23877
AngeL B.
2002-07-17 12:12
2002.08.08
Как сохранить доступ к записи с Автоинкрементными полями


1-24010
anod
2002-07-28 16:32
2002.08.08
TTrackBar


3-23900
Dmitrey
2002-07-17 12:28
2002.08.08
Сжатие и восстановление БД Access на Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский