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

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

    Перечислим основные методы этого объекта.

    Метод Background определяет, что фон объекта (фигуры) будет совпадать с фоном слайда. Если изменить фон слайда, то фон фигуры также изменится (метод не имеет параметров).

    Метод OneColorGradient задает одноцветную градиентную заливку с указанными параметрами. Синтаксис этого метода:

  OneColorGradient (Style, Variant, Degree),
где

    Метод Patterned задает заливку-узор с указанными параметрами. Общий вид:

  Patterned(Pattern),
где Pattern определяет шаблон узора. Возможные значения этого параметра (в скобках - числовые эквиваленты констант): msoPattern10Percent (2), msoPattern20Percent (3), msoPattern25Percent (4), msoPattern30Percent (5), msoPattern40Percent (6), msoPattern50Percent (7), msoPattern5Percent (1), msoPattern60Percent (8), msoPattern70Percent (9), msoPattern75Percent (10), msoPattern80Percent (11), msoPattern90Percent (12), msoPatternDarkDownwardDiagonal (15), msoPatternDarkHorizontal (13), msoPatternDarkUpwardDiagonal (16), msoPatternDashedDownwardDiagonal (28), msoPatternDashedHorizontal (32), msoPatternDashedUpwardDiagonal (27), msoPatternDashedVertical (31), msoPatternDiagonalBrick (40), msoPatternDivot (46), msoPatternDottedDiamond (24), msoPatternDottedGrid (45), msoPatternHorizontalBrick (35), msoPatternLargeCheckerBoard (36), msoPatternLargeConfetti (33), msoPatternLargeGrid (34), msoPatternLightDownwardDiagonal (21), msoPatternLightHorizontal (19), msoPatternLightUpwardDiagonal (22), msoPatternLightVertical (20), msoPatternMixed (-2), msoPatternNarrowHorizontal (30), msoPatternNarrowVertical (29), msoPatternOutlinedDiamond (41), msoPatternPlaid (42), msoPatternShingle (47), msoPatternSmallCheckerBoard (17), msoPatternSmallConfetti (37), msoPatternSmallGrid (23), msoPatternSolidDiamond (39), msoPatternSphere (43), msoPatternTrellis (18), msoPatternWave (48), msoPatternWeave (44), msoPatternWideDownwardDiagonal (25), msoPatternWideUpwardDiagonal (26), msoPatternZigZag (38), msoPatternDarkVertical (14).

    Метод PresetGradient задает заливку с одним из предопределенных типов градиента. Синтаксис метода:

  PresetGradient(Style, Variant, PresetGradientType),
где

    Метод PresetTextured задает текстурную заливку с текстурой указанного типа. Общий вид метода:

  PresetTextured (PresetTexture),
где PresetTexture - константа, определяющая тип текстуры. Возможные значения этой константы: msoPresetTextureMixed (-2), msoTextureBlueTissuePaper (17), msoTextureBouquet (20), msoTextureBrownMarble (11), msoTextureCanvas (2), msoTextureCork (21), msoTextureDenim (3), msoTextureFishFossil (7), msoTextureGranite (12), msoTextureGreenMarble (9), msoTextureMediumWood (24), msoTextureNewsprint (13), msoTextureOak (23), msoTexturePaperBag (6), msoTexturePapyrus (1), msoTextureParchment (15), msoTexturePinkTissuePaper (18), msoTexturePurpleMesh (19), msoTextureRecycledPaper (14), msoTextureSand (8), msoTextureStationery (16), msoTextureWalnut (22), msoTextureWaterDroplets (5), msoTextureWhiteMarble (10), msoTextureWovenMat (4).

    Метод Solid задает сплошную заливку. Данный метод не имеет параметров.

    Метод TwoColorGradient задает двухцветную градиентную штриховку. Общий вид этого метода следующий:

  TwoColorGradient(Style, Variant), 
где

    Метод UserPicture использует в качестве заливки рисунок, загруженный из файла. Рисунок масштабируется так, чтобы заполнить весь объект. Общий вид:

  UserPicture (PictureFile),
где PictureFile - имя графического файла, содержащего рисунок.

    Метод UserTextured задает текстуру, определенную пользовательским графическим файлом. Рисунок, содержащийся в файле, повторяется до заполнения объекта. Общий вид:

  UserTextured(TextureFile),
