Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В Access было два типа модулей: стандартные модули и модули классов. В Access 95 модули классов существовали только совместно с формой или отчетом. В Access 97 они также существовали на вкладке Модули окна базы данных.
Создание настраиваемых объектов с модулями классов
Используйте модуль класса для создания определения для пользовательского объекта. Имя, с которым сохраняется модуль класса, становится именем настраиваемого объекта. Общедоступные процедуры Sub и Function, определяемые в модуле класса, становятся настраиваемыми методами объекта. Общедоступные процедуры Property Let, Property Get и Property Set становятся свойствами объекта.
После определения процедур в модуле класса можно создать новый объект, создав новый экземпляр класса. Чтобы создать новый экземпляр класса, объявите переменную типа, определяемую этим классом. Например, если имя класса — ABasicClass, его новый экземпляр создается указанным ниже образом:
Dim abc As New ABasicClass
При запуске кода с этим объявлением Visual Basic создает новый экземпляр. После этого можно применить его методы и свойства с помощью переменной. Например, если определен настраиваемый метод ListNames, можно применить его указанным ниже образом:
abc.ListNames
Создание стандартного экземпляра класса формы (Access 95)
Когда форма открывается в представлении формы из пользовательского интерфейса или из Visual Basic, создается экземпляр модуля класса этой формы. Другими словами, в памяти назначается место, где теперь существует объект, и можно вызывать его методы и устанавливать или возвращать его свойства из кода, как для любого встроенного объекта. Это же касается открытия отчета в режиме предварительного просмотра.
Когда вы ссылаетесь на форму в коде Visual Basic, обычно работа выполняется со стандартным экземпляром класса формы. У класса формы есть только один стандартный экземпляр. Можно также создать несколько экземпляров одного класса формы в Visual Basic. При создании нескольких экземпляров класса формы создаются нестандартные экземпляры.
Существует четыре способа создания стандартного экземпляра формы. Можно открыть существующую форму с помощью пользовательского интерфейса, выполнив метод OpenForm объекта DoCmd путем вызова метода CreateForm и переключения новой формы в представление формы, или с помощью Visual Basic для создания переменной типа Form для ссылки на стандартный экземпляр. В приведенном ниже примере открывается форма Employees (Сотрудники) и с ней сопоставляется переменная объекта Form:
Dim frm As Form
DoCmd.OpenForm "Employees"
Set frm = Forms!Employees
В Access также существует легкий способ, позволяющий одним действием открыть форму и добавить ссылку на метод или свойство этой формы или на один из ее элементов управления. Укажите ссылку на модуль класса формы, как показано в приведенном ниже примере:
Form_Employees.Visible = True
Form_Employees.Caption = "New Employees"
При выполнении этого кода Access открывает форму Сотрудники в представлении формы, если она еще не открыта, и задает для формы заголовок "Новые сотрудники". Форма не отображается, пока явно не зададите ее свойству Visibleзначение True. Когда завершится выполнение процедуры, вызывающей этот код, этот экземпляр формы уничтожается, т. е. форма закрывается.
При попытке выполнить этот код, когда форма Employees (Сотрудники) открыта в представлении конструктора, в Access возникнет ошибка времени выполнения. Эта форма должна быть открыта либо в представлении формы, либо не должна открываться.
Если вы используете этот синтаксис для изменения свойства формы или одного из ее элементов управления, это изменение будет потеряно при уничтожении экземпляра формы. Это же происходит при каждом изменении значения свойства для формы в представлении формы. Необходимо изменять свойства в представлении конструктора и сохранять изменение с формой.
Создание нескольких нестандартных экземпляров форм
Можно создать несколько нестандартных экземпляров класса формы, если нужно отобразить несколько экземпляров форм одновременно. Например, может потребоваться одновременно отобразить записи для сотрудника и руководителя. Можно создать один экземпляр класса формы Employees (Сотрудники), чтобы отобразить запись сотрудника, и один экземпляр для отображения записи руководителя.
Чтобы создать новые нестандартные экземпляры класса формы в Visual Basic, объявите переменную, для которой типом является имя модуля класса формы. В объявление переменной нужно включить ключевое слово New. Например, в приведенном ниже коде создается новый экземпляр формы Employees (Сотрудники), который присваивается переменной типа Form:
Dim frm As New Form_Employees
Этот нестандартный экземпляр формы не отображается, пока свойству Visible не будет явным образом присвоено значение.
Когда завершится выполнение процедуры, создающей этот экземпляр, экземпляр удаляется из памяти, если не объявлена переменная, представляющая его в виде переменной уровня модуля. Так как переменные уровня модуля хранят свои значения, пока они не будут сброшены с помощью команды Reset в меню Run или кнопки Reset на панели инструментов, форма остается открытой, если переменная была объявлена как переменная уровня модуля.
Любые установленные свойства влияют на этот экземпляр класса формы, но не сохраняются с формой. Кроме того, нельзя создать новый экземпляр класса формы, если форма открыта в представлении конструктора.
На нестандартный экземпляр класса формы нельзя сослаться по имени в коллекции Forms. Ссылаться на него только по номеру индекса. Так как можно создать несколько нестандартных экземпляров формы с одним именем, может существовать несколько форм с одним именем в коллекции Forms. Различить их можно только по номеру индекса.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.