Главная страница
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.061 c
14-1132905454
wHammer
2005-11-25 10:57
2005.12.18
Скомпилированный .exe файл


2-1133360990
integery
2005-11-30 17:29
2005.12.18
помогите з запросом


2-1133790627
adamov_a
2005-12-05 16:50
2005.12.18
StringGrid - как получить содержимое выделенных ячеек


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


2-1133789599
veres
2005-12-05 16:33
2005.12.18
Упаковка dbf