Шаг 252.
Автоматизация Microsoft PowerPoint.
Объект AnimationSettings

    На этом шаге мы перечислим основные свойства этого объекта.

    Данный объект используется для задания специальных эффектов анимации для заданного объекта при показе слайдов.

    Перечислим основные свойства этого объекта.

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

    Вот его текст:

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    CheckBox1: TCheckBox;
    Button3: TButton;
    Button4: TButton;
    Label3: TLabel;
    ComboBox3: TComboBox;
    Label4: TLabel;
    ColorDialog1: TColorDialog;
    Button7: TButton;
    ComboBox1: TComboBox;
    Label1: TLabel;
    ComboBox2: TComboBox;
    Label2: TLabel;
    ComboBox4: TComboBox;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    ComboBox5: TComboBox;
    Label8: TLabel;
    ComboBox6: TComboBox;
    Label9: TLabel;
    ComboBox7: TComboBox;
    Label10: TLabel;
    ComboBox8: TComboBox;
    Label11: TLabel;
    ComboBox9: TComboBox;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
    procedure ComboBox4Change(Sender: TObject);
    procedure ComboBox5Change(Sender: TObject);
    procedure ComboBox6Change(Sender: TObject);
    procedure ComboBox7Change(Sender: TObject);
    procedure ComboBox8Change(Sender: TObject);
    procedure ComboBox9Change(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    procedure Slide1(Sender: TObject);
    procedure Slide2(Sender: TObject);
    //{ Private declarations }
  public
    //{ Public declarations }
  end;
const
//Работа с цветом
  ppBackground = $00000001;
  ppForeground = $00000002;
  ppShadow     = $00000003;
  ppTitle      = $00000004;
  ppFill       = $00000005;
  ppAccent1    = $00000006;
  ppAccent2    = $00000007;
  ppAccent3    = $00000008;
//Виды текста
  ppDefaultStyle = $00000001;	// стандартный текст
  ppTitleStyle   = $00000002;	// текст заголовков
  ppBodyStyle    = $00000003;	// основной текст

var
  Form1: TForm1;

implementation
var
  W:Variant;
  A: Array[1..2,1..2,1..5] Of Integer =  // Параметры анимации
  ( ((1, 5, 0, 1, $00000F04),
    (1, 5, 0, 1, $00000F04)),
    ((1, 5, 0, 1, $00000F04),
    (1, 5, 0, 1, $00000F04))
   );
  sld: integer; // Номер слайда
  fig: integer; // Номер фигуры
  B: Array [1..50] of integer = // Вид анимации
  (
 $00000F04, $00000301, $00000302, $00000C02, $00000C01,
 $00000401, $00000402, $00000F05, $00000F07, $00000F08,
 $00000504, $00000501, $00000507, $00000505, $00000503,
 $00000508, $00000506, $00000502, $00000D10, $00000D0F,
 $00000D0E, $00000101, $00000F06, $00000601, $00000701,
 $00000F01, $00000F02, $00000F03, $00000D04, $00000D07,
 $00000D01, $00000D03, $00000D02, $00000F0A, $00000000,
 $00000D0A, $00000F0B, $00000F0C, $00000201, $00000D1D,
 $00000E02, $00000E01, $00000E04, $00000D17, $00000A03,
 $00000D1C, $00000804, $00000F10, $00000B04, $00000D15
  );
//{$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);
begin
 W.Presentations.Add;
 W.ActivePresentation.Slides.Add(1,1); //Второй параметр - ppLayoutTitle
 W.ActivePresentation.Slides.Add(2,1); //Второй параметр - ppLayoutTitle
 Slide1(Self); // Заполнить 1-й слайд
 Slide2(Self); // Заполнить 2-й слайд
 sld:=1; // Номер слайда
 fig:=1; // Номер автофигуры на слайде
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.Slide2(Sender: TObject);
//Добавить еще один слайд
var
   V,V1: Variant;
begin
 V:=W.ActivePresentation.Slides.Item(2).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(2).Shapes.Item(2)
   .TextFrame.TextRange;
 V1.Characters(Start:=1,Length:=0).Text:='Описание продукции, ее уникальность;' 
    + Chr(13) + 'Стадия развития проекта;'+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.Button7Click(Sender: TObject);
// Выбор цвета
var
  R,G,B: Byte; // Составляющие цветов
  N: Integer;  // Номер слайда
  L: Integer;  // Элемент схемы
begin
   if ColorDialog1.Execute then
   begin
    R:= ColorDialog1.Color and $FF;
    G:= (ColorDialog1.Color and $FF00) shr 8;
    B:= (ColorDialog1.Color and $FF0000) shr 16;
    N:= ComboBox1.ItemIndex+1;
    L:= ComboBox3.ItemIndex+1;
    W.ActivePresentation.Slides.Item(N).ColorScheme
       .Colors(L).RGB:=RGB(R,G,B);
   end;
end;

procedure TForm1.ComboBox2Change(Sender: TObject);
begin
  sld:=ComboBox2.ItemIndex+1;
  fig:=ComboBox4.ItemIndex+1;
  ComboBox5Change(Self);
  ComboBox6Change(Self);
  ComboBox7Change(Self);
  ComboBox8Change(Self);
  ComboBox9Change(Self);
end;

procedure TForm1.ComboBox4Change(Sender: TObject);
begin
  fig:=ComboBox4.ItemIndex+1;
  sld:=ComboBox2.ItemIndex+1;
  ComboBox5Change(Self);
  ComboBox6Change(Self);
  ComboBox7Change(Self);
  ComboBox8Change(Self);
  ComboBox9Change(Self);
end;

procedure TForm1.ComboBox5Change(Sender: TObject);
begin
  A[sld,fig,1]:= ComboBox5.ItemIndex+1;
  if A[sld,fig,1]=3 then A[sld,fig,1]:=-2;
end;

procedure TForm1.ComboBox6Change(Sender: TObject);
begin
  A[sld,fig,2]:= ComboBox6.ItemIndex+1;
end;

procedure TForm1.ComboBox7Change(Sender: TObject);
begin
  A[sld,fig,3]:= ComboBox7.ItemIndex;
  if A[sld,fig,1]=4 then A[sld,fig,1]:=-2;
end;

procedure TForm1.ComboBox8Change(Sender: TObject);
begin
  A[sld,fig,4]:= ComboBox8.ItemIndex;
end;

procedure TForm1.ComboBox9Change(Sender: TObject);
begin
  A[sld,fig,5]:= B[ComboBox9.ItemIndex+1];
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  V,X: Variant;
  i,j:integer;
begin
  V:=W.ActivePresentation.SlideShowSettings;
  V.StartingSlide:=1;
  V.EndingSlide:=2;
  V.RangeType:=2;//ppShowSlideRange
  // Задание параметров анимации для каждого объекта
  for i:=1 to 2 do
   for j:=1 to 2 do
   begin
     V:=W.ActivePresentation.Slides.Item(i).Shapes.Item(j).AnimationSettings;
     V.AdvanceMode:=A[i,j,1];
     V.AdvanceTime:=A[i,j,2];
     V.AfterEffect:=A[i,j,3];
     V.Animate:=A[i,j,4];
     V.EntryEffect:=A[i,j,5];
   end;
  // Запустить показ слайдов
  W.ActivePresentation.SlideShowSettings.Run;
end;

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

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


Рис.1. Внешний вид приложения

    Дадим краткие комментарии к приложению. Оно создает два слайда, на каждом из которых находятся по две автофигуры. Для каждой автофигуры можно задать пять параметров для анимации каждой автофигуры. Для запуска анимации используется кнопка Запуск анимации. Процедуры OnChange() используются для установки выбранных значений.

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




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