Файл: Освой самостоятельно программирование для MS Access 2002 за 24 часа [П.Киммел].pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 21.10.2020

Просмотров: 7873

Скачиваний: 25

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

4

Необходимо установить файл анимации

 который не уста-

навливается по умолчанию вместе с Accesss.

Строка 2 листинга

 содержит объявление константы с наименованием

файла Помощника Office, в строке 3 определяется переменная Outlook

типа Object, которой далее присваивается экземпляр

 Подобный

стиль создания объектов носит название

 динамического связывания —

 объ-

ект ассоциируется с переменной в процессе выполнения программы. Аль-
тернативный способ —

 статическое связывание —

 предполагает предвари-

тельное объявление переменной заведомо известного типа. Чтобы получить
возможность статического связывания объектов Outlook, в диалоговом окне

References необходимо установить флажок Microsoft Outlook 10.0 Object
Library. В случае статического связывания строки

 листинга

 должны

быть заменены следующим выражением:

Dim Outlook As New

Способ динамического связывания более гибок — он позволяет присваивать пере-

менной типа Object объект любого класса. При статическом связывании методы и
свойства объектов класса доступны уже на этапе проектирования программы. По-
скольку в этом случае тип заранее известен, редактор Visual Basic по мере набора тек-
ста открывает контекстные меню, в которых находятся, в

 атрибуты инте-

ресующего вас класса.

Строка 5 содержит инструкцию задания имени файла Помощника, далее фигурка

последнего изображается на экране, а команда строки 7 заставляет Помощника выйти

"на

 бис".

Использование объекта NameSpace

Сейчас вы уже знаете, как создать экземпляр Outlook. (Доступ к ранее созданному

объекту можно получить, воспользовавшись функцией Getobject.) Далее необходимо
освоить способы построения объектов, представляющих сообщения электронной поч-
ты, задачи, сведения о контактах и данные календаря. К сожалению, в объектной мо-
дели подобные возможности явно не предусмотрены.

Все объекты Outlook, располагающие информацией о размещении данных, подчи-

нены абстрактному корневому объекту NameSpace. Для доступа ко всем разновидно-
стям данных Outlook необходимо использовать вызов

 (

 воз-

вращающий объект класса NameSpace. Обладая объектом NameSpace, вы сможете до-
браться до источников данных (скажем, информации о контактах) с помощью кол-

лекции Folders. Листинг 24.2 демонстрирует пример построения объекта NameSpace.

Листинг 24.2. Пример построения объекта NameSpace

1: Sub

 )

2 : Dim N As NameSpace

3: Set N =
4: End Sub

"MAPI" )

В строках 1-4 листинга 24.2 переменная класса NameSpace объявляется,

I а затем инициализируется соответствующим объектом MAPI

 (Mail API).

Допускается существование только одного объекта NameSpace MAPI в

пределах текущего сеанса Access. Наименование функции и факт исполь-
зования в ней текстового аргумента дают основание предположить, что

430

Часть VIII. Объектно-ориентированное программирование в Access


background image

в будущем Microsoft, вероятно, предоставит средства создания объектов

 и других разновидностей. Планируя обратиться к данным

Outlook, используйте конструкцию вызова, приведенную выше.

Построив объект NameSpace, вы получаете возможность обращения к данным

Outlook с помощью коллекции Folders. Об этом — далее.

Использование коллекции

В составе объекта NameSpace MAPI содержится коллекция Folders объектов

класса

 Каждый элемент списка папок, отображаемого в окне приложе-

ния Microsoft Outlook (рис.

 представляется отдельным объектом MAPlFolder.

Чтобы получить доступ к содержимому любой из папок, необходимо обратиться к со-
ответствующему объекту коллекции. Табл. 24.1 приводит список предопределенных
констант, обозначающих различные объекты MAPlFolder.

 '

 i

 (1)

 24.  Прикладная программа способна получить доступ

к содержимому стандартных папок Outlook

Таблица

 константы для обозначения объектов MAPlFolder

Константа

Название лапки и описание объекта

olFolderContacts

s

olFolderDrafts

Календарь; коллекция items содержит объекты

Контакты; коллекция items содержит объекты

Удаленные; коллекция items содержит объекты

 Item

Черновики; коллекция items содержит объекты

Входящие; коллекция Items содержит объекты Mailltem

Дневник; коллекция items содержит объекты

 час. Управление информацией о контактах Outlook

431


background image

Окончание табл. 24.1

Константа

Название папки и описание объекта

olFolderSentMail

olFolderTasks

Заметки; коллекция Items содержит объекты

Исходящие; коллекция items содержит объекты

Отправленные; коллекция items содержит объекты Mailitem

Задачи; коллекция items содержит объекты

Подробности, касающиеся объектов MAPIFolder каждого из указанных в таблице

видов, вы сможете найти в оперативной справочной системе Outlook.

Объект MAPIFolder содержит коллекцию Items. Вы уже знаете, что такое коллек-

ции и как с ними

 Тип элементов коллекции (см. табл. 24.1) зависит от разно-

видности объекта MAPIFolder. Маленький пример: в результате вызова GetDefault-

 (olFolderContacts) будет возвращен объект MAPIFolder, который содержит

информацию о контактах. Эта информация оформлена в виде коллекции, каждый эле-
мент которой представляет собой объект класса

 Листинг 24.3 демонстри-

рует способ получения одного из элементов коллекции в объекте MAPIFolder, который
ссылается на предлагаемую по умолчанию папку с данными о контактах.

Листинг 24.3. Пример получения информации о контактах

1: Sub

 )

2: Dim Outlook As New

 Dim

 As

