Access 2002

Класс commondlg


Если вас интересует, нажал ли пользователь кнопку Cancel (а не просто щелкнул на кнопке ОК, не выбрав ни одного файла), добавьте в свою процедуру дополнительный код.

1.   Присвойте свойству Cancel Error объекта CommonDlg значение True.

2.   Включите в процедуру обработчик ошибок и проверьте в нем наличие ошибки cdlCancel (32755). Эту ошибку генерирует класс CommonDlg после того, как пользователь щелкнет на кнопке Cancel (или нажмет клавишу Esc).

В обработчике события можно отреагировать на нажатие пользователем этой кнопки. Однако чаще приложение просто продолжает работу, не делая в ответ ничего особенного. Например, обработчик события cmdChooseCol or_C1 ick из модуля формы frmTestCommonDlg в случае нажатия кнопки Cancel просто ничего не делает (об использовании диалогового окна выбора цвета подробно рассказывается в специально посвященном ему разделе этой главы):

Обязательно проверьте, какая из опций перехвата ошибок выбрана для параметра VBA Error Trapping (Tools  Options  General). Если выбрана опция Break in Class Module, ни один из модулей класса, в которых вы перехватываете ошибку cdlCancel, не будет работать правильно. Дело в том, что эта опция заставляет VBA перейти в режим останова, как только произойдет ошибка в модуле класса. В Visual Basic, создающем независимые приложения, эта опция полезна, но в Access она может пригодиться лишь в некоторых случаях и только на время отладки. Оставлять ее в готовом приложении нельзя. Так что выберите лучше опцию Break on Unhandled Errors, иначе вы не сможете пользоваться свойством класса CancelError. Хотите убедиться? Установите опцию Break in Class Module, откройте форму frmTestCommonDIg, щелкните в ней на первой кнопке, а в диалоговом окне открытия файла — на кнопке Cancel. Вы тут же окажетесь в редакторе Visual Basic в режиме останова — выполнение кода будет остановлено в обработчике ошибки.

Комментарии закрыты