Разработка компонентов ActiveX.

Прежде чем перейти к разработке компонентов ActiveX, необходимо рассказать об этой новой технологии, разработанной фирмой Microsoft. Она дает возможность программисту оторваться от среды разработки, поскольку среда, в которой поддерживается технология ActiveX, "понимает" любой компонент ActiveX, в том числе разработанный в другой среде. Это означает, что любые компоненты, созданные в Visual Basic 6, можно без проблем использовать при работе, например, в Visual C++ или в любой другой среде проектирования, которая поддерживает технологию ActiveX.
Одним из основных свойств технологии ActiveX является ее ориентация на Internet, что позволяет применять в своей разработке любые физически удаленные компоненты, используя возможности доступа через Internet. Это также означает, что любой компонент, разработанный при помощи этой технологии, можно использовать в проектах, предназначенных для работы в Internet.
На самом деле технология ActiveX — собирательное понятие, это сумма технологий, таких как:

  • элементы управления ActiveX — технология создания элементов управления ActiveX;
  • документы ActiveX — технология создания документов, работающих в браузерах Internet, и приведение документов (например, документов Word) к стандарту документов ActiveX;
  • Remote Automation — технология удаленного управления;
  • технология Active DeskTop — средства интеграции HTML-документов и элементов (таких, как элементы управления ActiveX или Java-апплеты — сценарии) непосредственно на рабочем экране пользователя;
  • Active Movie — технология работы с аудио и видео форматами в браузерах Internet;
  • Active Server Pages — технология создания и выполнения сценариев на Web-серверах.

В данной главе изучим только верхушку этого айсберга — элементы управления ActiveX, а именно: их создание, модификацию, использование в приложениях.
Основные сведения об ActiveX-компонентах
Основные понятия технологии ActiveX — компоненты ActiveX, объектные модели СОМ (Component Object Model, модель составных объектов) и DCOM (Distributed СОМ).
Компоненты ActiveX — это элементы управления ActiveX, документы ActiveX, источники данных (ADO или RDO), выполняемые файлы ActiveX ЕХЕ и библиотеки ActiveX DLL. Компоненты представляют собой отдельные файлы ОСХ, ЕХЕ или DLL и могут использоваться для создания классов объектов или выполнения каких-либо функций приложения.
Фактически компонент ActiveX — это отдельный проект, содержащий набор элементов управления, классов и других программных модулей, скомпилированный затем в файл ОСХ, ЕХЕ или DLL в зависимости от целей применения этого компонента.
При разработке компонентов ActiveX необходимо исходить из целей применения этих компонентов. Можно создать целый набор элементов управления в одном файле ОСХ для настольных приложений, однако из-за большого размера файла они будут медленно работать в Internet-приложениях. Для работы в Internet эти элементы управления необходимо выделить в отдельные файлы небольшого размера.
Компоненты ActiveX основаны на программной модели СОМ, которая обеспечивает межплатформенные возможности технологии ActiveX.
Модель составных объектов (СОМ)
Модель составных объектов представляет собой программную модель, а именно: набор стандартных сервисов (функций) и спецификаций (стандартов обмена, стандартов вызова функций), обеспечивающих реализацию объектно-ориентированного подхода для разработки приложений клиент/сервер, работающих в том числе и в Internet, точнее, в первую очередь в Internet. Причем данная модель работает вне зависимости от среды проектирования, с условием, конечно, что эта платформа (среда проектирования) поддерживает модель СОМ.
Модель СОМ определяет стандартный внутренний интерфейс между объектами и методику существования (создание объекта, инициализация объекта, завершение работы объекта) и взаимодействия объектов (вызов функций, обмен данными между объектами). Этот интерфейс обеспечивает взаимодействие любых объектов модели СОМ между собой.
Программная модель СОМ имеет открытую архитектуру, что дополняет гибкость модели и возможность работы с любой платформой.
Модель распределенных составных объектов (DCOM)
Модель DCOM (Distributed СОМ) — это развитие модели СОМ для эффективной работы в Internet. В модели DCOM поддерживается объектный протокол, который дает возможность прямого доступа объектов СОМ друг к другу при помощи сети.
Создание элементов управления ActiveX
Элементы управления ActiveX — один из типов компонентов ActiveX. Рассмотрим возможности их создания и использования в Visual Basic 6.
Создание элементов управления состоит из ряда этапов.

  • Постановка задачи на проектирование элемента управления ActiveX. На этом этапе определяется его внешний вид, то, какими свойствами и методами он должен обладать, на какие события должен реагировать, а также какие готовые элементы управления потребуются для его создания.
  • Проектирование вида создаваемого элемента управления, сборка элемента управления из готовых элементов, если в этом есть необходимость.
  • Добавление событий.
  • Добавление методов элемента управления. Добавление необходимых свойств. Проектирование страницы свойств.
  • Проверка и тестирование вновь созданного элемента управления ActiveX, в том числе с использованием Internet, если он создан для работы в сети.
  • Доработка по итогам проверки элемента управления.
  • Компиляция файла, то есть создание файла компонента.

