Доработка существующих элементов управления
Имеется возможность разрабатывать пользовательские элементы управления ActiveX, которые расширяют возможности существующих элементов управления. Вряд ли найдется хоть один пользователь, который не хотел бы добавить "новые" возможности к существующим элементам управления. Многие программисты добавляют новые возможности к стандартным элементам управления ActiveX с помощью соответствующего кода в их приложении. Например, недостатком элемента управления ComboBoxt является то, что любые новые значения, добавляемые в поле ввода, не добавляются в список значений. Другими словами, элемент управления ComboBox позволяет ввести новое значение, но это значение автоматически не добавляется к списку значений. Многие программисты перехватывают нажатие клавиши ENTER в элементе управления ComboBox и вручную добавляют новые значения в список элемента управления.
Уверен, что каждый программист хотел бы добавить свое собственное небольшое усовершенствование к стандартному элементу управления VB. В этом разделе рассматривается, как доработать существующие элементы управления ActiveX и оформить их в виде заказных (специальных) элементов управления. Очевидно, что нельзя изменить базовые функции существующего элемента управления, поскольку нет никакого доступа к их коду. Но можно сделать очень многое, добавляя некоторый код и оформляя существующий элемент управления вместе с добавленным кодом как новый элемент управления.
В этом разделе будет показано, как можно доработать элемент управления TextBox. Заказной элемент управления CTextBox представляет собой обычный элемент TextBox, который изменяет свое поведение в зависимости от того, принимает ли он обязательное или необязательное поле.
На компакт-диске, в папке этой главы, можно найти проект CLDesign, который демонстрирует, как в режиме конструирования можно добавить к элементу управления дополнительные возможности для режима выполнения. Вы когда-либо пробовали задать значение элемента управления Scrollbar в режиме конструирования, двигая его бегунок? Большинство пробовали это, и результатом было перемещение всего элемента управления на форме. Значение элемента управления ScrollBar не может быть установлено визуально в режиме конструирования. Интересное расширение элемента управления ScrollBar может обеспечить механизм, который позволит разработчику определять, должен ли элемент управления перемещаться или должен функционировать так, как и во время выполнения, даже в том случае, если он находится в режиме конструирования. Проект CLDesign достаточно прост, и поэтому не будет обсуждаться в этой главе. Все то, что нужно знать для того, чтобы заставить элемент управления вести себя в режиме конструирования так же, как и в режиме выполнения - это свойство EditAtDesignTime объекта UserControl. Если установить это свойство равным True, команда будет добавлена к контекстному меню. Выполните щелчок правой кнопкой на элементе управления тестовой формы и выберите команду Edit. Элемент управления будет вести себя так, как будто он находится в режиме выполнения. Например, если он содержит элемент управления Scrollbar, то можно изменить значение элемента управления с помощью мыши. Элемент управления CLDesign, показанный на форме, изображенной на рис. 16.17, позволяет разработчику выбирать начальный цвет в режиме конструирования с помощью трех полос прокрутки.

Рис. 16.17. Проект CLDesign в режиме конструирования приложения ведет себя так же, как и в режиме выполнения