На этом шаге мы перечислим экспортируемые свойства и методы.
В принципе, сервер автоматизации может содержать любые свойства и методы. Однако существует спецификация Microsoft на серверы автоматизации, которой следует руководствоваться при их создании. Методы и свойства, которые, согласно этой спецификации, должны быть реализованы в серверах автоматизации, перечислены в представленных ниже таблицах (в таблицах 1 и 2 - для сервера автоматизации приложения, в таблицах 3 и 4 - для сервера автоматизации документа). В случае SDI-приложений свойства и методы обоих серверов могут совпадать. Однако в MDI-приложеииях необходимо создавать отдельный СОМ-сервер для документа. При этом он не должен регистрироваться в системном реестре, так как документ невозможно показать без приложения. То есть в раскрывающемся списке Instancing окна мастера создания сервера документа (рисунок 1) должен быть выбран пункт Internal.
Рис.1. Задание имени класса
Имя | Чтение, запись | Экспонирование | Тип данных | Описание |
---|---|---|---|---|
Только чтение | Не обязательно | Активный документ | ||
Только чтение | Не обязательно | Приложение | ||
Чтение и запись | Не обязательно | Заголовок приложения | ||
Чтение и запись | Не обязательно | Путь по умолчанию, используется для открытия/создания файлов без указания пути | ||
Только чтение | Не обязательно | Коллекция открытых документов | ||
Только чтение | Обязательно | Путь и имя приложения | ||
Чтение и запись | Не обязательно | Высота главной формы (в режиме ММ_НIМЕТIС) | ||
Чтение и запись | Не обязательно | Возможность изменения документов пользователем | ||
Чтение и запись | Не обязательно | Координата левого верхнего угла главной формы (в режиме ММ_HIMETRIC, отсчет от левого верхнего угла экрана) | ||
Только чтение | Обязательно | Краткое описание приложения в понятной человеку форме | ||
Только чтение | Обязательно | То же, что и свойство Application | ||
Только чтение | Не обязательно | Путь к приложению | ||
Чтение и запись | Не обязательно | Содержимое строки состояния | ||
Чтение и запись | Не обязательно | Координата левого верхнего угла главной формы (в режиме ММ_ HIMETRIC, от левого верхнего угла экрана) | ||
Чтение и запись | Обязательно | Видимость приложения | ||
Чтение и запись | Не обязательно | Ширина главной формы (в режиме MM_HIMETRIC) |
Имя | Экспонирование | Описание |
---|---|---|
Не обязательно | Показывает справку | |
Обязательно | Закрытие приложения | |
Не обязательно | Повторяет последнюю команду пользователя | |
Не обязательно | Отменяет последнюю команду пользователя |
Имя | Чтение, запись | Экспонирование | Тип данных | Описание |
---|---|---|---|---|
Только чтение | Обязательно | Объект приложения | ||
Чтение и запись | Не обязательно | Имя автора | ||
Чтение и запись | Не обязательно | Комментарии к документу | ||
Только чтение | Обязательно | Путь и имя файла с документом | ||
Чтение и запись | Не обязательно | Ключевые слова для темы | ||
Только чтение | Обязательно | Имя документа | ||
Только чтение | Обязательно | Родитель документа (может быть объектом приложения) | ||
Только чтение | Обязательно | Путь к файлу документа | ||
Только чтение | Не обязательно | Возможность редактирования | ||
Только чтение | Обязательно | Если имеет значение True, документ не менялся с момента сохранения | ||
Чтение и запись | Не обязательно | Тема документа | ||
Чтение и запись | Не обязательно | Заголовок документа |
Имя | Экспонирование | Описание |
---|---|---|
Обязательно | Активизация документа | |
Обязательно | Закрытие всех документов | |
Не обязательно | Добавление в документ нового окна | |
Обязательно | Вывод документа на печать | |
Не обязательно | То же самое, что и Print | |
Не обязательно | Предварительный просмотр образца печати | |
Не обязательно | Откат всех изменений до последнего сохраненного в файле состояния | |
Обязательно | Сохранение документа | |
Обязательно | Сохранение документа под другим именем/в другом формате |
Можно заметить некоторое дублирование, например, наличие одинаковых методов Print и PrintOut. Это связано с тем, что в Visual Basic имеется внутренний метод Print и его использование может привести к путанице.
В Delphi также есть совпадающие зарезервированные слова, например Application. При этом Delphi старается дать другое название таким зарезервированным словам, а имя свойства оставляет без изменений. В последних версиях частично были исправлены ошибки, характерные для ранних версий Delphi и проявлявшиеся в том, что в секцию реализации перестают заноситься заготовки методов после щелчка на кнопке Refresh в окне редактора библиотеки типов. При объявлении зарезервированного метода Delphi автоматически изменяет его имя и успешно реализует действия, инициируемые щелчком на кнопке Refresh. Однако при добавлении нового метода или свойства и после щелчка на кнопке Refresh происходит ошибка - в секции реализации появляются как имя зарезервированного метода (например, Invoke), так и модифицированное имя метода (Invoke_). Единственный способ борьбы с этой ошибкой - не использовать зарезервированные имена.
На следующем шаге мы рассмотрим нотификационные сообщения во внепроцессорных серверах.