Замечание
Проверка и доработки могут быть циклическими. После полной проверки можно выполнить компиляцию и получить файл нового компонента ActiveX. Этот файл можно подключать к проекту так же, как и все стандартные компоненты.
Рассмотрим более подробно этапы создания элемента управления ActiveX на примере кнопки управления типа commandButton, предназначенной для открытия бланка новой формы.
Проектирование вида элемента управления
Чтобы создать новый элемент управления ActiveX, откройте новый проект типа ActiveX Control. Для этого в меню File (Файл) выберите команду New Project (Создать новый проект) и в открывшемся диалоговом окне New Project ( 1) дважды щелкните мышью на значке ActiveX Control.
В открытом проекте по умолчанию находится объект типа UserControl, в котором размещаются все вновь создаваемые или вставляемые элементы управления. Этот объект служит контейнером для содержащихся в нем объектов, размещаемых при проектировании нового элемента управления ActiveX. Все свойства и события объекта UserControl можно в дальнейшем использовать при программировании вновь создаваемого элемента управления.
В нашем примере для создания кнопки управления выполните следующие действия:
1. Откройте новый проект, как было указано выше.
2. Присвойте проекту имя MyCBNewForm. Для этого в меню Project (Проект) выберите команду Projecti Properties (Свойства Project 1) и в поле Project Name открывшегося окна свойств проекта введите требуемое имя.
3. Сохраните проект под тем же именем, выбрав команду Save Project As (Сохранить проект как) меню File (Файл).
4. Добавьте в контейнер элемент управления commandButton, дважды щелкнув мышью кнопку CommandButton ЩЯ на панели элементов управления. Присвойте этой кнопке имя cbNewForm.
5. Чтобы поместить на кнопку графическое изображение, установите для свойства style значение 1-Graphical.
Воспользовавшись свойством picture кнопки, поместите на нее желаемое изображение, которое можно взять, например, из коллекции значков в каталоге \Common\Graphics\Bitmaps\OfrCtlBr\Small\Color\. Воспользуемся изображением New.bmp. С помощью свойств Disabiedpicture и Downpicture можно задать изображения, отображаемые на кнопке, в тех случаях, когда она недоступна или находится в нажатом состоянии.
Полученная кнопка показана на  2, однако ее необходимо еще немного доработать.
Чтобы при использовании созданной кнопки не было видно полей контейнера, переместите кнопку в левый верхний угол контейнера.
С той же целью установите размеры объекта-контейнера равными размерам кнопки.
Полученная кнопка показана на  3.
В принципе, уже в таком виде вновь полученную кнопку (объект типа cbNewForm) можно вставлять в свои приложения. При этом кнопка cbNewForm созданного элемента управления появится на панели элементов управления.
Замечание
Прежде чем использовать созданную кнопку в проекте, ее необходимо подключить к проекту. О подключении элемента управления ActiveX к проекту будет сказано чуть позже.
По умолчанию все новые элементы управления представлены на панели элементов одним типовым значком Отличить их можно только по подсказке, появляющейся при установке курсора на значок. Она соответствует наименованию этого элемента управления, заданному свойством Name. Для замены типового значка на пользовательский используется свойство ToolboxBitmap элемента управления userControl (контейнера нашей кнопки). Чтобы изменить значок, откройте диалоговое окно Load Bitmap (Загрузить значок), нажав на кнопку с тремя точками в поле свойства ToolboxBitmap, найдите требуемый значок и нажмите кнопку Открыть или дважды щелкните кнопкой мыши на найденном файле значка.
Полученная в таком виде кнопка еще не совсем готова к использованию. Для того чтобы кнопка стала полноценным элементом управления ActiveX и выполняла заданные действия, а также обладала необходимыми свойствами и работала с событиями, их необходимо добавить в наш элемент управления cbNewForm. Рассмотрим, как в элемент управления ActiveX добавляются новые события, методы и свойства, называемые членами элемента управления.
Добавление событий
По умолчанию кнопка уже характеризуется некоторыми событиями, унаследованными от объекта-контейнера. Среди них следующие:

  • click — щелчок левой кнопкой мыши
  • DragDrop — перемещение объекта
  • DragOver — перемещение объекта поверх другого объекта
  • GotFocus — установка фокуса на объект
  • KeyDown — нажатие на клавишу
  • Keypress — нажатие и отпускание клавиши
  • Keyup — отпускание клавиши
  • LostFocus — потеря фокуса объектом
  • MouseDown — нажатие кнопки мыши на объекте
  • MouseMove — перемещение указателя мыши за границы объекта
  • MouseUp — отпускание кнопки мыши на объекте

