Шаг 35.
Серверы и контроллеры автоматизации. Экспонируемые свойства и методы

    На этом шаге мы перечислим экспортируемые свойства и методы.

    В принципе, сервер автоматизации может содержать любые свойства и методы. Однако существует спецификация Microsoft на серверы автоматизации, которой следует руководствоваться при их создании. Методы и свойства, которые, согласно этой спецификации, должны быть реализованы в серверах автоматизации, перечислены в представленных ниже таблицах (в таблицах 1 и 2 - для сервера автоматизации приложения, в таблицах 3 и 4 - для сервера автоматизации документа). В случае SDI-приложений свойства и методы обоих серверов могут совпадать. Однако в MDI-приложеииях необходимо создавать отдельный СОМ-сервер для документа. При этом он не должен регистрироваться в системном реестре, так как документ невозможно показать без приложения. То есть в раскрывающемся списке Instancing окна мастера создания сервера документа (рисунок 1) должен быть выбран пункт Internal.


Рис.1. Задание имени класса

Таблица 1. Свойства объекта автоматизации приложения
Имя Чтение, запись Экспонирование Тип данных Описание
ActiveDocument
Только чтение Не обязательно
IDispatch, unassigned
Активный документ
Application
Только чтение Не обязательно
IDispatch
Приложение
Caption
Чтение и запись Не обязательно
WideString
Заголовок приложения
DefaultFilePath
Чтение и запись Не обязательно
WideString
Путь по умолчанию, используется для открытия/создания файлов без указания пути
Documents
Только чтение Не обязательно
IDispatch, коллекция
Коллекция открытых документов
Full Name
Только чтение Обязательно
WideString
Путь и имя приложения
Height
Чтение и запись Не обязательно
Single
Высота главной формы (в режиме ММ_НIМЕТIС)
Interactive
Чтение и запись Не обязательно
WordBool
Возможность изменения документов пользователем
Left
Чтение и запись Не обязательно
Single
Координата левого верхнего угла главной формы (в режиме ММ_HIMETRIC, отсчет от левого верхнего угла экрана)
Name
Только чтение Обязательно
WideString
Краткое описание приложения в понятной человеку форме
Parent
Только чтение Обязательно
IDispatch
То же, что и свойство Application
Path
Только чтение Не обязательно
WideString
Путь к приложению
StatusBar
Чтение и запись Не обязательно
WideString
Содержимое строки состояния
Top
Чтение и запись Не обязательно
Single
Координата левого верхнего угла главной формы (в режиме ММ_ HIMETRIC, от левого верхнего угла экрана)
Visible
Чтение и запись Обязательно
WordBool
Видимость приложения
Width
Чтение и запись Не обязательно
Single
Ширина главной формы (в режиме MM_HIMETRIC)

Таблица 2. Методы объекта автоматизации приложения
Имя Экспонирование Описание
Help
Не обязательно Показывает справку
Quit
Обязательно Закрытие приложения
Repeat
Не обязательно Повторяет последнюю команду пользователя
Undo
Не обязательно Отменяет последнюю команду пользователя

Таблица 3. Свойства объекта автоматизации документа из коллекции документов
Имя Чтение, запись Экспонирование Тип данных Описание
Application
Только чтение Обязательно
IDispatch
Объект приложения
Author
Чтение и запись Не обязательно
WideString
Имя автора
Comments
Чтение и запись Не обязательно
WideString
Комментарии к документу
FullName
Только чтение Обязательно
WideString
Путь и имя файла с документом
Keywords
Чтение и запись Не обязательно
WideString
Ключевые слова для темы
Name
Только чтение Обязательно
WideString
Имя документа
Parent
Только чтение Обязательно
IDispatch
Родитель документа (может быть объектом приложения)
Path
Только чтение Обязательно
WideString
Путь к файлу документа
ReadOnly
Только чтение Не обязательно
WordBool
Возможность редактирования
Saved
Только чтение Обязательно
WordBool
Если имеет значение True, документ не менялся с момента сохранения
Subject
Чтение и запись Не обязательно
WideString
Тема документа
Title
Чтение и запись Не обязательно
WideString
Заголовок документа

Таблица 4. Методы объекта автоматизации документа из коллекции документов
Имя Экспонирование Описание
Activate
Обязательно Активизация документа
Close
Обязательно Закрытие всех документов
NewWindow
Не обязательно Добавление в документ нового окна
Print
Обязательно Вывод документа на печать
PrintOut
Не обязательно То же самое, что и Print
PrintPreview
Не обязательно Предварительный просмотр образца печати
RevertToSave
Не обязательно Откат всех изменений до последнего сохраненного в файле состояния
Save
Обязательно Сохранение документа
SaveAs
Обязательно Сохранение документа под другим именем/в другом формате

    Можно заметить некоторое дублирование, например, наличие одинаковых методов Print и PrintOut. Это связано с тем, что в Visual Basic имеется внутренний метод Print и его использование может привести к путанице.

    В Delphi также есть совпадающие зарезервированные слова, например Application. При этом Delphi старается дать другое название таким зарезервированным словам, а имя свойства оставляет без изменений. В последних версиях частично были исправлены ошибки, характерные для ранних версий Delphi и проявлявшиеся в том, что в секцию реализации перестают заноситься заготовки методов после щелчка на кнопке Refresh в окне редактора библиотеки типов. При объявлении зарезервированного метода Delphi автоматически изменяет его имя и успешно реализует действия, инициируемые щелчком на кнопке Refresh. Однако при добавлении нового метода или свойства и после щелчка на кнопке Refresh происходит ошибка - в секции реализации появляются как имя зарезервированного метода (например, Invoke), так и модифицированное имя метода (Invoke_). Единственный способ борьбы с этой ошибкой - не использовать зарезервированные имена.

    На следующем шаге мы рассмотрим нотификационные сообщения во внепроцессорных серверах.




Предыдущий шаг Содержание Следующий шаг