Visual Basic: создание элементов управления ActiveX

Visual Basic: создание элементов управления ActiveX

Помимо использования встроенных элементов управления Visual Basic, вы также можете использовать элементы управления, созданные другими людьми. Это может значительно облегчить вашу работу. Но вы также можете создавать свои собственные элементы управления ActiveX для использования в своих приложениях или для предоставления другим людям. С одной стороны, это значительно расширит ваш рынок, тем более что элементы управления ActiveX теоретически не зависят от платформы. Это означает, что элементы управления, написанные на Visual Basic, можно использовать как в Visual Basic, так и в Delphi и Visual C++, а также в Access. Важной особенностью ActiveX является возможность встраивать элементы управления в веб-страницы. На сегодняшний день ActiveX является одной из самых перспективных технологий.
Элемент управления ActiveX состоит из четырех элементов: интерфейса, свойств и методов, которые он предоставляет, и событий, на которые он реагирует. Интерфейс создан как у любой программы. Здесь мы рассмотрим остальные три элемента.

Характеристики
Каждый элемент управления имеет свойства. Каждый элемент управления ActiveX также имеет свойства. Вы создаете элемент управления ActiveX на основе готовых компонентов и строите его свойства на основе свойств компонентов. Изменение одного свойства элемента управления ActiveX может привести к изменению многих свойств его компонентов. Вам необходимо тщательно спланировать элемент управления ActiveX — какова его цель и какие свойства необходимо предоставить, чтобы сделать его более полезным и функциональным. Создание свойств элемента управления ActiveX состоит из двух основных этапов — записи и чтения свойств и их сохранения. Если свойства не запоминать, то после каждого запуска программы свойства компонентов будут восстанавливаться до первоначальных значений и их настройка будет практически невозможна для программиста.

Создать свойства
Чтобы отобразить текущее значение свойства, используйте процедуру Property Get. Предположим, что элемент управления имеет метку с именем lblCaption и свойство Caption, определяемое заголовком этой метки. В этом случае процедура будет выглядеть следующим образом:

Код:


Public Property Get Caption() As String 
     Caption = lbl.Caption 
End Property

Эта процедура задает для свойства Caption значение свойства Caption метки. Конечно, структуру процедуры можно не писать и ввести только вторую строку – в меню Сервис выбрать Добавить процедуру, в поле Имя ввести Заголовок, а в Тип выбрать Вариант свойства. Visual Basic подготовит процедуры Property Get и Property Let, но вы должны изменить их тип с Variant на String, поскольку свойство Caption должно принимать строку.

Изменить свойство
Свойство Get используется для чтения свойства. Когда ему необходимо присвоить новое значение, используется одна из процедур Property Let или Property Set. Эти две процедуры одинаковы — вторая используется, если свойство является объектом, например изображением. Поэтому используйте Property Let для простых свойств и Property Set для объектов. Процедура выглядит следующим образом:

Код:


Public Property Let Caption(ByVal NewCaption As String) 
     lblCaption.Caption = NewCaption 
     PropertyChanged "Caption" 
End Property

Сохранение свойств во время выполнения Когда кто-то работает с вашим элементом управления, он устанавливает его свойства и запускает программу, чтобы убедиться, что все так, как ему нужно. Когда он снова вернется в форму, свойства элемента управления должны быть такими же, какими он их оставил. Для этого вам понадобятся две процедуры — одна для записи свойств и одна для чтения их значений. Свойства элементов управления хранятся в объекте с именем PropertyBag. Свойства записываются с помощью процедуры WriteProperties:

Код:


Private Sub UserControl_WriteProperties(PropBag As PropertyBag) 
     PropBag.WriteProperty "Caption", Caption, VefaultValue 
End Sub

Процедура WriteProperty принимает свойство для записи, его значение и значение по умолчанию. Значение по умолчанию используется для экономии времени — если свойство не было изменено, его не нужно сохранять. Как создается неявное значение, будет описано чуть позже.

Чтение свойств выполняется с помощью процедуры ReadPropertyes:

Код:


Private Sub UserControl_ReadProperties(PropBag As PropertyBag) 
     Caption = ProgBag.ReadProperty("Caption", DefaulVvalue) 
End Sub