При необходимости можно добавить кнопке свои события. Сделать это достаточно просто. Для этого объявите новое событие с помощью следующего кода:
Public Event NewForm ()
Затем создайте процедуру активизации события, введя код, аналогичный указанному ниже:
Private Sub cbNewForm_Click()
RaiseEvent NewForm
End Sub
В приведенном примере при нажатии кнопки будет инициироваться дополнительное событие NewForm, к которому можно привязывать выполнение действий в приложении, в нашем случае вызов бланка формы.
Еще проще событие добавляется с помощью диалогового окна Add Procedure ( 4), открываемого командой Add Procedure (Добавить процедуру) меню Tools (Сервис).
Для ввода нового события в этом диалоговом окне необходимо лишь ввести имя события в поле Name (Наименование), установить переключатель Type (Тип) в положение Event (Событие) и выйти из диалогового окна Add Procedure, нажав кнопку ОК. При этом в код элемента управления будет введено объявление нового события. После этого следует ввести инициализацию события, как было указано выше при добавлении события вручную.
Добавление методов
Чтобы добавить метод, необходимо ввести в окно редактора код следующего вида:
Public Sub NewMethod()
Функциональный код метода
End Sub
Как видно из текста кода, это просто добавление подпрограммы или функции, реализующей требуемые функциональные возможности в элементе управления ActiveX.
Как и для ввода события, для добавления метода можно воспользоваться диалоговым окном Add Procedure (Добавить процедуру), показанным на  4. При этом переключатель Type (Тип) необходимо установить в значение Sub (Подпрограмма) или Function (Функция). Добавляемый в код элемента управления шаблон при выборе опции Sub будет следующим:
Public Sub NewMethod()
End Sub
При установке опции Function добавляемый в код элемента управления шаблон будет выглядеть так:
Public Function NewMethod()
End Function
После ввода шаблона необходимо запрограммировать вновь созданный метод, введя в шаблон функциональный код.
Добавление свойств
Добавление свойств — наиболее трудоемкий процесс. В принципе, к свойству можно относиться как к переменной, связанной с объектом. Свойства для элемента управления ActiveX создаются при помощи процедур Property Get (возврат значения свойства) и property Let (установка значения свойства). При этом для добавления свойства, доступного только для чтения, можно определить только процедуру возврата значения свойства property Get.
Существует и третья процедура создания свойств property set, которая применяется при объявлении свойств, являющихся объектами, как, например, свойство Font, которое само по себе имеет набор свойств: шрифт, размер шрифта, начертание и другие. Однако такие сложные свойства пока не являются предметом нашего изучения.
Обычно при объявлении свойств также выполняется их начальная инициализация с использованием констант и переменных. Константы и переменные для начальной инициализации при этом должны быть объявлены, например:
Const prpToolTipTextDefault = ""
Dim prpToolTipText As String
Объявление свойств выполняется при помощи процедур свойств property Let и property Get следующим образом:
Public Property Get ToolTipText () As String
ToolTipText = prpToolTipText
End Property
Public Property Let ToolTipText(ByVal New_ToolTipText As String)
prpToolTipText = New_ToolTipText
PropertyChanged "ToolTipText"
End Property
Инициализация свойств (присвоение значений по умолчанию) выполняется по событию initproperties контейнера userControl с использованием констант и переменных инициализации:
Private Sub UserControl Initproperties ()
prpToolTipText = prpToolTipTextDefault
End Sub
Для сохранения значения свойства, установленного во время разработки приложения, вы можете использовать объект типа propertyBag, который содержится по умолчанию в контейнере userControl любого создаваемого в Visual Basic 6 объекта ActiveX. Объект PropertyBag имеет два метода для записи/чтения значения свойства: writeproperty и Readproperty. Синтаксис метода writeproperty следующий:
PropertyBag.WriteProperty (свойство, значение, эначениеПоУмолчанию)
где:

  • Property — наименование свойства;
  • valProperty — сохраняемое значение свойства;
  • valPropertyDef — значение свойства по умолчанию. Метод Readproperty, используемый для чтения данных из объекта

