Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Пользовательские диалоговые окна
Диалоговые окна предназначены для информирования пользователя, а также для получения данных от пользователя. В большинстве случаев диалоговые окна являются модальными (т. е. блокирующими все окна приложения) и отображаются на непродолжительный промежуток времени. В разд. 1.6 мы уже рассматривали встроенные диалоговые окна, позволяющие вводить данные или отображать сообщения. Однако, возможностей этих диалоговые окон часто недостаточно. В этой главе мы научимся создавать пользовательские диалоговые окна произвольного назначения.
Создание формы
Создание диалогового окна начинается с создания формы. Создать пустую форму можно следующими способами:
- из меню Insert выбираем пункт UserForm;
- в окне Project Explorer щелкаем правой кнопкой мыши на ярлыке любого листа (или на свободном месте) и из контекстного меню выбраем пункт Insert | UserForm;
- нажимаем кнопку Insert | UserForm на панели инструментов Standard.
В результате будет создана форма и отображена в отдельном окне. Вместе с формой автоматически создается модуль формы и его ярлык добавляется в окне Project Explorer в папку Forms. В нашем случае в папку Forms добавляется ярлык UserForm1. Двойной щелчок на этом ярлыке приводит к отображению окна с формой. Аналогичного результата можно достичь, если щелкнуть правой клавишей мыши на ярлыке и из контекстного меню выбрать пункт View Object. Чтобы отобразить модуль формы следует щелкнуть правой клавишей мыши на ярлыке и из контекстного меню выбрать пункт View Code.
Отображение и сокрытие окна
Для отображения окна из программы предназначен метод Show()
объекта формы. Формат метода:
Show [<Модальность>]
Метод Show()
загружает объект формы в память, если она не была загружена ранее, и отображает окно. В необязательном параметре <Модальность>
можно указать будет окно модальным (блокирующим все другие окна приложения) или нет. Если указана константа vbModal
(имеет значение 1
) или параметр не указан, то окно будет модальным. Чтобы сделать окно немодальным следует указать константу vbModeless
(имеет значение 0
).
Попробуем отобразить созданную в предыдущем разделе форму. Для этого в пользовательском модуле создаем процедуру ОтобразитьФорму()
со следующим кодом:
Sub ОтобразитьФорму()
UserForm1.Show
End Sub
Далее запускаем эту процедуру на выполнение, нажимая клавишу <F5>. В результате по центру окна приложения отобразится пользовательское окно. Так как параметр <Модальность>
не указан, окно будет модальным. Пользователь не сможет взаимодействовать с рабочим листом пока не закроет диалоговое окно. Чтобы закрыть окно следует нажать кнопку Закрыть в заголовке окна.
Метод Hide()
позволяет скрыть окно. При этом объект формы не удаляется из оперативной памяти компьютера и с ним можно работать программно.
С помощью процедуры Load <Объект формы>
можно загрузить объект формы в оперативную память. При этом окно не отображается на экране, но с ним можно работать из программы. Для удаления объекта формы из оперативной памяти предназначена процедура Unload <Объект формы>
.
В качестве примера усложним нашу программу и добавим на форму кнопку, при нажатии которой закроем окно. Отображаем окно с формой, сделав двойной щелчок на ярлыке UserForm1 из папки Forms в окне Project Explorer. Вместе с окном формы откроется окно Toolbox с различными компонентами. Если окно Toolbox не открылось, то из меню View выбираем пункт Toolbox. В окне Toolbox щелкаем мышью на переключателе CommandButton, переходим в окно с формой и щелкаем мышью внутри формы. В результате кнопка отобразится на форме.
Теперь добавим процедуру-обработчик нажатия кнопки. Для этого делаем двойной щелчок на кнопке внутри формы. В результате отобразится окно модуля формы. Внутри процедуры CommandButton1_Click()
добавляем вызов процедуры Unload()
:
Private Sub CommandButton1_Click()
Unload Me
End Sub
Обратите внимание на ключевое слово Me
, которое мы использовали вместо названия объекта формы. Это ключевое слово ссылается на объект текущей формы.
Далее изменим процедуру ОтобразитьФорму()
в пользовательском модуле. Внутри этой процедуры загрузим форму в оперативную память, изменим надпись на кнопке, а затем отобразим окно:
Sub ОтобразитьФорму()
Load UserForm1
UserForm1.CommandButton1.Caption = "Закрыть окно"
UserForm1.Show
End Sub
Помощь сайту
Yandex-деньги: 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов