ТЕМА 2.10 ИНТЕГРАЦИЯ С ВНЕШНИМИ ПРИЛОЖЕНИЯМИ

Пример создания формы

Пусть требуется создать форму для ввода информации о студенте (для работы с ранее созданным классом CStudent). Такая форма может содержать несколько элементов управления, связанных с соответствующими свойствами объектной переменной класса CStudent. Кроме того, имеет смысл разместить на форме пару кнопок: подтверждение добавления и отмена операции. Такая форма может быть создана следующим образом:

1. После добавления заготовки формы (меню "Вставка/UserForm"), ее имя (свойство Name) изменено на frmAddStudent.

2. На форму были добавлены следующие элементы управления: TextBox, Label, OptionButton, CommandButton. Элементам TextBox, предназначенным для ввода данных пользователем, заданы имена (свойство Name) txtLName, txtFName, txtMName, txtContacts, txtBDay. Элементам Label заданы надписи (свойство Caption) "Фамилия:", "Имя:", "Отчество" и т.д. Элементы OptionButton, используемые для указания пола студента, получили имена optMale и optFemale. Эти элементы сгрупппированы с помощью рамки (Frame). Для подтверждения ввода или отмены действий на форму добавлены 2 кнопки (CommandButton). Первой из них задано имя (свойство Name) btnAdd и надпись (свойство Caption) "Принять", второй - btnCancel и "Отмена" соответственно.

3. Далее, размещенные элементы были спозиционированы путем изменения размеров и положения через указание значений свойств Left, Top, Width и Height.

4. В завершении были созданы (двойной клик на соответствующем элементе) заготовки обработчиков событий для кнопки btnAdd и btnCancel. Заготовка обработчика события инициализации формы была создана путем выбора этого события из списка доступных методов ("Редактор формы/Declarations/initialize")

5. В проект был добавлен дополнительный модуль с именем General (листинг 30), где описаны общие данные проекта, в частности переменная stud (CStudent) и макрос sample33, из которого вызывается форма frmAddStudent.

6. В созданные обработчики событий добавлен функциональный код, приведенный и прокомментированный в листинге 31.

Листинг 30. Модуль General

Option Explicit ' явное описание переменных Public stud As New CStudent ' экземпляр класса CStudent Public Const AppName = "БД Деканат" Sub sample32() frmAddStudent.Show ' Показать форму End Sub

Листинг 31. Модуль формы frmAddStudent

' Событие происходит в момент первого вызова формы Private Sub UserForm_Initialize() Caption = AppName & ": Добавление студента" ' Заголовок формы ' Задаем значение по умолчанию в поле ввода даты рождения txtBDay = Format(Date, "DD.MM.YYYY") End Sub ' Событие происходит по клику на кнопке "Принять" (btnAdd) Private Sub btnAdd_Click() With stud ' Записываем значения полей ввода в свойства объекта stud .LastName = txtLName.Value .FirstName = txtFName.Value .MiddleName = txtMName.Value .BirthDay = CDate(txtBDay.Value) .Contacts = txtContacts.Value ' Проверяем значения элементов OptionButton ' Если установлен optMale, то в свойство stud.Gender пишем "муж",... If optMale.Value Then .Gender = "муж" ElseIf optFemale.Value Then '... иначе - "жен" .Gender = "жен" End If Debug.Print .FullInfo ' отображаем информацию о студенте в отладчике End With ' Уведомляем пользователя о добавлении записи и ждем дальнейших указаний ' Если пользователь нажмет "Отмена", то скрываем форму (метод Hide) msg = "Запись добавлена." & vbCrLf & "Продолжить?" If MsgBox(Prompt:=msg, Title:=AppName, Buttons:=vbOKCancel + vbInformation) = vbCancel Then Hide End Sub ' Событие происходит при выборе кнопки "Отмена" (btnCancel) Private Sub btnCancel_Click() Hide ' скрываем форму End Sub

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

Автоматизация, ранее известная как OLE-автоматизация, - это технология, позволяющая включать функциональные средства любого Windows-приложения в другое приложение посредством программного кода. Другими словами, автоматизация - это процесс управления одним приложением посредством другого. Использование другого приложения как источника новых средств и инструментов значительно расширяет возможности вызывающего приложения, причем это даже не всегда требует написания соответствующих процедур VBA. Можно, например, организовать показ слайдов с музыкальным сопровождением (используя средства PowerPoint), которые будут отображать данные рабочей книги Excel.

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