PropertyBag, выглядит так:
PropertyBag.WriteProperty (свойство, переменная)
где:

  • property — наименование свойства;
  • varForProperty — переменная, в которую передается сохраняемое значение свойства.

Кроме этих методов в контейнере UserControl существуют два специальных события: WriteProperties И ReadProperties. с помощью этих событий и методов вы можете установить и прочитать значения свойств:
Private Sub UserControlJReadProperties(PropBag As PropertyBag)
prpToolTipText = PropBag.ReadProperty("ToolTipText", prpToolTipTextDefault)
End Sub
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
Call PropBag.WriteProperty("ToolTipText", prpToolTipText, prpToolTipTextDefault)
End Sub
Для добавления свойства с помощью диалогового окна Add Procedure ( 4) следует установить переключатель Type (Тип) в значение Property (Свойство). После этого автоматически будет добавлен шаблон кода, в который затем необходимо внести следующие операторы:
Public Property Get NewPropertyO As Variant
End Property
Public Property Let NewProperty(ByVal vNewValue As Variant)
End Property
Добавим новое свойство Newproperty для созданной нами ранее кнопки cbNewForm. Свойство будет содержать текстовое значение. Для этого необходимо выполнить следующие действия:
1. Добавьте в исходный текст код, указанный ниже. Можно воспользоваться командой Add Procedure (Добавить процедуру) меню Tools (Сервис), выбрав из переключателя Type значение Property (Свойство). В начало исходного текста добавьте описание константы:
Const prpNewPropertyDefault = "Новое свойство"
Public Property Get NewPropertyO As String
NewProperty = prpNewPropertyDefault
End Property
Public Property Let NewProperty(ByVal vNewValue As String)
NewProperty() = vNewValue
End Property
2. Для дальнейшей демонстрации использования свойства создайте файл с расширением осх с помощью команды Make cbNewForm.ocx меню File.
3. Для присвоения свойства и чтения его значения создайте новый проект типа Standard EXE. Назовите его TestProject. С помощью окна компонентов Components (Компоненты), открываемого командой Components меню Project (Проект), подключите созданный компонент к этому проекту. Форму Formi переименуйте в frmTestForm.
4. После подключения новый элемент управления появляется на панели элементов управления.
5. Добавьте этот элемент управления в форму и назовите его cbNewFormAbout.
6. Определите следующие действия для процедуры обработки события нажатия кнопки мыши:
MsgBox cbNewFormAbout.NewProperty,, "Сведения о свойстве".
7. Запустите проект на выполнение и, нажимая на кнопку, убедитесь в правильности возвращаемого значения свойства.
Создание свойств, событий и методов с помощью мастера ActiveX Control Interface Wizard
Вышеуказанные способы добавления свойств, методов и событий для элемента управления — длительный и кропотливый процесс, особенно если операцию необходимо повторять много раз. Для облегчения и ускорения работы программиста при вводе большого количества свойств, методов, событий в элемент управления ActiveX среда Visual Basic 6 предоставляет специальный инструмент — мастер ActiveX Control Interface Wizard (Мастер интерфейса элемента управления ActiveX). Посмотрим, как он работает.
Мастер интерфейса элементов управления ActiveX ( 5) вызывается командой ActiveX Control Interface Wizard меню Add-Ins (Надстройки).
Замечание
Чтобы подключить мастера ActiveX Control Interface Wizard к среде проектирования, необходимо в меню Add-Ins выбрать команду Add-In Manager (Диспетчер надстроек). Затем в окне диспетчера следует дважды щелкнуть мышью на строке VB6 ActiveX Ctrl Interface Wizard или установить курсор на это значение и выбрать для него флажок Loaded/Unloaded (Загружен/Выгружен), после чего закрыть окно, нажав кнопку ОК. Если необходимо постоянное присутствие команды вызова мастера интерфейса в меню, следует установить флажок Load on Startup (Загрузить при запуске).
Мастер интерфейса добавляет необходимый код при объявлении свойств и переменных, инициализации членов элемента управления, шаблонов кода процедур и функций. Конечно, он не освобождает полностью программиста от написания кода, но существенно облегчает эту задачу.
Как и все мастера в Visual Basic 6, мастер ActiveX Control Interface Wizard
состоит из последовательности шагов по созданию свойств элемента управления. Переход к следующему шагу выполняется нажатием кнопки Next (Далее), возврат к предыдущему шагу — нажатием кнопки Back (Назад). Если кнопка Finish (Готово) доступна, на этом шаге можно завершить работу мастера и выполнять доработку кода самостоятельно.
1. Чтобы запустить мастера, в меню Tools выберите команду ActiveX Control Interface Wizard.
Появляется диалоговое окно Introduction (Введение) (рис 14.5). Оно содержит флажок Skip this screen in the future (Пропускать этот экран в дальнейшем), определяющий, показывать первое окно мастера при последующих запусках или нет. Нажмите кнопку Next.
2. На втором шаге. Select Interface Members (Выбор членов интерфейса) мастера ( 6) начинается собственно проектирование событий, свойств и методов. На этом шаге следует сформировать список необходимых для нового элемента управления членов из набора возможных, предлагаемых в списке Available names (Доступные наименования). В элементе управления будут присутствовать только те члены, которые находятся в правом списке Selected names (Выбранные наименования). Правый список формируется переносом значений из левого списка с помощью следующих кнопок:


