414 Глава 7

if (Key == VK_RETURN)

FindNextControl((TWinControl *)Sender, true, true, false)->
SetFocus() ;

Эти операторы, о которых подробнее рассказано было в разделе 4.3.1.2, заме-|
няют все символы, кроме цифр, нулевым символом, который не будет отображать- j
ся в окне, и при нажатии Enter передадут фокус очередному компоненту.

Измените также текст в окне (свойство Text) на «О».

Пусть мы хотим сохранить шаблон этого компонента в библиотеке визуаль-|
ных компонентов, чтобы в дальнейшем включать подобный компонент в другие j
свои приложения. Для этого надо, выделив предварительно данный компонент,!
выполнить команду Component Create Component Template (создать шаблон компо-1
нента). В открывшемся диалоговом окне Component Template Infomation (рис. 7.1),
вы можете задать имя компонента (в верхнем окне редактирования), которое будет
появляться на ярлычке подсказки, если пользователь задержит курсор мыши над
пиктограммой этого компонента в библиотеке визуальных компонентов. На |
рис. 7.1 это имя — EditNum. В выпадающем списке в средней части окна вы мож'
те выбрать страницу библиотеки визуальных компонентов, на которой вы хоти"
разместить пиктограмму компонента. Вы можете также указать новое имя (Му-
Templates на рис. 7.1) и тогда в библиотеке визуальных компонентов будет созда-
на новая страница с этим именем. Можно также изменить пиктограмму данног''
компонента (кнопка Change). Пиктограмма, если вы ее хотите сменить, должг
быть подготовлена заранее в виде файла .bmp размером 24 на 24. Как это мож;:

сделать рассказано в разделе 5.1.2.2 главы 5. На рис. 7.1 как раз загружается пи;

тограмма, создание которой описано в разделе 5.1.2.2. После выполнения •вы.
описанных операций щелкните на кнопке ОК.

Рис. 7.1

Окно ввода информации о новом шаблоне компонента

| Component Template Infoimation

l^offiponeni |жпе: EdUNum
fatette page;    JMyTemplales••_

Palette laxr      fSJ 5" Change""']

OK         Cancel   |     Help

Ваш шаблон появится в библиотеке. Вы можете убедиться в этом, посмотр!
на указанную вами страницу библиотеки.

Теперь попробуйте создать новое приложение и перенести на форму созданнъ:

вами компонент. Вы увидите, что он появится на форме в том виде, в котором в
его записали в библиотеку. Посмотрев на страницу событий этого компонента
Инспекторе Объектов, вы увидите, что на ней указаны обработчики событий Оп-
KeyDown и OnKeyPress, а в процедурах этих обработчиков уже записаны те опер;,
торы, которые вы написали перед созданием шаблона.

Правда, у такого подхода имеется определенный недостаток. Если вы разме'
тите на форме несколько созданных вами компонентов, то для каждого из них
текст модуля включатся соответствующие обработчики событий. Это явная изб;,
точность, поскольку написанные вами операторы обработки универсальны и хв,
тило бы одного обработчика события OnKeyDown и одного обработчика событг
OnKeyPress на все размещенные компоненты. Чтобы избежать избыточности я:

лательно будет оставить в модуле по одному обработчику каждого вида, осталыи/
удалить из текста, а во всех окнах редактирования сослаться на оставшиеся обр
ботчики.

Таким образом вы можете создать себе немало шаблонов компонентов, кот
рые кочуют из приложения в приложение. Аналогичным образом можно создава :

шаблоны не только отдельных компонентов, но и групп компонентов. Например