- •Часть 2
- •Тема 4. Com-технологии
- •Создание com-компонентов
- •2.1. Создание ActiveX – элементов
- •Разработка ActiveX - элемента
- •Создание страниц свойств ActiveX – элемента
- •2.2. Создание ActiveX – компонентов кода
- •2.3. Создание dhtml – приложений
- •2.4. Разработка ActiveX-документа
- •Преобразование стандартного проекта в активный документ
2.1. Создание ActiveX – элементов
ActiveX-элемент – это COM компонент, предоставляющий пользовательский интерфейс в виде элемента управления. По-другому его называют нестандартным элементом управления. По аналогии со встроенными элементами управления VB, ActiveX-элемент размещается при необходимости на панели инструментов, имеет для настройки окно свойств и может использоваться при компоновке форм и диалоговых окон. Вместе с VB поставляются несколько ActiveX-элементов, которые можно разместить на панели инструментов. Для этого надо:
Из контекстного меню панели инструментов вызвать диалог Components
На вкладке Controls установить флажок против нужного компонента (например, против Windows Media Player).
Применение ActiveX-элемента становится возможным после размещения его в какой-нибудь контейнер, например, на форму.
ActiveX-элемент конструируется из объекта UserControl. Как и формы VB, объект UserControl принимает любой стандартный элемент управления кроме OLE-контейнера.
Файлы, связанные с UserControl. VB хранит нестандартные элементы управления в текстовых файлах с расширением .ctl ( от слова control), в которых содержится исходный код и значения свойств объекта UserControl и составляющий его элементов. Если UserControl содержит графические компоненты, то они сохраняются в файлах с тем же именем, но с расширением .ctx (аналогично тому, как хранятся графические компоненты формы в файлах с расширением .frx). При компиляции ctl-файл преобразуется в файл с расширением .ocx.
Рассмотрим пример создания нестандартного элемента управления.
Разработка ActiveX - элемента
Задача. Создать нестандартный элемент управления, отображающий текущие дату и время.
В новом проекте Visual Basic выбрать шаблон ActiveXControl
Разместить на UserControl элементы Lable и Timer
В меню Project Project1.Properties изменить имя проекта на MyTimer
Присвоить свойству Name объекта UserControl значение ctlTimer, свойству Name объекта Lable - lblDataAndTime, свойству ToolboxBitmap – рисунок с часами.
Присвоить свойствам объекта Lable следующие значения: Font = 18, Aligment =2.
Присвоить свойству Interval объекта Timer значение, равное 1000
В обработке события для объекта Timer создать код:
Private Sub Timer1_Timer()
lblDataAndTimer.Caption = Now() ‘функция, возвращающая текущие дату и время.
End Sub
Сохранить ActiveX-элемент.
Так как элемент управления работает только при размещении в контейнере, то тестировать созданный ActiveX-элемент следует в стандартном проекте. Без размещения на форме стандартного проекта UserControl будет открываться в автономном режиме приложения Internet Explorer.
Добавить в данный проект стандартный проект.
Закрыть проект с UserControl (элемент появится на панели инструментов)
Разместить ActiveX-элемент на форме стандартного проекта.
Отредактировать элемент управления так, чтобы он корректно отображался и работал.
Форма стандартного проекта будет иметь вид (рис. 21):
Рис.21
Для того чтобы созданный ActiveX-элемент можно было использовать в других проектах, его необходимо скомпилировать в ocx-файл. Для этого надо выполнить следующие действия.
Выделить в окне проекта проект MyTimer с UserControl
Выполнить команду Файл ®Создать MyTimer.ocx
Сохранить скомпилированный файл и закрыть проект.
После этого нестандартный элемент управления MyTimer можно использовать в других проектах.
Создать новый стандартный проект.
Из контекстного меню панели инструментов вызвать диалог Components
На вкладке Controls нажать кнопку просмотра и указать файл MyTimer.ocx
Закрыть диалог (на панели инструментов появится значок нестандартного элемента управления)
Теперь ActiveX-элемент MyTimer можно использовать в стандартном проекте, добавляя его на формы. Добавленный элемент представляет собой экземпляр своего класса. Он уничтожается при закрытии формы, запуске проекта. То есть экземпляр класса используется только на этапе разработки. Когда проект запускается, создается экземпляр элемента, используемый только в период выполнения, и он уничтожается при выгрузке формы из памяти. Поскольку экземпляры элементов управления постоянно создаются и уничтожаются, то при разработке элемента управления следует включить код, сохраняющий и возвращающий значения его свойств. Для этого используется методы WriteProperty и ReadProperty объекта PropertyBag.
