UserControl
Теперь уже есть функционирующий элемент управления, при создании которого не было особых проблем, поскольку Visual Basic создал его скелет. Элемент управления интегрирован в среду разработки, его пиктограмма появилась на панели элементов управления, и он может быть уже использован, как обычный элемент управления. Он даже имеет свое собственное окно свойств. Теперь настало время сделать элемент управления реально работающим. Необходимо добавить код, уникальный для данного элемента управления, который рисует надпись.
Код вывода на экран видимого интерфейса элемента управления обычно помещается в событие Paint. Visual Basic инициирует это событие каждый раз, когда элемент управления должен быть перерисован. Таким образом, нужно добавить код, перерисовывающий элемент управления. Сейчас давайте скопируем процедуру DrawCaption(), разработанную ранее в этой главе, в элемент управления. Откройте окно объекта UserControl, в котором находится код элемента управления, и вставьте туда процедуру DrawCaption(). В обработчике события Paint объекта UserControl вставьте следующую строку, которая вызывает процедуру DrawCaptionQ:
DrawSubroutine
Этот вызов в событии Paint гарантирует, что каждый раз, когда разработчик изменяет размеры элемента управления, или при обновлении формы, весь объект UserControl будет также перерисован.
Процедура DrawCaption() рисует на объекте Form. Объект UserControl фактически идентичен объекту Form, поэтому может использовать те же самые методы рисования. Откройте окно кода объекта UserControl, вставьте код подпрограммы DrawCaption() и замените все вхождения "Me" на "UserControl", чтобы процедура рисовала на объекте UserControl.
Подпрограмма DrawCaption() должна также вызываться для перерисовки надписи всякий раз, когда изменяется какое-либо из специальных свойств элемента управления. Свойствами, которые влияют на вид выводимого текста наряду со стандартными свойствами Picture и BackColor, являются Caption, TextAlignment и Effect. Вставьте в коды этих свойств элемента управления процедуру Property Let со строкой, вызывающей событие UserControl_Paint. Доработанная процедура Property Let для свойства Effect показана ниже (подчеркнута вставленная строка).