Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Создание пользовательских п ÒÉÌÏÖÅÎÉÊ ÓÒÅÄÓÔÁÍ...doc
Скачиваний:
6
Добавлен:
18.11.2019
Размер:
2.02 Mб
Скачать

Событийные процедуры

На процедурном листе формы размещаются процедуры обработки событий, связанных с формой и объектами формы. Для перехода на процедурный лист используйте команду Code из меню View или клавишу F7 в режиме конструктора формы.

На этом же листе могут размещаться дополнительные процедуры, необходимые для выполнения событийных процедур. Дополнительные процедуры располагаются в разделе General. Процедуры, общие для всего проекта в целом, рекомендуется размещать в стандартных модулях проекта.

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

Важно

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

Например, вызов процедуры text_Analysis, расположенной на процедурном листе формы UserForm1 будет выглядеть так: UserForm1.text_Analysis.

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

Важно

  • Двойной щелчок на элемент управления или свободное пространство формы высвечивает процедуру события по умолчанию соответствующего объекта.

Для записи любой событийной процедуры следует

  • перейти на процедурный лист формы,

  • в окне объектов (вверху слева) выбрать объект формы,

  • в окне событий (вверху справа) выбрать событие объекта.

Автоматически появятся команды начала и конца событийной процедуры, ассоциированной с выбранным событием объекта. Процедура имеет стандартное имя, состоящее из имени объекта и названия события, которые разделены нижним подчеркиваием (_).

Важно

  • Имя событийной процедуры не должно изменяться разработчиком, за исключением случаев, когда команды, записанные в этой процедуре, не должны быть предназначены для чего-нибудь другого, кроме выполнения при возникновении события.

Пример

Форма-приветствие.

  1. Вставьте новую форму. В папке Forms появится строка UserForm1.

Рис. 7.3. Форма-приветствие с двумя элементами управления

  1. Разместите на ней два элемента управления TextBox и CommandButton. Они получат стандартные имена TextBox1 и CommandButton1.

  2. Двойной щелчок на элемент CommandButton1 переводит на процедурный лист формы. При этом точка вставки будет установлена в процедуре CommandButton1_Click().

Рис. 7.4. Событийные процедуры нажатия на кнопку и инициализации формы

  1. Введите тексты событийных процедур, показанных на рис. 7.4. Для вставки событийной процедуры инициализации формы UserForm_Initialize выберите объект UserForm в окне объектов и событие Initialize в списке событий.

Режим выполнения

Для запуска формы используется команда Run Sub/UserForm меню Run (можно нажать кнопку Run или клавишу F5). В режиме выполнения форма высвечивается на фоне активного листа активной рабочей книги.

Рис. 7.5. Форма-приветствие в режиме выполнения

Форма высветит приветствие после ввода пользователем своего имени в поле ввода и нажатия на командную кнопку CommandButton1.

В режиме выполнения одновременно могут быть высвечены несколько форм, но только одна форма активна в единицу времени. Ее окно расположено поверх остальных окон и титульная строка высвечена ярко. Неактивные формы могут быть невидны, например, спрятаны оператором Hide.

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

Действия пользователя могут инициировать запуск других форм. Последняя загруженная форма является активной.

Важно

  • При загрузке формы резервируется некоторый объем оперативной памяти и в какой-то момент может произойти нехватка памяти, поэтому следует выгружать из памяти уже ненужные формы командой Unload, размещенной в событийной процедуре формы.

  • Форма находится в режиме выполнения до выгрузки ее из памяти командой Unload или нажатием на кнопку закрытия окна формы.

  • По окончании любой событийной процедуры происходит высвечивание формы, если в конце процедуры не стоит команда выгрузки формы Unload или команда скрытия формы Hide.

  • Переменные, определенные на уровне модуля процедурного листа выполняемой формы, или определенные на модульном уровне в стандартных модулях (глобальные переменные), сохраняют свои значения на все время выполнения формы.

  • Локальные переменные, определенные в событийных процедурах не как Static, теряют свои значения по окончании выполнения событийной процедуры и высвечивания формы.

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

После завершения работы всех загруженных форм последняя активная форма автоматически открывается в режиме конструктора.