где TextureFile - имя графического файла, содержащего текстуру.

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

    Вот его текст:

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    CheckBox1: TCheckBox;
    Button3: TButton;
    Button4: TButton;
    ColorDialog1: TColorDialog;
    Label1: TLabel;
    Button5: TButton;
    Button2: TButton;
    Label2: TLabel;
    ComboBox1: TComboBox;
    Label3: TLabel;
    ComboBox2: TComboBox;
    Label4: TLabel;
    Edit1: TEdit;
    Label5: TLabel;
    ComboBox3: TComboBox;
    Label6: TLabel;
    ComboBox4: TComboBox;
    Label7: TLabel;
    ComboBox5: TComboBox;
    Button6: TButton;
    OpenPictureDialog1: TOpenPictureDialog;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    procedure Button1Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  private
    procedure Slide1(Sender: TObject);
    { 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.Button3Click(Sender: TObject);
const
  msoShapeHexagon = 10;
var
 V: Variant;
begin
 W.Presentations.Add;
 W.ActivePresentation.Slides.Add(1,1); //Второй параметр - ppLayoutTitle
 Slide1(Self); // Заполнить 1-й слайд
 W.ActivePresentation.Slides.Item(1).Shapes
       .AddShape(msoShapeHexagon, 50,5, 200,200);
 V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3)
   .TextFrame.TextRange;
 V.Characters(Start:=1,Length:=0).Text:='Шестиугольник';
 // Задание цветов переднего плана и фона заливки
 V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).Fill;
 V.BackColor.RGB:=RGB(0,0,255);
 V.ForeColor.RGB:=RGB(255,0,0);
end;

procedure TForm1.Slide1(Sender: TObject);
// Заполнить 1-й слайд
var
 V,V1: Variant;
begin
 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;
 Close;
end;


procedure TForm1.Button5Click(Sender: TObject);
// Одноцветная градиентная заливка (OneColorGradient)
var
  V: Variant;
  a,b: Integer;
  c: real;
begin
  V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).Fill;
  a:=ComboBox1.ItemIndex+1; // Стиль градиента
  b:=ComboBox2.ItemIndex+1; // Вариант
  c:=StrToFloat(Edit1.Text); // Значение градиента
  V.OneColorGradient(a,b,c);
end;

procedure TForm1.Button7Click(Sender: TObject);
// Заливка-узор
var
  V: Variant;
  a: Integer;
begin
  V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).Fill;
  a:=ComboBox3.ItemIndex+1; // Узор
  V.Patterned(a);
end;

procedure TForm1.Button8Click(Sender: TObject);
// Заливка определенным типом градиента (PresetGradient)
var
  V: Variant;
  a,b,c: Integer;
begin
  V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).Fill;
  a:=ComboBox1.ItemIndex+1; // Стиль градиента
  b:=ComboBox2.ItemIndex+1; // Вариант
  c:=ComboBox4.ItemIndex+1; // Тип градиента
  V.PresetGradient (a,b,c);
end;

procedure TForm1.Button9Click(Sender: TObject);
// Текстурная заливка (PresetTextured)
var
  V: Variant;
  a: Integer;
begin
  V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).Fill;
  a:=ComboBox5.ItemIndex+1; // Тип текстуры
  V.PresetTextured(a);
end;

procedure TForm1.Button10Click(Sender: TObject);
// Двухцветная градиентная заливка (TwoColorGradient)
var
  V: Variant;
  a,b: Integer;
begin
  V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).Fill;
  a:=ComboBox1.ItemIndex+1; // Стиль градиента
  b:=ComboBox2.ItemIndex+1; // Вариант
  V.TwoColorGradient(a,b);
end;

procedure TForm1.Button6Click(Sender: TObject);
// Загрузка рисунка
var
  V: Variant;
begin
  if OpenPictureDialog1.Execute then
  begin
    V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).Fill;
    V.UserPicture(OpenPictureDialog1.FileName);
  end;
end;


procedure TForm1.Button2Click(Sender: TObject);
// Цвет переднего плана заливки
var
  R,G,B: Byte; // Составляющие цветов
  V: Variant;
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;
    V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).Fill;
    V.ForeColor.RGB:=RGB(R,G,B);
   end;
end;

procedure TForm1.Button11Click(Sender: TObject);
// Цвет фона заливки
var
  R,G,B: Byte; // Составляющие цветов
  V: Variant;
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;
    V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).Fill;
    V.BackColor.RGB:=RGB(R,G,B);
   end;
end;


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

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


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

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

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




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