Access 2002

Процедура NewCustomerForm


Процедура NewCustomerForm каждый раз увеличивает значение глобальной переменной mintl, играющей роль счетчика экземпляров формы. Это число добавляется в заголовок каждого нового экземпляра формы, чтобы пользователь мог отличать их друг от друга. Когда ссылка на новый объект добавляется в коллекцию col Forms, для него указывается ключ — уникальный идентификатор объекта в коллекции, в качестве которого мы использовали дескриптор окна экземпляра формы (hWnd). По этому дескриптору мы в дальнейшем сможем найти объект в коллекции и при необходимости удалить его. (Помните, что все экземпляры формы создаются с одним и тем же именем, так что это имя не может служить ключом в коллекции col Forms. Дополнительную информацию о дескрипторах окон вы получите в разделе «Дескрипторы окон, классы окон и многодокументный интерфейс» этой главы.) Создав очередной экземпляр формы, процедура немного смещает его на экране, чтобы он не закрывал предыдущий, присваивает его свойствам Filter и FilterOn значения из исходной формы и выводит его на экран.

Вот теперь у нас есть коллекция, содержащая ссылки на все экземпляры формы. Можно по очереди перебирать все ее элементы или непосредственно обращаться к нужному объекту по дескриптору его окна.

Если для работы с экземплярами формы вы создали коллекцию ссылок, после закрытия одного из экземпляров нужно удалить ссылку на него из этой коллекции. В нашем примере это делает обработчик события формы Close, вызывающий следующую процедуру.

В результате коллекция всегда соответствует текущему набору экземпляров формы.

    

Мы не включаем исходную форму в коллекцию ее экземпляров. Поэтому, когда из обработчика события Close этой формы вызывается процедура Removelnstance, попытка удалить несуществующую ссылку из коллекции приводит к ошибке. Эту ошибку мы игнорируем.

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