Редактор библиотеки типов при этом представляет все вложенные объекты в виде иерархической структуры, внутри которой можно найти значения необходимых констант. В частности, в разделе шаблонов можно найти список констант, характеризующих различные типы шаблонов листов Excel:
Значения констант, описывающих шаблоны MS Excel 97
Именно там и содержится ссылка на константу xlWBATChart = –4109, соответствующую шаблону диаграммы.
При необходимости использовать в коде приложения-клиента именованные константы можно сослаться на файл Excel_TLB.h или Excel_TLB.pas в тексте модуля приложения.
Точно так же можно определить, каковы свойства и методы вложенных объектов данного сервера автоматизации:
Свойства и методы коллекции Workbooks
Используя сведения о константах, объектах, свойствах и методах OLE-сервера, можно модифицировать приведенный выше пример. Теперь мы создадим в Excel график на основе данных из рабочих листов, скопируем его в буфер обмена и перенесем в документ Word (об объектах и константах которого узнаем из библиотеки типов Word), снабдив график подписью. Соответствующий код выглядит следующим образом:
//———————————————————————————————#include <vcl.h>
#pragma hdrstop
#include “ole2.h”
#include <ComObj.hpp>
//———————————————————————————————#pragma package(smart_init)
#pragma resource “*.dfm”
TForm1 *Form1;
Variant XL,v0,v1,v2, v22, vrange, WD,a,b,c;
//———————————————————————————————__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//———————————————————————————————
void __fastcall TForm1::Button1Click(TObject *Sender)
{
XL=CreateOleObject(“Excel.Application.8”);
XL.OlePropertySet(“Visible”,true);
v0=XL.OlePropertyGet(“Workbooks”);
v0.OleProcedure(“Add”);
v1=v0.OlePropertyGet(“Item”,1);
v0=v1.OlePropertyGet(“Worksheets”) ;
v22=v1.OlePropertyGet(“Charts”) ;
v22.OleProcedure(“Add”);
v0.OlePropertyGet(“Item”,1).OlePropertySet(“Name”,”Бухгалтерия желтая”);
v0.OlePropertyGet(“Item”,2).OlePropertySet(“Name”,”Бухгалтерия красная”);