Шаг 249.
Автоматизация Microsoft PowerPoint.
Объекты SlideShowWindow и SlideShowSettings

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

    Объект SlideShowWindow представляет собой окно, в котором происходит показ слайдов. Каждый объект SlideShowWindow является элементом коллекции SlideShowWindows.

    Данный объект имеет ряд свойств, которые позволяют установить некоторые параметры окна показа слайдов. Их название и назначение приведены ниже.

Таблица 1. Свойства объекта SlideShowWindow
Свойство Описание
Height Определяет высоту окна показа слайдов
IsFullScreen Возвращает значение True, если данное окно показа слайдов занимает весь экран
Left Определяет расстояние от левого края окна показа слайдов до левого края рабочего стола. В случае установки слишком большого положительного или отрицательного значения данного свойство окно может выйти за пределы экрана
Тор Определяет расстояние от верхнего края окна показа слайдов до верхнего края рабочего стола
View Возвращает объект SlideShowView
Width Определяет ширину окна показа слайдов

    Объект SlideShowSettings позволяет настроить параметры показа слайдов. Он имеет ряд основных свойств, рассмотренных ниже.

    Свойство EndingSlide определяет последний отображаемый слайд в последовательности прокручиваемых слайдов. Ниже представлен пример определения диапазона слайдов, начиная со второго и заканчивая на седьмым слайдом.

  W.ActivePresentation.SlideShowSettings.StartingSlide:=2;
  W.ActivePresentation.SlideShowSettings.EndingSlide:=7;

    Свойство PointerColor возвращает объект ColorFormat, который определяет цвет указателя для заданной презентации. Значение этого свойства всегда сохраняется вместе с презентацией.

    Свойство RangeType определяет вариант запускаемого показа слайдов. В качестве его значения может быть использовано значение одной из следующих констант:

ppShowAll            = $00000001; // вся презентация
ppShowSlideRange     = $00000002; // выделенный диапазон слайдов 
ppShowNamedSlideShow = $00000003; // именованная демонстрация

    Значение ppShowSlideRange имеет смысл задавать в том случае, когда выполняется показ слайдов из заданного диапазона, начиная со слайда, определяемого значением свойства StartingSlide и заканчивая слайдом, определяемым значением свойства EndingSlide.

    Свойство ShowWithAnimation позволяет задать режим показа слайдов с анимацией. Для этого данному свойству следует установить значение True.

    Свойство ShowWithNarration предназначено для установки режима показа слайдов с речевым сопровождением. Для его реализации данному свойству необходимо присвоить значение True.

    Свойство StartingSlide определяет первый отображаемый слайд, с которого начинается показ диапазона слайдов.

    Свойство AdvanceMode объекта SlideShowSettings указывает, каким образом производится смена слайдов при демонстрации:

ppSlideShowManualAdvance      = $00000001; // ручная смена слайдов
ppSlideShowUseSlideTimings    = $00000002; // смена в соответсвии со временем
                                           // показа каждого слайда