4: Set NameSpace =

 "MAPI" )

5: Dim Folder As MAPIFolder
6: Set Folder =
7: Dim Contact As Contactltem
8: Set Contact =

 Sub

В строке 2 листинга 24.3 посредством статической привязки создается эк-

земпляр Outlook. Строка 3 содержит объявление переменной типа Name-

Space, которая инициализируется в строке 4. В строке 5 объявляется пе-

ременная Folder типа MAPIFolder; в строке 6 ей присваивается значе-
ние объекта MAPIFolder, который ссылается на папку с информацией о
контактах. Строка 7 содержит выражение объявления переменной Con-

tact типа Contactltem. В строке 8 выполняется поиск элемента кол-

лекции, в свойстве FullName которого хранится значение "Lori
Kimmel", и присвоение этого элемента переменной Contact. В качестве
индекса вместо строки допускается задавать целочисленное выражение,
значение которого не превышает величину, хранящуюся в

Команда строки 9 отображает значение свойства

 выбранного

объекта-элемента коллекции в окне Immediate. Более лаконичный вари-

ант той же процедуры приведен в листинге 24.4.

Листинг 24.4. Сокращенный вариант процедуры листинга 24.3

1: Sub

 )

2: Dim Outlook As New

432

Часть VIII. Объектно-ориентированное программирование в Access


background image

olFolderContacts

 Items

4:

 End Sub

I В строке 2 объявляется и создается экземпляр Outlook, а строка 3 содер-

 выражение, иллюстрирующее иерархию членства объектов, относя-

щихся к классу NameSpace.

Просмотр информации о контактах

Outlook в Access

В настоящем и последующих разделах главы содержится ряд примеров практиче-

ского использования информации Outlook во внешнем приложении. Листинг 24.5 де-
монстрирует способы доступа к данным о контактах посредством манипуляций с со-

ответствующим объектом MAPlFolder.

Листинг 24.5. Пример процедуры для просмотра информации о контактах Outlook

Sub

 )

Dim Outlook As New

Dim NameSpace As NameSpace

Set NameSpace

 "MAPI" )

Dim ContactFolder As MAPlFolder

Set ContactFolder =

 olFolderContacts

End Sub

В строках

 листинга 24.5 выполняются операции создания экземпляра

Outlook и объекта NameSpace, а также построения ссылки на папку, со-

держащую информацию о контактах. Метод Display класса
MAPlFolder, который вызывается в строке 7, открывает окно экземпляра

Outlook, созданного ранее, и передает фокус элементу Контакты
(Contacts) дерева, отображаемого в дочернем окне Список папок. Лис-
тинг 24.5 демонстрирует один из способов управления пользовательским

интерфейсом Outlook из внешней прикладной программы.

Приведенный пример, текст которого отображен в листинге 24.6, иллюстрирует

возможности доступа к каждому из элементов коллекции контактов. Обладая ссылкой

на элемент данных, вы можете решать какие угодно задачи.

Листинг 24.6. Пример процедуры циклической обработки элементов

данных о контактах

1:

 Sub

 )

2: Dim Outlook As New

 Dim NameSpace As NameSpace

4: Set NameSpace

 "MAPI" )

5: Dim ContactFolder As MAPlFolder

6: Set ContactFolder

 Dim

 As Variant

8: For Each Contactltem In

24-й час. Управление информацией о контактах Outlook

433


background image

9:

10: Next Contactltem

 Sub

Строки

 вы видели уже несколько раз. Строка 6 содержит

I цию получения ссылки на объект

 имеющий отношение к

информации о контактах. Атрибут Items класса MAFlFolder — это
обычная коллекция, и к ней применимы все известные вам операции.
Например, задача прохождения по элементам коллекции легко решается
с помощью цикла For Each .

 Next, индекс которого задается пере-

менной типа Variant (строка 7). В этой ситуации, кроме того, приме-
нима и циклическая конструкция For

 Next, на каждом шаге кото-

рой очередной элемент коллекции должен быть присвоен переменной

типа Variant.

Процедура листинга 24.6 осуществляет вывод содержимого элемента коллекции

контактов в окно Immediate; впрочем, внутри цикла вы можете выполнять любые
другие операции — скажем, редактирование элемента данных, его форматирование

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

примеры, демонстрирующие способы изменения данных Outlook.

Обновление информации Outlook

из внешних приложений

Изменяется наша жизнь — изменяется и информация. Телефонные компании, об-

радованные и одновременно озабоченные ростом количества абонентов, вынуждены

добавлять к телефонным номерам новые префиксы. Фирмами и физическими лицами
ежедневно открываются сотни Web-сайтов. Адресаты переходят на новую работу,

компании переезжают в новые офисы — как уследить за непрерывно обновляющейся

информацией?

Производительность будет минимальной, если вы будете перебирать вручную де-

сятки, а то и сотни адресов или телефонных номеров. Напишите несколько процедур

и возложите все эти неприятные обязанности на плечи Access. Листинг 24.7 демонст-
рирует простой пример, связанный с модификацией телефонных номеров. Немного
фантазии — и вы сможете расширить эту процедуру, снабдив ее средствами поддерж-

ки графического интерфейса, ведения протокола изменений и т.п.

Листинг 24.7. Пример процедуры обновления данных о контактах

1: Sub

 )

2: Dim Outlook As New

3:

4:
5:

7:

9:
10:
11:

Dim NameSpace As NameSpace
Set NameSpace =

 "MAPI" )

Dim ContactFolder As MAPIFolder
Set ContactFolder =

Dim I As Integer, Offset As Integer

For I = 1 To

434

Часть VIII. Объектно-ориентированное программирование в Access