На этом шаге мы перечислим экспортируемые свойства и методы.
В принципе, сервер автоматизации может содержать любые свойства и методы. Однако существует спецификация
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 | Не обязательно | Добавление в документ нового окна |
Обязательно | Вывод документа на печать | |
PrintOut | Не обязательно | То же самое, что и Print |
PrintPreview | Не обязательно | Предварительный просмотр образца печати |
RevertToSave | Не обязательно | Откат всех изменений до последнего сохраненного в файле состояния |
Save | Обязательно | Сохранение документа |
SaveAs | Обязательно | Сохранение документа под другим именем/в другом формате |
Можно заметить некоторое дублирование, например, наличие одинаковых методов Print и PrintOut.
Это связано с тем, что в Visual Basic имеется внутренний метод Print и его использование может
привести к путанице.
В Delphi также есть совпадающие зарезервированные слова, например Application. При этом
Delphi старается дать другое название таким зарезервированным словам, а имя свойства оставляет без
изменений. В последних версиях частично были исправлены ошибки, характерные для ранних версий Delphi и
проявлявшиеся в том, что в секцию реализации перестают заноситься заготовки методов после щелчка на кнопке
Refresh в окне редактора библиотеки типов. При объявлении зарезервированного метода Delphi
автоматически изменяет его имя и успешно реализует действия, инициируемые щелчком на кнопке
Refresh. Однако при добавлении нового метода или свойства и после щелчка на кнопке Refresh
происходит ошибка - в секции реализации появляются как имя зарезервированного метода (например, Invoke),
так и модифицированное имя метода (Invoke_). Единственный способ борьбы с этой ошибкой -
не использовать зарезервированные имена.
На следующем шаге мы рассмотрим нотификационные сообщения во внепроцессорных серверах.