Обратная операция по слиянию ячеек вызывается процедурой:
procedure Merge(MergeTo : ICell);
В качестве параметра передается ссылка на ячейку, с которой мы хотим объединиться:
Table.Cell(1,1).Merge(Table.Cell(1,2));
Нередко бывает необходимо повернуть текст в ячейке. Следующие две строки демонстрируют способ поворота текста на 90 градусов против часовой стрелки. Для решения этой задачи мы воспользуемся свойством Orienta-tion() области IRange.
Range:=Table.Cell(1,1).Range;
Range.Orientation:=2; // wdTextOrientationUpward
Внедрение в документ OLE-объектов
Хранение OLE-объекта (рисунка, формы, элемента ActiveX) в документе осуществляется в специализированном объекте, описываемом интерфейсом IShape. В свою очередь IShape содержится в коллекции IShapes. Для пополнения OLE-объектами коллекция IShapes вооружена богатым перечнем методов. Для вставки в документ файла изображения понадобится функция:
function AddPicture(FileName : string; [LinkToFile, Left, Top, Width, Height : Integer]) : IShape;
Метод вставляет в документ рисунок из файла FileName. Минимальный синтаксис требует передать только имя файла. Например:
Doc. Shapes.AddPicture('C:\Image.bmp');
Параметр LinkToFile определяет, каким образом изображение будет храниться в документе: будет ли оно внедрено в состав документа (false) или же с файлом картинки будет установлена связь (true). Параметры Left и Top назначают местоположение левого верхнего угла картинки. Параметры Width и Height отвечают за ширину и высоту картинки.
Doc.Shapes.AddPicture(FileName:='C:\Image.bmp', LinkToFile:=False, Width:=100); За начало отсчета принимается верхний левый угол страницы документа.
Еще более унифицированный метод внедрит в документ любой зарегистрированный в системе OLE-объект:
function AddOLEObject([const ClassType : string;] FileName : string; [LinkToFile, DisplayAsIcon : Boolean; IconFileName : string; IconIndex : Integer; IconLabel : string; Left, Top, Width, Height : Integer]) : IShape;
Здесь ClassType - идентификатор внедряемого OLE-объекта. Список зарегистрированных в системе объектов вы увидите, воспользовавшись пунктом меню Вставка—Объект. Напомню, что разыскать идентификаторы OLE-объектов можно в реестре Windows, просмотрев ветвь HKEY_CLASSES_ROOT\CLSID\{...}\ ProglD. Например, идентификатор редактора формул Microsoft* Equation 3.0 - Equa-tion.3.
Для внедрения в документ объекта из файла достаточно передать имя файла через параметр FileName:
WordDoc.Shapes.AddOleObject(FileName:='C:\Книга1.xls');
Параметр LinkToFile определяет способ хранения OLE-объекта. При желании внедрить OLE-объект в документ необходимо передать значение false, в противном случае документ установит связь с файлом объекта OLE.
Внедренный объект можно представить в виде пиктограммы, для этого присвойте параметру DisplayAsIcon значение true. Если для отображения пиктограммы OLE-объекта вы планируете использовать собственную пиктограмму, то передайте путь к ней в параметре IconFileName. Если в OLE-объект внедрено несколько пиктограмм, то в параметре IconIndex можно передать порядковый номер пиктограммы. Текст пиктограммы описывается в аргументе IconLabel. Местоположение и размеры внедренного объекта определяются аргументами Left, Top, Width, Height.
Простейшие графические фигуры (доступные на панели Рисование) также представляют собой OLE-объекты. Для того чтобы внедрить в документ линию, используйте метод:
procedure AddLine(BeginX, BeginY, EndX, EndY : Integer); Например:
Doc.Shapes.AddLine(50,50,100,100); Для вставки в документ фигуры примените метод:
procedure AddShape(const Type : Integer; Left, Top, Width, Height : Integer);
Здесь ключевой аргумент Type - это константа фигуры. Начиная с Microsoft Word 2000 аргумент Type может принимать любое значение из диапазона 1-130.
Doc.Shapes.AddShape(16, 10, 10, 110, 110);
Элемент коллекции IShapes - объект IShape - обладает широким спектром возможностей по настройке внешнего вида объекта. Местоположение и размеры объекта описываются свойствами:
property Left : Integer;
property Top : Integer;
property Width : Integer;
property Height : Integer;
Для поворота объекта вокруг горизонтальной (вертикальной) оси понадобится процедура:
procedure Flip( const FlipCmd : Integer);
Для поворота по горизонтали передавайте 0, по вертикали - 1. Для удаления объекта используйте метод:
procedure Delete;