Пример создания формы
Пусть требуется создать форму для ввода информации о студенте (для работы с ранее созданным классом CStudent). Такая форма может содержать несколько элементов управления, связанных с соответствующими свойствами объектной переменной класса CStudent. Кроме того, имеет смысл разместить на форме пару кнопок: подтверждение добавления и отмена операции. Такая форма может быть создана следующим образом:
После добавления
бавлен функциональный код, приведенный и прокомментированный в листинзаготовки формы (меню "Вставка/UserForm"), ее имя (свойство Name) изменено на frmAddStudent.
На форму были добавлены следующие элементы управления: TextBox, Label, OptionButton, CommandButton. Элементам TextBox, предназначенным для ввода данных пользователем, заданы имена (свойство Name) txtLName, txtFName, txtMName, txtContacts, txtBDay. Элементам Label заданы надписи (свойство Caption) "Фамилия:", "Имя:", "Отчество" и т.д. Элементы OptionButton, используемые для указания пола студента, получили имена optMale и optFemale. Эти элементы сгрупппированы с помощью рамки (Frame). Для подтверждения ввода или отмены действий на форму добавлены 2 кнопки (CommandButton). Первой из них задано имя (свойство Name) btnAdd и надпись (свойство Caption) "Принять", второй - btnCancel и "Отмена" соответственно.
Далее, размещенные элементы были спозиционированы путем изменения размеров и положения через указание значений свойств Left, Top, Width и Height.
В завершении были созданы (двойной клик на соответствующем элементе) заготовки обработчиков событий для кнопки btnAdd и btnCancel. Заготовка обработчика события инициализации формы была создана путем выбора этого события из списка доступных методов ("Редактор формы/Declarations/initialize")
В проект был добавлен дополнительный модуль с именем General (листинг 30), где описаны общие данные проекта, в частности переменная stud (CStudent) и макрос sample33, из которого вызывается форма frmAddStudent.
В созданные обработчики событий доге 2.1.
Листинг 2. Модуль General
Option Explicit ' явное описание переменных
Public stud As New CStudent ' экземпляр класса CStudent
Public Const AppName = "БД Деканат"
Sub sample32()
frmAddStudent.Show '
Показать форму
End Sub
Листинг 2.1. Модуль формы 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
Как видно из приведенного примера, использование визуальных средств разработки делает процесс проектирования пользовательского интерфейса программы более наглядным и быстрым. Основной акцент переносится непосредственно на решение прикладной задачи. При этом сохраняется возможность программного управления всеми элементами управления.
