Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Макросы.doc
Скачиваний:
28
Добавлен:
21.11.2018
Размер:
16.91 Mб
Скачать

Вызов экранной формы

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

В следующем 16-м часе "Панели инструментов" мы подробно рассмотрим методы работы с панелями инструментов, а в 17-м часе "Работа с меню" - методы работы с меню.

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

frmGuestExpenses.Show

Метод Show загружает экранную форму в память компьютера и выводит ее на экран. Для создания такой процедуры выполните следующее.

  1. Перейдите в редактор Visual Basic (если вы находитесь не в нем) и вставьте новый модуль в рабочую книгу.

  2. Создайте новую процедуру и назовите ее ЗагрузкаФормы.

  3. Введите код процедуры

frmGuestExpenses.Show

  1. Перейдите в рабочую книгу на Лист1 и вставьте в этот рабочий лист командную кнопку.

Для вставки в рабочий лист командной кнопки надо отобразить панель инструментов Формы.

  1. Когда откроется диалоговое окно Назначить макрос объекту, выберите в списке Имя макроса пункт ЗагрузкаФормы.

  2. Задайте название командной кнопке Карточка гостевых расходов и щелкните вне кнопки, чтобы снять с нее выделение.

  3. Щелкните на этой командной кнопке. Откроется наша форма. Отметьте, что списки Типы расходов и Типы карт заполнены, как и поле Дата.

  4. Закройте форму.

Итак, вызов экранной формы осуществляется с помощью метода Show. В следующих главах книги созданную здесь процедуру ЗагрузкаФормы мы будем использовать для назначения ее кнопке панели инструментов и пункту меню.

Управление поведением формы

Процедура, выводящая форму на экран, создана. Теперь надо подумать о том, как форма будет себя вести на экране, т.е. продумать реакцию ее элементов на различные события, вызываемые действиями пользователя. Например, при установке флажка Включить в группе элементов Дополнительно надо снять блокировку с поля ввода сумму. Надо также снять блокировку с полей, принимающих информацию о кредитной карте, если выбран переключатель Кредитная карта. За подобные действия должна отвечать процедура, вызываемая событием Change (Изменить). Это событие генерируется всякий раз, когда изменяется значение свойства Value (Значение) какого-либо элемента управления. В данном случае, чтобы изменить свойства связанных элементов, надо сначала изменить значение свойства Value на True флажка Включить и переключателя Кредитная карта.

Выполните следующую последовательность действий.

  1. Перейдите в редактор Visual Basic (если вы находитесь не в нем) и откройте форму frmGuestExpense.

  2. Дважды щелкните на флажке Включить, чтобы открыть окно кода.

  3. В списке событий в верхней части окна кода выберите событие Change и в процедуру chkTipIncluded_Change введите следующий код:

If chkTipIncluded.Value = True Then

 lblTipAmount. Enabled = True

 txtTipAmount.Enabled = True

Else

 lblTipAmount.Enabled = False

 txtTipAmount.Enabled = False

End If

  1. В левом верхнем списке над окном кода (где сейчас отображается chkTipIncluded) щелкните на кнопке со стрелкой, направленной вниз. В открывшемся списке выберите optCreditCard (переключатель Кредитная карта).

  2. В списке событий выберите событие Change. В окне кода отобразится заголовок процедуры optCreditCard_Change.

  3. Введите код этой процедуры:

If.optCreditCard.Value = True Then

 lblCardType.Enabled = True

 lstCardType.Enabled = True

 lblCardNumber.Enabled = True

 txtCardNumber.Enabled = True lblExpires.Enabled = True

 txtExpires.Enabled = True

Else

 lblCardType.Enabled = False lstCardType.Enabled = False

 lblCardNumber.Enabled = False txtCardNumber.Enabled = False

 lblExpires.Enabled = False

 txtExpires.Enabled = False

End If

  1. Перейдите в рабочую книгу на Лист1 и щелкните на командной кнопке. Отобразится форма (рис. 15.3).

  2. Установите флажок Включить. Поле ввода сумму станет доступным.

  3. Установите переключатель Кредитная карта. Связанные с этим переключателем поля станут также доступными (рис. 15.4).

  4. Закройте форму и сохраните рабочую книгу. Возвратитесь в редактор Visual Basic.

Рис. 15.3. После открытия формы некоторые элементы недоступны

Рис. 15.4. С помощью события Change все элементы стали доступны

В процедуре optCreditCard_Change событие Change использовалось для проверки значения свойства Value, и в зависимости от этого значения блокировка элементов управления или снималась (свойство Enabled равно True) или устанавливалась (свойство Enabled равно False). Но при обработке события Change вы не ограничены работой только со свойством Enabled, можно изменить значения таких свойств элементов управления, как Text, Value или Caption.