На этом шаге мы рассмотрим использование этого объекта.
Объект ColorScheme представляет собой цветовую схему, содержащую набор из восьми цветов, используемых для раскраски различных элементов слайда. Каждый объект ColorScheme является элементом коллекции ColorSchemes. Конкретный цвет представляет собой объект RGBColor.
Объект ColorScheme имеет всего два метода. Рассмотрим один из них.
Метод Colors возвращает объект RGBColor, который представляет собой один из цветов цветовой схемы. Синтаксис этого метода:
Colors(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.
Результат работы приложения приведен на рисунке 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 (одна из перечисленных в начале шага констант).
На следующем шаге мы рассмотрим управление показом слайдов.