Ссылки на объекты

Первый вопрос, который следует обсудить, — как обратиться к объекту. Для обращения к объекту существует одно общее правило: нужно проследить путь в иерархии объектов, начиная от объекта самого верхнего уровня, до целевого объекта и записать последовательность имен встреченных на пути объектов или семейств, отделяя их друг от друга точкой. Если на пути встречается семейство, то, кроме имени семейства, необходимо в скобках указать индекс или имя его элемента, т. е. задать конкретный объект в семействе. Например, чтобы обратиться к форме, входящей в состав семейства AllForms, необходимо написать следующее выражение:

 Application.CurrentProject.AllForms ("Заказы клиента") 

Таким образом, чтобы правильно создавать ссылки на объекты, нужно достаточно хорошо представлять себе место каждого объекта в иерархии объектов модели. Такие длинные ссылки особенно характерны для моделей, которые имеют многоуровневую, иерархическую структуру, например DАО. На самом деле, на практике чаще применяют не полные, а сокращенные ссылки. Дело в том, что наиболее часто используемые семейства, объекты, свойства и методы считаются глобальными. Ссылки на них хранятся в специальном объекте с именем Global. Для обращения к глобальному объекту можно пропустить объекты более высокого уровня.

Например, семейство Forms является глобальным. Для доступа к объекту этого семейства можно использовать сокращенную ссылку вида:

Forms ( "Заказы") вместо полной ссылки:

Application. Forms ( "Заказы")

Замечание

Узнать, какие объекты, свойства и методы являются глобальными, позволяет окно просмотра объектов. Чтобы отобразить список глобальных компонентов объектной модели, выберите элемент <globals> в списке Classes в окне просмотра объектов.

Кроме указанного способа ссылки на объект, входящий в состав семейства, существуют и другие способы, которые можно использовать, причем требующие меньшего числа нажатий клавиш. При любом способе обращения к объекту возвращается ссылка на объект, находящийся в памяти.

Обычно имя семейства и имя объекта разделяются оператором "!" (восклицательный знак), например:

 Forms ! Товары 

Если имя объекта состоит из нескольких слов, разделенных пробелом, тогда вам придется написать

 Forms![Заказы клиента] 

Третий способ ссылки состоит в том, что на объект в семействе ссылаются не по названию, а по индексу, например:

 Properties(0) 

Такой способ применяется обычно тогда, когда имя объекта неизвестно. В то же время каждый объект в семействе имеет индекс (порядковый номер), который обычно начинается с нуля. Есть, правда, исключения из этого правила, например в семействе CommandBars модели Microsoft Office нумерация объектов начинается с, единицы. Поэтому перед использованием индексов лучше узнать о способе нумерации в справочной системе Access.

И наконец, последний способ ссылки на объект состоит в использовании вместо имени объекта строковой переменной, например:

 Reports (strИмяОтчета) 

Если какой-то объект содержит несколько семейств объектов более низкого уровня, то одно из этих семейств, обычно наиболее часто используемое, считается стандартным или семейством по умолчанию. Можно обращаться к объекту, входящему в это семейство, не указывая имени семейства. Например, для объекта TableDef модели DАО стандартным семейством считается Fields. Поэтому для обращения к столбцу таблицы можно использовать сокращенную ссылку

 TableDefs!Должности!Код Должности вместо полной ссылки 
 TableDefs!Должности.Fields!КодЦолжности 

Совет

Использование сокращенных ссылок в программах предпочтительнее еще и потому, что в этом случае программы будут выполняться быстрее.

Еще одним способом сокращения ссылки на объект является использование объектной переменной. Особенно полезно использовать объектную переменную, если к объекту нужно обратиться несколько раз. (О том, как объявить объектную переменную и установить ссылку на объект см. разд. "Язык Visual Basic для приложений" выше в данной главе.)