Шаг 259.
Автоматизация Microsoft PowerPoint.
Пример использования объекта LineFormat

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

    Для того, чтобы использовать свойства этого объекта, получим ссылку на объект LineFormat, воспользовавшись методом Line объекта Shape. После этого установим начальные значения некоторых свойств:

  .   .   .   .
 // Добавление линии
 W.ActivePresentation.Slides.Item(1).Shapes.AddLine(10, 10, 250, 250);
  // Получение ссылки на объект LineFormat 
 V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).Line;
 // Задание начальных значений некоторых свойств
 V.BackColor.RGB:=RGB(0,0,255);
 V.ForeColor.RGB:=RGB(255,0,0);
 V.Weight:=6;
 V.BeginArrowheadStyle:=5; // msoArrowheadDiamond
 V.BeginArrowheadLength:=3; // msoArrowheadLong
 V.BeginArrowheadWidth:=1; // msoArrowheadNarrow
 V.DashStyle:=8; // msoLineLongDashDot
 V.EndArrowheadLength:=1; // msoArrowheadShort
 V.EndArrowheadStyle:=3; // msoArrowheadOpen
 V.EndArrowheadWidth:=3; // msoArrowheadWide
 V.Style:=5; // msoLineThickBetweenThin

    Затем, производя выбор нужного значения в компонентах TComboBox, меняем значения соответствующих параметров. Произведенные изменения будут сразу же отражены на слайде (обработчики события OnChange компонентов TComboBox).

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


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

    Полный текст приложения:

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    CheckBox1: TCheckBox;
    Button3: TButton;
    Button4: TButton;
    ColorDialog1: TColorDialog;
    Label1: TLabel;
    Button2: TButton;
    Label2: TLabel;
    ComboBox1: TComboBox;
    Label3: TLabel;
    ComboBox2: TComboBox;
    Label4: TLabel;
    Label5: TLabel;
    ComboBox3: TComboBox;
    Label6: TLabel;
    ComboBox4: TComboBox;
    Label7: TLabel;
    ComboBox5: TComboBox;
    Button11: TButton;
    ComboBox6: TComboBox;
    ComboBox7: TComboBox;
    Label8: TLabel;
    ComboBox8: TComboBox;
    Label9: TLabel;
    Label10: TLabel;
    ComboBox9: TComboBox;
    Label12: TLabel;
    Edit2: TEdit;
    UpDown1: TUpDown;
    Label13: TLabel;
    ComboBox10: TComboBox;
    procedure Button1Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
    procedure ComboBox6Change(Sender: TObject);
    procedure ComboBox7Change(Sender: TObject);
    procedure ComboBox4Change(Sender: TObject);
    procedure ComboBox5Change(Sender: TObject);
    procedure ComboBox8Change(Sender: TObject);
    procedure ComboBox3Change(Sender: TObject);
    procedure ComboBox9Change(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure ComboBox10Change(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.AddLine(10, 10, 250, 250);
 // Задание цветов переднего плана и фона заливки
 V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).Line;
 V.BackColor.RGB:=RGB(0,0,255);
 V.ForeColor.RGB:=RGB(255,0,0);
 V.Weight:=6;
 V.BeginArrowheadStyle:=5; // msoArrowheadDiamond
 V.BeginArrowheadLength:=3; // msoArrowheadLong
 V.BeginArrowheadWidth:=1; // msoArrowheadNarrow
 V.DashStyle:=8; // msoLineLongDashDot
 V.EndArrowheadLength:=1; // msoArrowheadShort
 V.EndArrowheadStyle:=3; // msoArrowheadOpen
 V.EndArrowheadWidth:=3; // msoArrowheadWide
// V.Pattern:=45; // msoPatternDottedGrid
 V.Style:=5; // msoLineThickBetweenThin
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.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).Line;
    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).Line;
    V.BackColor.RGB:=RGB(R,G,B);
   end;
end;


procedure TForm1.ComboBox1Change(Sender: TObject);
// Длина стрелки в начале линии
var
  V: Variant;
begin
 V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).Line;
 V.BeginArrowheadStyle:=ComboBox1.ItemIndex+1;
end;

procedure TForm1.ComboBox2Change(Sender: TObject);
// Стиль стрелки в начале линии
var
  V: Variant;
begin
 V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).Line;
 V.BeginArrowheadLength:=ComboBox2.ItemIndex+1;
end;

procedure TForm1.ComboBox6Change(Sender: TObject);
// Толщина стрелки в начале линии
var
  V: Variant;
begin
 V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).Line;
 V.BeginArrowheadWidth:=ComboBox6.ItemIndex+1;
end;

procedure TForm1.ComboBox7Change(Sender: TObject);
// Шаблон линии (стиль пунктира)
var
  V: Variant;
begin
 V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).Line;
 V.DashStyle:=ComboBox7.ItemIndex+1;
end;

procedure TForm1.ComboBox4Change(Sender: TObject);
// Длина стрелки в конце линии
var
  V: Variant;
begin
 V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).Line;
 V.EndArrowheadStyle:=ComboBox4.ItemIndex+1;
end;

procedure TForm1.ComboBox5Change(Sender: TObject);
// Стиль стрелки в конце линии
var
  V: Variant;
begin
 V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).Line;
 V.EndArrowheadLength:=ComboBox5.ItemIndex+1;
end;

procedure TForm1.ComboBox8Change(Sender: TObject);
// Толщина стрелки в конце линии
var
  V: Variant;
begin
 V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).Line;
 V.EndArrowheadWidth:=ComboBox8.ItemIndex+1;
end;

procedure TForm1.ComboBox3Change(Sender: TObject);
// Узор линии
var
  V: Variant;
begin
 V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).Line;
 V.Pattern:=ComboBox3.ItemIndex+1;
end;

procedure TForm1.ComboBox9Change(Sender: TObject);
// Стиль линии
var
  V: Variant;
begin
 V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).Line;
 V.Style:=ComboBox9.ItemIndex+1;
end;

procedure TForm1.Edit2Change(Sender: TObject);
// Толщина линии
var
  V: Variant;
begin
 V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).Line;
 V.Weight:=StrToInt(Edit2.Text);
end;

procedure TForm1.ComboBox10Change(Sender: TObject);
// Видимость линии
var
  V: Variant;
begin
 V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).Line;
 if ComboBox10.ItemIndex=0 then V.Visible:=True
 else V.Visible:=False;
end;

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

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




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