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

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

    Объект ColorScheme представляет собой цветовую схему, содержащую набор из восьми цветов, используемых для раскраски различных элементов слайда. Каждый объект ColorScheme является элементом коллекции ColorSchemes. Конкретный цвет представляет собой объект RGBColor.

    Объект ColorScheme имеет всего два метода. Рассмотрим один из них.

    Метод Colors возвращает объект RGBColor, который представляет собой один из цветов цветовой схемы. Синтаксис этого метода:

 Colors(SchemeColor),
где SchemeColor - обязательный числовой параметр, определяющий конкретный цвет в цветовой схеме. Его значение может равняться одной из констант, представленных ниже.
ppBackground = 1; // Фон
ppForeground = 2; // Текст и линии
ppShandow    = 3; // Тени
ppTitle      = 4; // Заголовок
ppFill       = 5; // Заливка
ppAccent1    = 6; // Цвет, применяемый в диаграммах
ppAccent2    = 7; // Цвет, применяемый в диаграммах
                  // и гипертекстовых ссылках
ppAccent3    = 8; // Цвет, применяемый в диаграммах
                  // и выбранных гипертекстовых ссылках

    Объект RGBColor представляет собой отдельный цвет в цветовой схеме. Чтобы получить к нему доступ, можно использовать метод Colors, а для задания цвета можно использовать свойство RGB данного объекта.

    Свойство RGB определяет цвет путем суперпозиции трех составляющих: красной (R), зеленой (G) и синей (В). Значения всех трех составляющих лежат в диапазоне от 0 до 255. Наименьшее значение соответствует отсутствию цветовой составляющей, а наибольшее - чистому цвету.

    Приведем пример использования этого объекта. Вот его текст:

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;
    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);
  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('Rectangle 2')
   .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('Rectangle 3')
   .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('Rectangle 2')
   .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('Rectangle 3')
   .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;

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

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


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

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

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

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;

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

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




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