Кнопка

Назначение

Переносит из списка Available names в список Selected names выделенные члены элемента управления

Переносит из списка Available names в список Selected names все члены

Возвращает из списка Selected names в список Available names выделенные члены элемента управления

Возвращает из списка Selected names в список Available names все размещенные члены элемента управления



 
Используя кнопки, сформируйте список необходимых событий, свойств и методов элемента управления и нажмите кнопку Next.
3. На третьем шаге Create Custom Interface Members (Создание пользовательских членов интерфейса) мастер предоставляет возможность программисту работать с пользовательскими событиями, методами и свойствами. В этом окне ( 7) можно с помощью:

  • кнопки New (Новый) добавить член элемента управления;
  • кнопки Edit (Правка) изменить наименование уже существующего члена;
  • кнопки Delete (Удалить) удалить ненужный член элемента управления.

При добавлении нового члена элемента управления вызывается диалоговое окно Add Custom Member (Добавление пользовательского члена). В этом окне ( 8) необходимо в поле Name (Имя) ввести имя члена и указать с помощью переключателя Type (Тип) его тип.
После добавления нового пользовательского члена элемента управления ActiveX он появляется в списке My Custom Members (Мои пользовательские члены). Сформировав список всех необходимых пользовательских членов, нажмите кнопку Next для перехода к следующему шагу мастера.
4. Четвертый шаг Set Mapping (Установить соответствие) мастера ActiveX Control Interface Wizard ( 9) связывает члены элемента управления, выбранные на втором и третьем шагах, с событиями, свойствами и методами объектов элемента управления ActiveX. Диалоговое окно мастера содержит список всех свойств, методов и событий, которые определены как часть общего интерфейса элемента управления. Для связывания члена, выбранного из списка Public Name (Наименование), необходимо из раскрывающегося списка Control (Объект элемента управления) группы Maps to (Отобразить на) выбрать объект элемента управления и из списка Member (Член) этой же группы соответствующее событие, свойство или метод.
5. На пятом шаге Set Attributes (Назначить атрибуты) ( 10) мастер предлагает определить атрибуты тех членов нового элемента управления ActiveX, которые не были связаны с событиями, методами и свойствами на предыдущем шаге.
Перечень таких членов находится в списке Public Name окна данного шага мастера. Работа с этими членами элемента управления заключается в определении их атрибутов и описания. Описание вводится в поле Description (Описание). Это то краткое описание, которое затем будет появляться, например, в окне свойств при просмотре свойств объекта нового элемента управления в форме приложения. В полях группы Attribute Information (Информация об атрибутах) можно задать следующие атрибуты:

  • Data Type (Тип данных) — назначает тип данных для свойств и методов. Для методов это тип возвращаемых методом данных (Return Type);
  • Default Value (Значение по умолчанию) — определяет значение свойства по умолчанию;
  • Run Time (Режим выполнения) — назначает доступность свойств в режиме выполнения: Read/Write (Чтение/Запись), Read (Чтение), Write (Запись) или Not Available (Нет доступа);
  • Design Time (Режим проектирования) — аналогично полю Run Time для режима проектирования;
  • Arguments (Аргументы) — назначает аргументы для событий и методов.

