При решении многих задач часто можно обнаружить, что "все уже сделано за нас": существуют программы, выполняющие необходимые нам функции. Например, если вашей программе надо выводить данные "в красивом виде" и с возможностью печати, то с такой задачей прекрасно справляется Microsoft Word. Если необходимо выводить график или векторное изображение, то для этого прекрасно подходит AutoCAD и т.д. Программирование в своей задаче вывода текста и графики на печать или своего векторного редактора – дело трудоемкое и неблагодарное, а главное, бессмысленное: все равно лучше, чем в Word и AutoCAD, вряд ли получится.
Для использования мощных возможностей "чужих" программ в собственных разработках в ОС Windows применяется так называемая COM-технология. COM означает Common Object Interface (общий интерфейс объектов). Идея COM-технологии состоит в том, что ваша программа может импортировать так называемую библиотеку типов внешнего приложения и получить доступ к используемым в этом приложении объектам, их свойствам и методам. Вызывая на выполнение из своей программы (СОМ-клиента) методы объектов другой программы (СОМ-сервера), можно выполнять самые разнообразные функции (Рис. 22.1). При этом сам СОМ-сервер в явном виде не запускается: можно сформировать сложный документ в Word и сохранить его в файле совершенно незаметно для пользователя.
Рис. 26.1. Создание приложения по СОМ-технологии.
СОМ-серверами являются большинство распространенных программ: все компоненты пакета Microsoft Office всех версий, AutoCAD, Компас, Visio, SolidWorks… Таким образом, создатели этих программ предусматривают использование функциональности, заложенной в их творения, сторонними разработчиками. Осталось научиться это делать.
Рассмотрим использование СОМ-технологии на примере. Пусть в результате работы нашей программы вычисляется среднее арифметическое матрицы вещественных чисел 5×6 элементов. Мы хотим получить результаты работы в виде красивого отчета (doc-файла) примерно следующего вида (Рис. 22.2).
Результаты работы гениальной программы студента Б. Гейтса
Исходная матрица:
Среднее арифметическое элементов матрицы S=1.00
Рис. 26.2 Ожидаемый вид отчета.
Стандартными средствами Delphi получить такой документ, пригодный к распечатке, весьма затруднительно. Пришлось бы отрисовывать его вручную, по клеточке, на объекте Tcanvas и потом развлекаться весьма трудоемким программированием взаимодействия вашей программы с очередью печати Windows. Мы пойдем другим путем – переложим всю трудоемкую работу по форматированию на Microsoft Word. В результате совместных усилий нашей программы и Word мы получим doc-файл на диске, который счастливый пользователь сможет загрузить в тот же Word, просмотреть, распечатать и т.д.