Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.18;
Скачать: CL | DM;

Вниз

Для чего используется функция 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.04 c
14-1133014623
Pavel__
2005-11-26 17:17
2005.12.18
Уход за жд


4-1129707209
kolos_rus
2005-10-19 11:33
2005.12.18
Блокировка клавиатуры и мыши


2-1133434190
JTAG
2005-12-01 13:49
2005.12.18
Коллеги подскажите как создать форму


2-1133694436
dikiy
2005-12-04 14:07
2005.12.18
hook


2-1133718346
333
2005-12-04 20:45
2005.12.18
PageControl