Шаг 82.
Автоматизация Microsoft Word. Работа с объектами в документе Word. Геометрические фигуры (окончание)

    На этом шаге мы рассмотрим изменение типа созданной геометрической фигуры.

    Создав однажды геометрическую фигуру, можно изменить ее внешний вид, изменив значение ее стиля. При этом остальные параметры, например толщина и цвет линий, а также текст, останутся без изменений, если новый тип предполагает их наличие. Для изменения типа фигуры достаточно изменения типа фигуры достаточно изменить свойство AutoShapeType объекта, записав в него новое значение. Эффект будет таким же, как при создании нового объекта.

    Последняя процедура следующего приложения меняет тип созданной ранее геометрической фигуры.

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button6: TButton;
    ListBox1: TListBox;
    Label1: TLabel;
    Button3: TButton;
    Label2: TLabel;
    Edit1: TEdit;
    UpDown1: TUpDown;
    Memo1: TMemo;
    Label3: TLabel;
    Button4: TButton;
    Label4: TLabel;
    Edit2: TEdit;
    UpDown2: TUpDown;
    Button5: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

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

procedure TForm1.Button1Click(Sender: TObject);
//Создание фигуры
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.AddShape(StrToInt(Edit1.Text),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;

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);
//Добавление текста в выбранную фигуру
begin
  SP.TextFrame.TextRange.Text:=Memo1.Text;
end;

procedure TForm1.Button5Click(Sender: TObject);
//Изменение типа выбранной фигуры
begin
  SP.AutoShapeType:=StrToInt(Edit2.Text);
end;

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

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


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

    Текст, размещенный в полученной фигуре, может автоматически измениться, чтобы вписаться в размеры новой фигуры.

    На следующем шаге мы рассмотрим изпользование внешних объектов.




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