Скрытие и отображение форм

 

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

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

Если форма не открыта (не загружена), а мы пытаемся ее показать, возникнет ошибка, поэтому желательно пользоваться проверкой (If IsLoaded("Форма2") Then ...):

' Процедура вызывается из модуля формы Форма1

Private Sub Кнопка4_Click()

' отключаем прорисовку экрана
DoCmd.Echo False

' выделяем форму Форма2 и скрываем ее
DoCmd.SelectObject acForm, "Форма2"
DoCmd.RunCommand acCmdWindowHide

' можно и просто RunCommand acCmdWindowHide

' включаем прорисовку экрана
DoCmd.Echo True
End Sub

' покажем скрытую форму Форма2

Private Sub Кнопка5_Click()

' отключаем прорисовку экрана
DoCmd.Echo False

' показываем скрытую Форма2
DoCmd.SelectObject acForm, "Форма2"

' вернем фокус на форму Форма1, т.е. обратно
Me.SetFocus

' включаем прорисовку экрана
DoCmd.Echo True
End Sub

Список скрытых форм также можно отобразить, выбрав команду Окно -> Отобразить.

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

' Процедура вызывается из модуля формы Форма1

Private Sub Кнопка4_Click()

' отключаем прорисовку экрана
DoCmd.Echo False

' просто выполняем код - текущая форма скроется прямо из под мышки ;)
DoCmd.RunCommand acCmdWindowHide

' включаем прорисовку экрана
DoCmd.Echo True
End Sub

конечно, неплохо было бы еще и первоначально открывать форму в скрытом режиме

Private Sub Form_Open(Cancel As Integer)

' при открытии основной формы сразу в скрытом режиме открываем вспомогательную форму Форма1
DoCmd.OpenForm ("Форма1"), , , , , acHidden
End Sub


Страница сайта http://interface.ru
Оригинал находится по адресу http://interface.ru/home.asp?artId=7435