А здесь для той же цели используется DefaulValue. Обе процедуры доступны из списка процедур в окне кода.

Создать значение по умолчанию

Свойства элемента управления ActiveX должны иметь соответствующее начальное значение. Это делается с помощью процедуры InitProperties, доступной из списка процедур в окне CodeWindow:

Код:


Private Sub UserControl_InitProperties() 
     Caption = DefaulValue 
End Sub

Последний шаг, который следует сделать в первую очередь, — это объявление свойства. Она объявляется как любая другая переменная — с именем и типом. Это относится ко всем свойствам, которые не соответствуют свойствам ни одного из составляющих элементов управления.

Перечень свойств

Некоторые свойства позволяют пользователю выбирать из нескольких вариантов. Но бесспорно использование чисел для различных возможных значений. Поэтому обычно предоставляется текстовая константа, связанная с каждым из возможных значений. Например, свойство Alignment элемента управления TextBox имеет три возможных значения — 0, 1, 2. Но вам не нужно запоминать, какое число что означает, потому что с каждым из них связан текст. Такие свойства, которые предлагают возможность выбора из нескольких значений, называются перечисляемыми свойствами. Перечисление создается в блоке кода в части объявления модуля с помощью процедуры Enum, имеющей следующий тип:

Код:


Public Enum PropertyName 
     Name1 = 0 
     Name2 = 1 
     Name3 = 2 
     Name4 = 3 
     ... 
Wnd Enum

На самом деле вам не нужно указывать числовые значения элементов. Если вы их не укажете, они будут автоматически назначены в том порядке, в котором они объявлены, начиная с 0.

Если свойство объявлено как логическое, пользователь автоматически получает возможность переключаться между True и False. В этом случае перечисление не требуется.

Создание пояснительного текста
При выборе любого свойства любого из элементов управления Visual Basic или самой формы в нижней части окна свойств появляется текст, содержащий объяснение того, что делает конкретное свойство. Вы можете создать такой текст, выбрав атрибуты процедуры в меню «Инструменты» и выбрав процедуру из списка «Имя» в появившемся диалоговом окне. Далее в поле «Описание» вы можете ввести пояснительный текст для вашего свойства.

Методы
Вы можете создать метод под своим контролем так же легко, как процедуру или функцию; синтаксис такой же, потому что любая процедура или функция, объявленная общедоступной в вашем элементе управления, отображается как ее метод.

События
Ваши элементы управления должны предоставлять события, которые должен обрабатывать пользователь. Для этого вам нужно создать событие и создать перехватчик этого события. Например, если вы хотите предоставить событие onclick для элемента управления, вы должны создать это событие, а затем событие onclick каждого отдельного компонента в элементе управления, а также самой формы должно запускать событие onclick элемента управления. Если у вас есть текстовое поле в вашем элементе управления, изменение текста вызовет событие onchange, вы, вероятно, захотите предоставить это событие в форме onchangetext. Для этого вы сначала создаете событие onchangetext, а затем в событии onchange поля запускаете событие onchangetext. Таким образом, вы позволяете пользователю писать код для управления работой элемента управления — например, для проверки соответствия текста в поле требованиям. Далее обсуждаются два этапа создания управляющего события.

Создать событие:

Чтобы создать управляющее событие, вы объявляете его в разделе объявления модуля. Объявление содержит имя события и может, но не обязательно, содержать параметры, которые передаются при возникновении события. Синтаксис объявления следующий:

Код:


Public Event EventName([ByVal variable AS datatype])

Создав событие, вы можете запустить его, используя следующий код:

Код:


RaiseEvent EventName

Определить событие по умолчанию
Вы можете установить событие как событие по умолчанию. Событие по умолчанию — это первое событие, которое появляется в окне кода. Чтобы сделать событие событием по умолчанию, сделайте следующее:

1. В меню «Инструменты» выберите «Атрибуты процедуры».
2. Откроется диалоговое окно «Атрибуты процедуры». В поле со списком Имя выберите событие, которое вы хотите установить в качестве события по умолчанию.
3. Нажмите кнопку «Дополнительно».
4. Диалоговое окно расширяется. Включить поле «Пользовательский интерфейс по умолчанию»
5. Нажмите ОК.

Автор: Максим Крижановский

Поделиться в соцсетях