Конструирование элементов управления
ActiveX
В этом разделе будут рассмотрены сходства и различия между элементами управления ActiveX, компонентами ActiveX и стандартными проектами. Перед тем как приступить к конструированию элементов управления ActiveX, будет показано, как они связаны с другими типами проектов. Эта информация поможет составить цельную картину и собрать вместе все части последующих разделов.
Стандартное приложение содержит главную форму и несколько вспомогательных. Вспомогательные формы обычно поддерживают главную, получая данные, вводимые пользователем, которые обрабатываются кодом главной формы. Можно считать элемент управления ActiveX главной формой, а окно его свойств и страницы свойств — вспомогательными формами.
Приложение взаимодействует с пользователем через свой интерфейс. Проектировщик приложения решает, как приложение будет вести диалог с пользователем, и пользователю приходится следовать этим правилам. Подобное же происходит и с элементами управления ActiveX. Они предоставляют строго определенный интерфейс, который содержит свойства и методы. Это единственный способ управления элементом ActiveX. Так же, как и пользователь приложения не может модифицировать его исходный код, так и программист может получить доступ к элементу только через его интерфейс.
В предыдущей главе вы познакомились с вопросами реализации интерфейсов, состоящих из методов и свойств, и с инициированием событий в компонентах ActiveX. В этой главе мы узнаем, как строить интерфейс элемента управления ActiveX. В то время как компонент ActiveX предоставляет малое число свойств и методов, элемент управления должен обладать большим набором свойств. Когда разработчик помещает элемент управления на свою форму, он ожидает увидеть свойства, обычные для всех элементов управления, видимых во время выполнения (свойства для управления размером, цветом, положением, шрифтом и т.д.). Разработчик также ожидает возможности программировать все стандартные и уникальные для этого элемента управления события.
Конструирование элементов управления ActiveX похоже на конструирование формы. При этом элементы располагаются на объекте, называемом UserControl, который является формой элемента управления. Он предусматривает примерно те же методы, что и стандартная форма, например, методы Print, Line и др.
Формы приложения являются окнами, которые находятся на рабочем столе при запущенном приложении. При конструировании приложения можно переупорядочивать элементы управления на форме и программировать их реакцию на действия пользователя. Элементы управления ActiveX — также окна, но они не могут существовать сами по себе и не могут быть расположены на рабочем столе, а только на формах.
Главное отличие между обычными приложениями и элементами управления заключается в том, что элементы управления могут работать в двух разных режимах. Когда разработчик помещает элемент управления на форму, он запускается. При изменении свойства элемента управления с помощью окна свойств с элементом что-то происходит. Это означает, что код элемента управления работает даже тогда, когда проект, в котором он используется, находится на стадии конструирования. Когда разработчик запускает приложение, элемент также работает. Но при этом элемент управления должен обладать способностью определять, в каком из режимов находится проект, и соответственно себя вести.
Рассмотрим пример элемента управления TextBox в режиме конструирования. У него есть свойство Text со значением Textl. Если установить его свойство MultiLine в значение True, а свойство Scrollbar — в Vertical, то к элементу автоматически будет присоединена вертикальная полоса прокрутки. Значит, эти свойства имеют некоторые значения в режиме конструирования. Запустите приложение и введите некоторый текст в элемент TextBox. Если проект снова вернуть в режим конструирования, свойство Text опять примет значение Textl. Элемент управления сохраняет информацию о свойствах при переключении из режима конструирования в режим выполнения, а при переключении обратно - восстанавливает информацию.
Этот двойной режим — нечто новое для программистов на
Visual Basic, и следует к этому привыкнуть. При конструировании собственного элемента управления ActiveX нужно также переключаться между функциями разработчика элементов управления ActiveX (программист, который конструирует элемент) и разработчика приложения (программист, который использует этот элемент).
Одним словом, элемент управления ActiveX — это приложение с видимым пользовательским интерфейсом. Видимый пользовательский интерфейс - это то, что видит разработчик, когда помещает экземпляр элемента управления на форму, которая, в свою очередь, также есть то, что видит разработчик при запуске проекта. Разработчик может манипулировать элементом управления через свойства, предоставляемые элементом (во время конструирования) и методами (во время выполнения). Свойства и методы вместе образуют невидимый интерфейс. Таким образом, разработчик элементов управления ActiveX конструирует видимый интерфейс на объекте UserControl, который почти идентичен объекту формы. Этот процесс похож на создание обычного приложения. Конструирование же невидимого интерфейса подобно конструированию модуля класса.