Шаг 240.
Автоматизация Microsoft PowerPoint.
Оформление презентаций (продолжение)

    На этом шаге мы рассмотрим способ изменения цвета в презентации.

    Для получения образцов слайдов, титульного слайда, раздаточных материалов и заметок используются свойства SlideMaster, TitleMaster, HandoutMaster и NotesMaster объекта Presentation. К образцам можно применять фоновую заливку, добавлять графические объекты и элементы управления ActiveX, изменять оформление текста.

    Для изменения цветовой схемы в образце слайдов, титульного слайда, раздаточных материалов или заметок следует воспользоваться свойством ColorScheme объекта SlideMaster. Свойство ColorScheme возвращает объект ColorScheme, содержащий коллекцию Colors из восьми цветов. Элементы этой коллекции соответствуют следующим элементам цветового оформления:

const  
  ppBackground = $00000001;// цвет фона
  ppForeground = $00000002;// цвет текста и границ автофигур
  ppShadow     = $00000003;// цвет тени
  ppTitle      = $00000004;// цвет текста заголовка
  ppFill       = $00000005;// цвет заливки автофигур
  ppAccent1    = $00000006;// цвет, применяемый в диаграммах
  ppAccent2    = $00000007;// цвет, применяемый в диаграммах
                           // и гипертекстовых ссылках
  ppAccent3    = $00000008;// цвет, применяемый в диаграммах
                           // и выбраных гипертекстовых ссылках

    Например, следующий фрагмент кода устанавливает для слайдов презентации серый фон и темно-красный цвет заголовков:

  W.ActivePresentation.SlideMaster.ColorScheme.
           Colors(ppBackGround).RGB:=RGB(128,128,128);
 W.ActivePresentation.SlideMaster.ColorScheme.
          Colors(ppTitle).RGB:=RGB(200, 0, 0);

    Можно также использовать стандартные цвета, определенные в Delphi. Например, следующий фрагмент кода устанавливает желтый цвет заливки автофигур:

   W.ActivePresentation.SlideMaster.ColorScheme.
           Colors(ppFill).RGB:=clYellow;

    Приведем пример программы, изменяющей цвет текста и фона презентации.

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;
    procedure Button1Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
    procedure Button5Click(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;

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,2{ppLayoutText});
end;


procedure TForm1.Button4Click(Sender: TObject);
begin
 W.Quit;
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.
Текст этого приложения можно взять здесь (224,3 Кб).

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


Рис.1. Задание цветов

    Отметим, что если до присоединения шаблона к слайдам презентации были применены стандартные цветовые схемы (о них речь пойдет в следующих шагах), после присоединения шаблона эти цветовые схемы будут утеряны.

    На следующем шаге мы закончим изучение этого вопроса.




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