Шаг 245.
Автоматизация Microsoft PowerPoint.
Объект Slide (методы)

    На этом шаге мы рассмотрим методы этого объекта.

    Метод Сору копирует слайд в буфер обмена, не удаляя его из презентации. Например, для реализации операции копирования в буфер обмена второго слайда необходима команда:

  W.ActivePresentation.Slides.Item(2).Copy;

    Метод Cut делает то же самое, что и метод Сору, удаляя слайд.

    Метод Delete позволяет удалить элемент из коллекции. В данном случае удаляется слайд. Например, для удаления третьего слайда из активной презентации необходимо выполнить команду:

  W.ActivePresentation.Slides.Item(3).Delete;

    Метод Duplicate позволяет создать копию слайда и добавить ее к коллекции Slides сразу вслед за дублируемым слайдом. Данный метод возвращает объект Slide, который представляет собой слайд-копию. Например:

var
  V: Variant;
  .   .   .   .
  V:=W.ActivePresentation.Slides.Item(1).Duplicate;
  V.Shapes.Item('Rectangle 2').TextFrame.TextRange.
      Characters(Start:=1,Length:=0).Text:='Продублированный слайд';

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

  Export (FileName, FilterName, ScaleWidth, ScaleHeight),
где

    Метод Select позволяет выбрать объект (в данном случае слайд). В представленном ниже примере реализован выбор второго слайда презентации:

  W.ActivePresentation.Slides.Item(2).Select;

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

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

unit Unit1;

interface

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

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;
    Edit1: TEdit;
    Button7: TButton;
    Label4: TLabel;
    Edit2: TEdit;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    Panel1: TPanel;
    Label3: TLabel;
    Button11: TButton;
    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);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(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);
//Добавить слайд
begin
 W.ActivePresentation.Slides.Add(1,1{ppLayoutTitle});
end;


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

procedure TForm1.Button6Click(Sender: TObject);
//Копировать слайд
var
  n:Integer;
begin
  n:=StrToInt(Edit1.Text);
  W.ActivePresentation.Slides.Item(n).Copy;
end;

procedure TForm1.Button8Click(Sender: TObject);
//Вырезать слайд
var
  n:Integer;
begin
  n:=StrToInt(Edit1.Text);
  W.ActivePresentation.Slides.Item(n).Cut;
end;

procedure TForm1.Button9Click(Sender: TObject);
//Удалить слайд
var
  n:Integer;
begin
  n:=StrToInt(Edit1.Text);
  W.ActivePresentation.Slides.Item(n).Delete;
end;

procedure TForm1.Button10Click(Sender: TObject);
//Дублировать слайд
var
  n:Integer;
  V:Variant;
begin
  n:=StrToInt(Edit1.Text);
  V:=W.ActivePresentation.Slides.Item(n).Duplicate;
  V.Shapes.Item('Rectangle 2').TextFrame.TextRange.
      Characters(Start:=1,Length:=0).Text:='Продублированный слайд';
end;

procedure TForm1.Button11Click(Sender: TObject);
//Экспортировать слайд
var
  n:Integer;
begin
  n:=StrToInt(Edit1.Text);
  W.ActivePresentation.Slides.Item(n).Export('slide.bmp','bmp');
end;

procedure TForm1.Button7Click(Sender: TObject);
//Вставить слайд
var
  n:Integer;
begin
  n:=StrToInt(Edit2.Text);
  W.ActivePresentation.Slides.Paste(n);
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;

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

    Надеемся, что приведенные процедуры не вызвали затруднений.

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


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

    На следующем шаге мы приведем общие сведения о цветовых схемах.




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