Шаг 270.
Автоматизация Microsoft PowerPoint.
Некоторые методы объекта ShapeRange

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

    Дадим краткую характеристику некоторых методов объекта ShapeRange.

    Метод Align отвечает за выравнивание фигур в коллекции. Критерии выравнивания передаются в качестве значений параметров. Общий вид:

  Align(AlignCmd, RelativeTo),
где

    Метод Distribute равномерно распределяет фигуры из коллекции по горизонтали или вертикали. Общий вид:

  Distribute(DistributeCmd, RelativeTo),
где

    Метод Group группирует фигуры в единый объект Shape. Так как группа фигур рассматривается как одна фигура, группировка и разгруппировка фигуры изменяет количество фигур в коллекции. Этот метод не имеет параметров.

    Метод Regroup повторно группирует сгруппированные ранее фигуры. Используя этот метод, можно восстановить только первую ранее полученную группу. Метод параметров не имеет.

    Метод Ungroup используется для разгруппировки ранее сгруппированных фигур. Параметры у этого метода отсутствуют.

    Приведем небольшой пример, иллюстрирующий использование некоторых из перечисленных методов.

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

    Внешний вид приложения изображен на рисунке 1.


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

    Полный текст приложения:

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    CheckBox1: TCheckBox;
    Button3: TButton;
    Button4: TButton;
    Button2: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Label1: TLabel;
    ComboBox1: TComboBox;
    Label2: TLabel;
    ComboBox2: TComboBox;
    Label3: TLabel;
    ComboBox3: TComboBox;
    Label4: TLabel;
    ComboBox4: TComboBox;
    procedure Button1Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
  private
    procedure Slide1(Sender: TObject);
     { Private declarations }
  public
     { Public declarations }
  end;

var
  Form1: TForm1;

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

procedure TForm1.Button1Click(Sender: TObject);
begin
  W:=CreateOleObject('PowerPoint.Application');
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  W.Visible:=CheckBox1.Checked;
end;

procedure TForm1.Button3Click(Sender: TObject);
const
  msoShapeHexagon = 10;
var
 V: Variant;
begin
 W.Presentations.Add;
 W.ActivePresentation.Slides.Add(1,1); //Второй параметр - ppLayoutTitle
 Slide1(Self);
 W.ActivePresentation.Slides.Item(1).Shapes
       .AddShape(msoShapeHexagon, 50,5, 250,250);
 W.ActivePresentation.Slides.Item(1).Shapes
       .AddShape(msoShapeHexagon, 150,50, 300,300);
 V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3)
   .TextFrame.TextRange;
 V.Text:='Шестиугольник1';
 V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(4)
   .TextFrame.TextRange;
 V.Text:='Шестиугольник2';
end;

procedure TForm1.Slide1(Sender: TObject);
// Заполнить 1-й слайд
var
 V,V1: Variant;
begin
 V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(1)
   .TextFrame.TextRange;
 V.Characters(Start:=1,Length:=0).Text:='Презентация';
 V.Font.Name := 'Times New Roman';
 V.Font.Size := 44;
 V.Font.Bold := 0;  // msoFalse
 V.Font.Italic := 0; // msoFalse
 V.Font.Underline := 0; // msoFalse
 V.Font.Shadow := 0; // msoFalse
 V.Font.Emboss := 0; // msoFalse
 V.Font.BaseLineOffset := 0;
 V.Font.AutoRotateNumbers := 0; // msoFalse
 V.Font.Color.SchemeColor := 4; // ppTitle

 V1:=W.ActivePresentation.Slides.Item(1).Shapes.Item(2)
   .TextFrame.TextRange;
 V1.Characters(Start:=1,Length:=0).Text:='Бизнес-план' + Chr(13)
    + 'директора фирмы "Рога и копыта"';
 V1.Font.Name := 'Times New Roman';
 V1.Font.Size := 32;
 V1.Font.Bold := 0; // msoFalse
 V1.Font.Italic := 0; // msoFalse
 V1.Font.Underline := 0; // msoFalse
 V1.Font.Shadow := 0; // msoFalse
 V1.Font.Emboss := 0; // msoFalse
 V1.Font.BaseLineOffset := 0;
 V1.Font.AutoRotateNumbers := 0; // msoFalse
 V1.Font.Color.SchemeColor := 2; // ppForeground
end;


procedure TForm1.Button4Click(Sender: TObject);
begin
 W.Quit;
 Close;
end;


procedure TForm1.Button2Click(Sender: TObject);
// Группировка
var
 A: Array [0..3] Of Variant;
 S:Variant;
begin
 // Заполняем массив номерами автофигур
 A[0]:=3; A[1]:=4;
 S := VarArrayCreate([0, 0], varVariant);
 S[0]:= VarArrayOf(A);
 // Группируем все шестиугольники
 W.ActivePresentation.Slides.Item(1).Shapes.Range(S[0]).Group;
end;

procedure TForm1.Button5Click(Sender: TObject);
// Разгруппировать шестиугольники
begin
 W.ActivePresentation.Slides.Item(1).Shapes.Range.Ungroup;
end;

procedure TForm1.Button6Click(Sender: TObject);
// Выравнивание
 var
   a,b: Byte;
begin
 a:=ComboBox1.ItemIndex;
 b:=ComboBox2.ItemIndex;
 W.ActivePresentation.Slides.Item(1).Shapes.Range.Align (a,b);
end;

procedure TForm1.Button7Click(Sender: TObject);
// Распределение
 var
   a,b: Byte;
begin
 a:=ComboBox3.ItemIndex;
 b:=ComboBox4.ItemIndex;
 W.ActivePresentation.Slides.Item(1).Shapes.Range.Distribute (a,b);
end;

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

    На следующем шаге мы рассмотрим объект Selection.




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