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

Вниз

Для чего используется функция RegisterPropertyMapper   Найти похожие ветки 

 
Priest   (2005-05-24 14:38) [0]

Нашён в исходниках Дельфи.....


 
malkolinge ©   (2005-05-24 18:38) [1]

Редактор свойств кажется для множеств


 
Юрий Зотов ©   (2005-05-24 20:42) [2]

> malkolinge ©   (24.05.05 18:38) [1]

Жень, ну елы-палы... :о)

> Priest

Есть свойство типа TA. Как зарегистрировать его редактор TAProperty для всех классов и независимо от фактического имени свойства? Элементарно, скажете Вы - и будете правы:
RegisterPropertyEditor(TypeInfo(TA), nil, "", TAProperty);

ОК, усложняем задачу. Есть свойства типов TA, TB, TC... и еще 200 штук. Все они используют один и тот же редактор. Как зарегистрировать этот редактор для всех этих свойств, всех классов и независимо от фактического имени свойства?

Ответ - написать приведенную выше строку 203 раза, меняя только параметр TypeInfo. Можно? Можно. Но некрасиво как-то, согласитесь. А если таких свойств не 203, а 203 тысячи? Что, так и писать одно и то же 203 тысячи раз?

Вот для подобных вещей и служит RegisterPropertyMapper. Например, она позволяет нам сделать свой редактор всех событий и буквально несколькими строками кода зарегистрировать его для всех событий всех классов.

Когда меняется Selection дизайнера, среда обновляет Object Inspector. При этом идет проход по всем отображаемым в нем свойствам и для каждого из них создается экзмпляр редактора. И, создавая каждый редактор, IDE смотрит, зарегистрирована ли для данного свойства callback-функция типа TPropertyMapperFunc (вот эту регистрацию и делает RegisterPropertyMapper). Если да - то она вызывается и создается экземпляр редактора того класса, который она вернула (конечно, при условии, что для данного свойства не зарегистрирован персональный редактор - иначе создается именно он).



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

Форум: "Компоненты";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.033 c
14-1133210265
DillerXX
2005-11-28 23:37
2005.12.18
far


2-1133178578
alexproger
2005-11-28 14:49
2005.12.18
Проблема с контруктором


14-1133179570
Fl@sh
2005-11-28 15:06
2005.12.18
Выбор джойстика


14-1132920637
Patient
2005-11-25 15:10
2005.12.18
Насморк - это хорошо или плохо?


1-1132905488
remlin
2005-11-25 10:58
2005.12.18
Программное выделение ячеек StringGrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский