Тема 2.9 Формы и компоненты управления. Обработка событий

Тема 2.9 Формы и компоненты управления. Обработка событий

В конце ХХ века широкое распространение получило визуальное программирование – технология, предоставляющая программисту наглядные средства конструирования интерфейса. Объектно-ориентированное программирование удачно использует концепцию визуального программирования.

VBA – это интегрированная среда разработки, которая предоставляет программисту возможность создания форм, на которых размещают компоненты (в терминах VBA - controls, элементы управления), имеющиеся в библиотеке VBA или созданные пользователем. Все компоненты (формы, элементы управления, меню и панели инструментов) являются объектами со своими свойствами и методами и способны реагировать на определенные события.

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

Пользовательские формы

Для добавления к проекту новой формы используется команда редактора VBA "Вставка/UserForm". По умолчанию новой форме присваивается имя UserForm1 и далее используется порядковая нумерация пользовательских форм.

Переименовать объект UserForm можно так же, как стандартный модуль или модуль класса. Для этого надо задать значение свойства Name этого объекта.

Каждая добавляемая в проект форма наследует свойства и методы объекта UserForm. Все процедуры и функции, написанные в разделе General (общий) модуля класса формы, становятся дополнительными методами для этой формы. Форме можно придать и новые свойства, добавив в ее модуль класса описания Property Get и Property Let. Копии новой формы можно создавать программно с помощью оператора Dim и опции New.

Все формы VBA являются модальными (modal). Это означает, что вы не сможете выполнить какое-либо другое действие в приложении до тех пор, пока форма диалога не будет закрыта (методами Hide или UnLoad).

Свойства объекта UserForm
  • программно;
  • в окне свойств (Properties Window) редактора VBA.

Таблица 12. Основные свойства объекта UserForm

  • Manual – начальное значение не устанавливается;
  • CenterOwner – выравнивание по центру объекта, которому принадлежит форма;
  • CenterScreen – выравнивание по центру экрана;
  • Windows Default – положение верхнего левого угла экрана
Методы объекта UserForm

Таблица 13. Основные методы объекта UserForm

События объекта UserForm

формируется автоматически, при двойном клике указателем мыши на форме или элементе управления. Код обработчика создается вручную.

Основная часть кода, который разработчик записывает в модуль класса формы, связана с обработкой событий. В таб.14 перечислены соновные события объекта UserForm, для которых можно написать обработчик в режиме визуального программирования.

Таблица 14. Основные события объекта UserForm

Синтаксис операторов Load и Unload:

Здесь Object представляет любую допустимую ссылку на объект UserForm.

Оператор Load загружает в память объект UserForm и запускает метод формы Initialize, но не выводит форму на экран. Когда форма загружена, можно использовать написанную на VBA программу для работы с объектом UserForm.

Оператор Unload удаляет из памяти объект UserForm, а также все переменные формы. После того, как форма выгружена, она перестает быть доступной для VBA-кода.

Элементы управления

Создание элементов управления на рабочем листе, в документе или в форме, как правило, происходит на начальном этапе конструирования приложения. Иногда используется программное создание элементов управления в процессе работы приложения. Но этот подход применяется реже. Большинство элементов управления можно располагать как в документе или на рабочем листе, так и в форме. Но существуют такие элементы, как Набор страниц и Набор вкладок, которые можно располагать только в форме. В таб. 15 приведен список стандартных элементов управления, включенных в VBA, и соответствующих кнопок панели инструментов Toolbox, а также описано назначение каждого элемента. Как видно из этой таблицы, к стандартным относятся практически все элементы управления, которые встречаются в приложениях Windows.

Таблица 15. Стандартные элементы управления, включенные в VBA

Свойства элементов управления

Таблица 16. Основные свойства стандартных элементов управления

fmBorderStyleSingle – граница в виде контура;

В следующем примере (листинг 29) на пользовательской форме расположены три кнопки и одно поле. Свойство Tag каждого из этих элементов управления, за исключением второй кнопки, установлено равным "Показать". Свойство Tag второй кнопки установлено равным "Спрятать". В цикле проверяется свойство Tag всех элементов управления и при инициализации диалогового окна отображаются только те элементы управления, у которых это свойство равно "Показать".

Листинг 29. Использование свойства Tag

В результате выполнения данной процедуры на форме будут отображены первая и третья кнопки, а также поле.

Методы и события элементов управления

Таблица 17. Основные общие методы элементов управления

Таблица 18. Наиболее часто используемые события объектов управления

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

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

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

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

📎📎📎📎📎📎📎📎📎📎