Access 2002

Возможность обрабатывать элементы управления


Например, неплохо было бы иметь возможность обрабатывать элементы управления посредством функции SendMessage, включенной в состав API Windows. Но, как бы нам этого ни хотелось, в Access это невозможно, что имеет две важные причины.

Элемент управления становится активным только в том случае, если вы щелкнули на нем или выбрали его, нажав соответствующую клавишу. Так как нельзя полагаться на то, что событие Enter или GotFocus каким-то чудесным образом преобразует ваш «нарисованный» элемент управления в настоящее окно, почти невозможно найти событие, которое бы вам подошло.

Элементы управления Access являются подклассами стандартных элементов управления Windows. Они не реагируют на многие обычные сообщения Windows, если вообще реагируют на что-либо. Даже если вам удастся поймать момент, когда элемент управления активен, он, скорее всего, будет игнорировать любые сообщения, посланные ему посредством функции SendMessage.

Мы уже говорили о том, что нельзя рассчитывать на использование функции SendMessage для работы с элементами управления Access. Однако так уж получилось, что, то ли по ошибке, то ли по счастливой случайности, текстовое поле

Access все-таки реагирует, по крайней мере, на одно сообщение Windows, а именно — EM_SETLIMITTEXT. Поэтому функцию SendMessage из Windows API можно использовать для ограничения числа символов, вводимых пользователем в текстовое поле. Это может быть полезно в случае, когда текстовое поле связано с MEMO-полем таблицы, длина которого ограничена, например, 1000 символами.

Вас может заинтересовать, почему для ограничения количества символов, вводимых в текстовое поле, нельзя использовать событие Change. Дело в том, что событие Change невозможно отменить.

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