ppSlideShowRehearseNewTimings = $00000003; // запись времени показа слайдов

    Свойство LoopUntilStopped предназначено для установки режима показа слайдов, продолжение которого прерывается нажатием клавиши Esc. Для реализации этого режима необходимо задать данному свойству значение True. Это свойство имеет смысл применять если свойство AdvanceMode объекта SlideShowSettings установлено равным ppSlideShowUseSlideTimings. Отметим также, что времена показа слайдов, если таковые не записаны вручную пользователем, также можно установить программно с помощью свойства SlideShowTransition объекта Slide, например:

  W.Presentations.Item(2).Slides.Item(5).SlideShowTransition.AdvanceTime:=1;
  W.Presentations.Item(2).Slides.Item(5).SlideShowTransition.AdvanceOnTime:=True;

    Метод Run запускает показ слайдов для заданной презентации. Данный метод возвращает объект SlideShowWindow, представляющий собой окно, в котором производится показ слайдов.

    Для реализации механизма произвольного показа слайдов сначала следует задать свойству RangeType значение ppShowNamedSlideShow, а свойству SlideShowName - имя произвольного показа, который следует начать.

    Следующий пример иллюстрирует применение описанных выше свойств и методов.

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

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    CheckBox1: TCheckBox;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    Label1: TLabel;
    Label2: TLabel;
    Button5: TButton;
    Button6: TButton;
    Label3: TLabel;
    Edit1: TEdit;
    ComboBox3: TComboBox;
    Label4: TLabel;
    ColorDialog1: TColorDialog;
    Button7: TButton;
    Button8: TButton;
    Label5: TLabel;
    Edit2: TEdit;
    Label6: TLabel;
    Edit3: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
  private
    { 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;
{$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.Button2Click(Sender: TObject);
//Закрытие документа
begin
W.ActivePresentation.Close;

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 W.Presentations.Add;
end;

procedure TForm1.Button5Click(Sender: TObject);
var
 V,V1: Variant;
begin
 W.ActivePresentation.Slides.Add(1,1{ppLayoutTitle});
 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;
end;

procedure TForm1.Button6Click(Sender: TObject);
//Добавить еще один слайд
var
   V,V1: Variant;
begin
 W.ActivePresentation.Slides.Add(2,2{ppLayoutText});
 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.ComboBox1Change(Sender: TObject);
begin
 case ComboBox1.ItemIndex of
  0 : W.ActivePresentation.SlideMaster.ColorScheme
        .Colors(ppBackGround).RGB:=clRed;
  1 : W.ActivePresentation.SlideMaster.ColorScheme
        .Colors(ppBackGround).RGB:=clGreen;
  2 : W.ActivePresentation.SlideMaster.ColorScheme
        .Colors(ppBackGround).RGB:=clBlue;
  3 : W.ActivePresentation.SlideMaster.ColorScheme
        .Colors(ppBackGround).RGB:=clBlack;
  4 : W.ActivePresentation.SlideMaster.ColorScheme
        .Colors(ppBackGround).RGB:=clWhite;
 end;
end;

procedure TForm1.ComboBox2Change(Sender: TObject);
begin
 case ComboBox2.ItemIndex of
  0 : W.ActivePresentation.SlideMaster.ColorScheme
        .Colors(ppForeground).RGB:=clRed;
  1 : W.ActivePresentation.SlideMaster.ColorScheme
        .Colors(ppForeground).RGB:=clGreen;
  2 : W.ActivePresentation.SlideMaster.ColorScheme
        .Colors(ppForeground).RGB:=clBlue;
  3 : W.ActivePresentation.SlideMaster.ColorScheme
        .Colors(ppForeground).RGB:=clBlack;
  4 : W.ActivePresentation.SlideMaster.ColorScheme
        .Colors(ppForeground).RGB:=clWhite;
 end;
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:= StrToInt(Edit1.Text);
    L:= ComboBox3.ItemIndex+1;
    W.ActivePresentation.Slides.Item(N).ColorScheme
       .Colors(L).RGB:=RGB(R,G,B);
   end;
end;

procedure TForm1.Button8Click(Sender: TObject);
// Установка параметров и показ слайдов
var
  V,X: Variant;
  n,k:Integer;
begin
  n:=StrToInt(Edit2.Text); // Начальный слайд
  k:=StrToInt(Edit3.Text); // Конечный слайд
  V:=W.ActivePresentation.SlideShowSettings;
  V.StartingSlide:=n;
  V.EndingSlide:=k;
  V.RangeType:=2;//ppShowSlideRange
  // Задание параметров показа слайдов
  X:=W.ActivePresentation.Slides.Range.SlideShowTransition;
  X.EntryEffect := 770; //ppEffectBlindsVertical
  X.Speed := 3; //ppTransitionSpeedFast
  X.AdvanceOnClick := 1; //msoTrue
  X.AdvanceOnTime := 0; //msoFalse
  X.SoundEffect.Name := 'Аплодисменты';
  X.LoopSoundUntilNext := 0; //msoFalse
  // Запустить показ слайдов
  W.ActivePresentation.SlideShowSettings.Run;
end;

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

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


Рис.1. Результат работы приложения (демонстрация слайдов)

    Кратко опишем работу этого приложения.

    Основная работа выполняется в процедуре Button8Click():

procedure TForm1.Button8Click(Sender: TObject);
// Установка параметров и показ слайдов
var
  V,X: Variant;
  n,k:Integer;
begin
  n:=StrToInt(Edit2.Text); // Начальный слайд
  k:=StrToInt(Edit3.Text); // Конечный слайд
  V:=W.ActivePresentation.SlideShowSettings;
  V.StartingSlide:=n;
  V.EndingSlide:=k;
  V.RangeType:=2;//ppShowSlideRange
  // Задание параметров показа слайдов
  X:=W.ActivePresentation.Slides.Range.SlideShowTransition;
  X.EntryEffect := 770; //ppEffectBlindsVertical
  X.Speed := 3; //ppTransitionSpeedFast
  X.AdvanceOnClick := 1; //msoTrue
  X.AdvanceOnTime := 0; //msoFalse
  X.SoundEffect.Name := 'Аплодисменты';
  X.LoopSoundUntilNext := 0; //msoFalse
  // Запустить показ слайдов
  W.ActivePresentation.SlideShowSettings.Run;
end;

    Сначала задается диапазон демонстрируемых слайдов. Затем определяются параметры показа слайдов, после чего запускается показ слайдов.

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

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




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