Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция ППП 2012.doc
Скачиваний:
11
Добавлен:
01.05.2025
Размер:
3 Мб
Скачать
☆

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

Пусть требуется создать форму для ввода информации о студенте (для работы с ранее созданным классом 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

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