На этом шаге мы рассмотрим методы этого объекта и приведем пример их использования.
Дадим краткую характеристику некоторых методов объекта 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.
На следующем шаге мы рассмотрим объект Selection.