6. Шестой шаг мастера ActiveX Control Interface Wizard ( 11) является итоговым.
В диалоговом окне расположен флажок View Summary Report (Показать итоговый отчет), позволяющий вывести итоговый отчет. Если этот флажок установлен, то будет выведено окно Summary (Итоги), показанное на  12. В этом окне мастера содержатся рекомендации по проверке нового элемента управления в составе приложения. Итоговый отчет можно сохранить в текстовом файле с помощью кнопки Save (Сохранить), открывающей диалоговое окно сохранения файла.
Добавление страницы свойств с помощью мастера Property Page Wizard
Для настройки элемента управления, особенно сложного, часто используется страница свойств, которая делает такую настройку более простой и понятной. Visual Basic 6 предоставляет программисту возможность создать такую страницу свойств и для нового элемента управления ActiveX с помощью мастера Property Page Wizard (Мастер страницы свойств).
Замечание
Для работы с мастером Property Page Wizard его необходимо предварительно присоединить к среде проектирования. Мастер страницы свойств присоединяется к среде проектирования с помощью диспетчера надстроек аналогично мастеру ActiveX Control Interface Wizard. При этом в окне диспетчера Add-In Manager необходимо выбрать надстройку VB6 Property Page Wizard.
1. Для запуска мастера Property Page Wizard, создающего страницу свойств, в меню Add-Ins (Надстройки) выберите команду Property Page Wizard.
В первом окне мастера ( 13) расположен флажок Skip this screen in the future (Пропускать это окно в дальнейшем). Если установить этот флажок, то при последующих запусках мастера это диалоговое окно появляться не будет. Нажмите кнопку Next для перехода к следующему шагу.
2. Второй шаг мастера Select the Property Pages (Выбор страницы свойств) — это начало проектирования вкладок страницы свойств. В этом окне мастера ( 14) расположен список, в котором перечислены предполагаемые вкладки страницы свойств. Слева от наименования вкладки стоит флажок, с помощью которого соответствующую вкладку можно отключить от страницы свойств. В дальнейшем при проектировании страницы свойств отключенная вкладка не участвует.
Первоначально список вкладок этого окна может быть пустым, поэтому необходимо сначала добавить, по крайней мере, одну вкладку окна страницы свойств. Однако если выбраны какие-либо стандартные группы свойств, то мастер по умолчанию заводит вкладку для каждой из этих групп. На  14 отображены группы StandardPicture и StandardFont.
Замечание
У мастера есть некоторые ограничения, касающиеся стандартных вкладок: наименования вкладок, а также группировка свойств не редактируются.
В окне мастера Select the Property Pages для добавления новых вкладок используется кнопка Add (Добавить). При нажатии этой кнопки открывается диалоговое окно Property Page Name (Наименование страницы свойства), показанное на  15. В этом окне расположено только поле для ввода имени вкладки. Можно переименовать выбранную вкладку, воспользовавшись кнопкой Rename (Переименовать). При ее нажатии вызывается то же самое диалоговое окно Property Page Name, что и в случае добавления новой вкладки.
На этом шаге мастера можно также изменить порядок следования вкладок. Для этого используются две кнопки, расположенные справа от списка. Кнопка с направленной вверх стрелкой перемещает вкладку на одну позицию вперед. Кнопка с направленной вниз стрелкой перемещает вкладку на одну позицию назад.
3. Следующее диалоговое окно Add Properties (Добавить свойства) мастера Property Page Wizard ( 16) предоставляет возможность распределить свойства по вкладкам (кроме стандартных). Сначала следует выбрать вкладку из списка Available Property Pages (Доступные страницы свойств). После того как вкладка выбрана, в нее из списка Available Properties (Доступные свойства) с помощью перечисленных ниже кнопок переносятся необходимые свойства.


