Главная страница
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.049 c
8-1121170462
nstur
2005-07-12 16:14
2005.12.18
Выполнить Stretch jpg файла


2-1133527684
Не молодой
2005-12-02 15:48
2005.12.18
Удаление файла


4-1129899892
Семен Сорокин
2005-10-21 17:04
2005.12.18
Взять правильную версию переименованого EXE-файла?


14-1132823910
ОноТебеНадо
2005-11-24 12:18
2005.12.18
Покупка программы


14-1132075768
bogdan
2005-11-15 20:29
2005.12.18
запуск из коммандной строки