Работа с объектами в документе Word. Надписи

   
На этом шаге мы рассмотрим простые примеры работы с объектом "Надпись".

   
Рассмотрим некоторые свойства коллекции Shapes и ее элементов на примере надписи (объекта TextBox).
Для этого создадим в документе такой объект. Рассмотрим следующую программу:

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button6: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
var
  W:Variant;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
//Создание надписи
const msoTextOrientationHorizontal=1;
var
  left,top:Extended;
begin
  left:=10;
  top:=11;
  W.ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal,
     left, top, 200, 100, W.ActiveDocument.Range);
end;

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

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

end.

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

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


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

   
Примечание.
Для задания координат надписи можно использовать переменные типа real, но для Office ХР необходимо
использовать только тип Extended (var left, top: Extended).

   
Для создания нового объекта мы используем метод AddTextbox коллекции Shapes. Первый аргумент
этого метода имеет тип integer и задает ориентацию расположения текста этого объекта, последний аргумент
имеет тип Range и определяет область, где будет создан объект, - в нашем случае это активный документ.
Остальные аргументы типа Extended определяют координаты и размеры объекта. Для создания надписи с
вертикальным размещением текста необходимо в качестве первого аргумента использовать константу
msoTextOrientationVertical=5. С помощью константы msoTextOrientationDownward=3 или
msoTextOrientationUpward=2 можно задать направление текста при вертикальной ориентации (сверху вниз
или снизу вверх).

   
Если приведенный текст приложения, а в частности процедуру Button1Click видоизменить так, чтобы
при создании нового объекта учитывались координаты и размеры последнего, а также размеры страницы, то
ее выполнение может привести к результату, представленному на рисунке 2.


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

   
Вот текст приложения:

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button6: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
var
  W:Variant;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
//Создание надписи
const msoTextOrientationHorizontal=1;
var
  left,top:Extended;
begin
  left:=10;
  top:=11;
  if W.ActiveDocument.Shapes.Count>0 then begin
   if W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Left+
         2*(W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Width+10)<
             W.ActiveDocument.PageSetup.PageWidth
      then begin
      left:=W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Left+
         W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Width+10;
      top :=W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Top;
           end
      else begin
      left:=10;
      top:=W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Top+
       W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Height+10.15;
           end;
   end;
   W.ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal,
     left, top, 200, 100, W.ActiveDocument.Range);
end;

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;

end.

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

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



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий