Шаг 83.
Автоматизация Microsoft Word. Работа с объектами в документе Word. Внешние объекты (OLE)

    На этом шаге мы рассмотрим использование OLE-объектов.

    Коллекция Shapes позволяет добавлять в документ объекты, созданные и отображаемые с помощью программ-серверов OLE (OLE-серверов). OLE-объекты в документах Word могут отображаться так же, как они отображаются в приложениях, предназначенных для их создания и редактирования. Если приложение, сопоставленное объекту, не является OLE-сервером, то объект отображается в виде ярлыка. Возможности Word в управлении такими объектами скудны и ограничиваются заданием координат и размеров. Кроме того, можно активизировать данные объекты.

    Чтобы управлять внутренними свойствами OLE-объекта, внедренного в документ, необходимо получить доступ к объектам и методам этого объекта. OLE-объект создается с помощью метода AddOLEObject. Спецификация вызова объекта включает ряд аргументов, передаваемых при вызове метода. Аргументами метода являются имя класса, имя файла, признак связи с файлом на диске и т. д. Есть два синтаксиса вызова метода AddOLEObject. При этом создаются объекты, имеющие некоторые отличия (вы можете разобраться с этими отличиями самостоятельно). Здесь мы рассмотрим создание OLE-объекта и его активизацию в документе Word на примере следующего приложения.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComObj, Spin, ExtDlgs, ComCtrls;

type
  TForm1 = class(TForm)
    Button2: TButton;
    Button6: TButton;
    ListBox1: TListBox;
    Label1: TLabel;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    OpenPictureDialog1: TOpenPictureDialog;
    Button7: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
var
  W:Variant;
  SP:Variant;
{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
//Создание нового документа
begin
  W:=CreateOleObject('Word.Application');
  W.Visible:=True;
  W.Documents.Add;
end;

procedure TForm1.Button6Click(Sender: TObject);
//Выход
begin
   W.Quit;
   Close;
end;

procedure TForm1.Button3Click(Sender: TObject);
// Загружаем в ListBoxl имена объектов коллекции Shapes
//из документа Word.
  var
    a: Integer;
begin
  ListBox1.Items.Clear;
  for a:=1 to W.ActiveDocument.Shapes.Count do
    ListBox1.Items.Add(W.ActiveDocument.Shapes.Item(a).Name);
end;

procedure TForm1.ListBox1Click(Sender: TObject);
// При активизации строки объекта ListBox1, используя имя объекта,
// выделяем его из коллекции Shapes и записываем ссылку на этот объект
//в переменную SP.
begin
  W.ActiveDocument.Shapes.Item(
    ListBox1.Items.Strings[ListBox1.ItemIndex]).Select;
  SP:=W.ActiveDocument.Shapes.Item(
    ListBox1.Items.Strings[ListBox1.ItemIndex]);
end;


procedure TForm1.Button4Click(Sender: TObject);
//Добавление листа Excel
begin
  W.ActiveDocument.Shapes.AddOLEObject(ClassType:='Excel.Sheet',
     Left:=10, Top:=10, Width:=100, Height:=100);
end;

procedure TForm1.Button5Click(Sender: TObject);
//Добавление рисунка Paint
begin
  if OpenPictureDialog1.Execute then
   W.ActiveDocument.Shapes.AddOLEObject(ClassType:='Paint.Picture',
      FileName:=OpenPictureDialog1.FileName,
      Left:=10, Top:=10, Width:=100, Height:=100);
end;

procedure TForm1.Button7Click(Sender: TObject);
//Активация выбранного объекта
begin
  SP.Activate;
end;

end.
Текст этого приложения можно взять здесь (7,3 Кб).

    Третья с конца процедура создает новый лист Excel, предпоследняя создает OLE-объект - Paint.Picture и загружает реальный рисунок из файла. Последняя процедура активизирует OLE-объект, что приводит к запуску программы - OLE-сервера. Создадим несколько OLE-объектов различных типов как с помощью приведенного исходного текста, так и обычным путем - как это делают пользователи. Запустим приложение и получим список OLE-объектов. После чего мы можем выбрать и активизировать любой из них.

    Результат работы приложения изображен на рисунке 1.


Рис.1. Результат работы приложения

    На следующем шаге мы рассмотрим настройку страницы.




Предыдущий шаг Содержание Следующий шаг