Access 2002

События не происходят сами по себе


Если вы внимательно просмотрите модуль класса Incremental Search, то обнаружите, что процедуры Property Set объектов ListBox и TextBox несколько сложнее, чем было ранее. Дело в том, что Access выполняет некоторую оптимизацию приложений, из-за чего вам как программисту придется выполнить еще одну небольшую работу.

Если в свойстве-событии объекта Access не обнаружит слов "[Event Procedure]", она не сгенерирует соответствующее событие. Это означает, что даже после того, как вы объявите переменную элемента управления с ключевым словом WithEvents и присвоите ей указатель на объект, ни одна процедура обработки его событий не будет выполняться, если не присвоить соответствующему свойству

объекта значение "[Event Procedure]". Можно, конечно, выбрать данное значение в окне свойств объекта, но это не согласуется с идеей класса, согласно которой пользователь-программист изолируется от подробностей реализации функций. Поэтому в каждом нашем классе, реагирующем на события внешиих объектов, вы увидите процедуры свойств, которые настраивают эти объекты и определяют, какие события будут ими сгенерированы. Например, процедура Property Set свойства TextBox рассматриваемого класса выглядит так:

То, что значения свойств OnChange и OnLostFocus устанавливаются только во время выполнения программы, не имеет значения. Программа Access видит значение свойства и знает, что теперь она должна генерировать соответствующее событие. Если вам когда-нибудь придется разрабатывать собственные классы, реагирующие на события внешних объектов, не забывайте указать Access, что она должна генерировать эти события, как сделано в процедуре Property Set свойства TextBox.

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