Кнопка

Назначение

Переносит свойство на выбранную вкладку

Переносит все свойства на выбранную вкладку

Возвращает свойство с выбранной вкладки

Возвращает все свойства с выбранной вкладки



Совет
Для переноса свойства из одного списка в другой помимо кнопок можно воспользоваться мышью. Например, если дважды щелкнуть мышью в списке свойств, то выбранное свойство переместится на выбранную вкладку, и наоборот, если дважды щелкнуть мышью на свойстве в списке вкладки, то оно вернется в список свойств.
4. Завершает работу мастера Property Page Wizard диалоговое окно Finished! ( 17). В нем можно согласиться или отказаться от просмотра итогового отчета о работе мастера при помощи переключателя, выбрав значение Yes (Да) или No (Нет) соответственно.
Окно итогового отчета мастера Property Page Wizard показано на  18.
На  19 представлена страница свойств, созданная с помощью мастера Property Page Wizard для разработанной ранее кнопки cbNewForm. Если необходимо добавить новые свойства и затем вставить их в страницу свойств, то можно снова обратиться к мастеру ActiveX Control Interface Wizard, добавить требуемые свойства, определить для них процедуры чтения и установки, а затем, запустив мастер Property Page Wizard, добавить эти свойства на требуемые вкладки или создать новую вкладку для этих свойств.

Проверка и компиляция нового элемента управления ActiveX
После того как создан элемент управления ActiveX с нужными свойствами, методами и событиями, разработано диалоговое окно со страницами свойств, можно переходить к проверке, доработке и компиляции элемента управления в файл компонентов с расширением осх.
Проверка элемента управления ActiveX
Для простой проверки созданного элемента управления ActiveX можно запустить его на выполнение. При этом запустится браузер Internet с новым элементом управления. Если браузер запускается, значит явных ошибок при проектировании элемента управления не обнаружено, и можно проводить полноценную проверку его работы.
Полноценную проверку можно провести, только используя новый элемент управления в приложениях, по крайней мере, двумя способами.

  • При помощи группы проектов.
  • Подключением к проверочному проекту скомпилированного в файл компонентов (файл с расширением осх) нового элемента управления с помощью диалогового окна Components, открываемого командой Components (Компоненты) меню Project (Проект).

Рассмотрим сначала первый способ, как более простой и не требующий процесса компиляции. Для первой проверки данный способ хорош еще и тем, что в процессе проверки в новый элемент управления ActiveX можно вносить изменения.
В составе проверочной группы проектов должны быть, как минимум, два проекта:

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

Создадим тестовую группу проектов. Для этого выполните следующие действия:
1. Откройте новый стандартный проект.
2. Добавьте в него проект, содержащий кнопку cbNewForm, воспользовавшись командой Add Project (Добавить проект) меню File (Файл).
3. Разработайте форму с использованием нового элемента управления.
Созданная группа может служить для проверки работы нового элемента управления ( 21). После подключения проекта кнопки ее значок появляется на панели элементов управления.
Необходимо помнить, что Visual Basic 6 не разрешает работать одновременно с двумя проектами вне группы проектов. Поэтому при создании тестовой группы проект элемента управления должен быть закрыт, если вы работали с ним в отдельном сеансе Visual Basic 6. Работая с группой проектов, все необходимые изменения и доработки можно вносить и в проект элемента управления.
Разумеется, более полная проверка выполняется при подключении нового компонента к тестовому проекту.
Доработка программного кода элемента ActiveX
При проверке нового элемента управления могут быть выявлены недостатки, которые необходимо устранить. Например, если в режиме проектирования попробовать поменять размеры созданной вами кнопки в форме, растягивая ее за край, то будут изменяться размеры контейнера, а не кнопки. Чтобы устранить этот недостаток, необходимо привязать края кнопки к краям контейнера. Это можно сделать с помощью события Resize контейнера, возникающего при изменении размеров последнего, введя следующий код:
Private Sub UserControl Resize()
cbCalculate.Height = UserControl.ScaleHeight
cbCalculate.Width = UserControl.Width
End Sub
В тексте этого кода при каждом изменении размеров контейнера соответственно изменяется размер кнопки до максимальных размеров контейнера.
Компиляция элемента управления в файл компонентов ActiveX
После всех проверок и доработок новый элемент управления можно скомпилировать в файл компонентов. Этот процесс не представляет ничего сложного. Достаточно выполнить команду Make NameProject.ocx (Создать NameProject.ocx) меню File (Файл), где NameProject.ocx— это имя проекта нового элемента управления ActiveX.
Вновь созданный файл компонентов можно подключать к проектам с помощью диалогового окна Components (Компоненты) аналогично стандартным файлам компонентов. После присоединения все элементы управления файла компонентов появятся на панели элементов управления и будут работать в приложениях. Для примера попробуем подключить файл компонентов созданного в предыдущих разделах элемента управления ActiveX (кнопки) к проекту и включить этот элемент управления в форму проекта.
Пример подключения нового компонента к проекту
Рассмотрим пример подключения элемента управления ActiveX cbNewForm к проекту, созданному при изучении типов интерфейсов в разделе "MDI интерфейс" главы 7. Для этого выполните следующие действия:
1. Создайте новый проект с родительским и дочерним окнами или воспользуйтесь приложением MyMDiApp.vbp, созданным при изучении типов интерфейсов.
2. После того как новый проект создан (или открыт проект MyMDiApp.vbp), командой Components (Компоненты) меню Project (Проект) откройте окно компонентов ( 22).
3. В диалоговом окне Components установите новый компонент в состояние загрузки. Для этого слева от имени нового компонента установите галочку.
Замечание
Если компонент не подключился автоматически, то есть отсутствует в диалоговом окне Components, его можно найти с помощью кнопки Browse (Просмотр) поиска компонентов.
Замечание
Необходимо отметить, что наименование компонента соответствует наименованию проекта, то есть тому имени, которое было введено в поле Project Name (Наименование проекта) в окне свойств проекта, открываемом командой MyMDIApp Properties (Свойства MyMDIApp) меню Project. При этом сам файл компонента может называться совершенно иначе.
4. После подключения компонента к проекту значок элемента управления cbNewForm появляется на панели элементов управления.
5. Вставьте новую кнопку в панель инструментов родительского окна и назовите ее cbCallNewFom.
6. Осталось ввести код вызова окна для события NewForm кнопки cbCallNewForm, как указано ниже:
Private Sub cbCailNewForm_NewForm()
Dim frrriNewForm As New fmChildMDI
frmCount = frmCount + 1
frmNewForm.Caption = "Дочерняя форма " + Str(frmCount)
frmNewForm.Show
End Sub
Конечно, это достаточно простой пример, но на нем наглядно видно, как использовать вновь созданный компонент в своих проектах.
После проверки и тестирования новый элемент управления, в частности кнопку cbNewForm, можно использовать во всех проектах.

 

 
На главную | Содержание | < Назад....Вперёд >
С вопросами и предложениями можно обращаться по nicivas@bk.ru. 2013 г. Яндекс.Метрика