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

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

    Приведем пример использования указанных объектов.

    Добавим на слайд шестиугольник, в который поместим текст, и определим его начальные свойства:

procedure TForm1.Button3Click(Sender: TObject);
const
  msoShapeHexagon = 10;
var
 V: Variant;
begin
 W.Presentations.Add;
 W.ActivePresentation.Slides.Add(1,1); //Второй параметр - ppLayoutTitle
 Slide1(Self);
 W.ActivePresentation.Slides.Item(1).Shapes
       .AddShape(msoShapeHexagon, 50,5, 250,250);
 V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3)
   .TextFrame.TextRange;
 // Начальные значения TextRange
 V.Text:='Шестиугольник';
 V.Font.Color.RGB := RGB(255, 0, 0);
 V.Font.Name:='Arial';
 V.Font.Size:=16;
 V.Font.Bold:=True; // Жирный
 V.Font.Italic:=True; // Курсив
 V.Font.Shadow:=True; // Тень
end;

    В дальнейшем, используя соответствующие компоненты Delphi-приложения, будем менять значения этих параметров. Результаты их изменения будут отображаться на надписи шестиугольника.

    Внешний вид приложения изображен на рисунке 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;
    Label13: TLabel;
    ComboBox10: TComboBox;
    Label2: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    ComboBox2: TComboBox;
    ComboBox3: TComboBox;
    Label6: TLabel;
    Label7: TLabel;
    ComboBox5: TComboBox;
    Label8: TLabel;
    Edit2: TEdit;
    UpDown2: TUpDown;
    ComboBox6: TComboBox;
    Edit1: TEdit;
    Button5: TButton;
    procedure Button1Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ComboBox10Change(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
    procedure ComboBox3Change(Sender: TObject);
    procedure UpDown2Changing(Sender: TObject; var AllowChange: Boolean);
    procedure ComboBox6Change(Sender: TObject);
    procedure Button5Click(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);
 W.ActivePresentation.Slides.Item(1).Shapes
       .AddShape(msoShapeHexagon, 50,5, 250,250);
 V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3)
   .TextFrame.TextRange;
 // Начальные значения TextRange
 V.Text:='Шестиугольник';
 V.Font.Color.RGB := RGB(255, 0, 0);
 V.Font.Name:='Arial';
 V.Font.Size:=16;
 V.Font.Bold:=True; // Жирный
 V.Font.Italic:=True; // Курсив
 V.Font.Shadow:=True; // Тень
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)
          .TextFrame.TextRange;
    V.Font.Color.RGB:=RGB(R,G,B);
   end;
end;

procedure TForm1.ComboBox6Change(Sender: TObject);
// Тень символов
var
  V: Variant;
begin
    V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3)
          .TextFrame.TextRange;
    if ComboBox6.ItemIndex=0 then V.Font.Shadow:=True
    else V.Font.Shadow:=False;
end;

procedure TForm1.UpDown2Changing(Sender: TObject;
  var AllowChange: Boolean);
// Размер символов
var
 V: Variant;
begin
    V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3)
          .TextFrame.TextRange;
    V.Font.Size:=StrToInt(Edit2.Text);
end;

procedure TForm1.ComboBox2Change(Sender: TObject);
// Подчеркивание
var
 V: Variant;
begin
    V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3)
          .TextFrame.TextRange;
    if ComboBox2.ItemIndex=0 then V.Font.Underline:=False
    else V.Font.Underline:=True;
end;

procedure TForm1.ComboBox3Change(Sender: TObject);
// Шрифт
var
 V: Variant;
begin
    V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3)
          .TextFrame.TextRange;
    V.Font.Name:=ComboBox3.Text;
end;

procedure TForm1.Button5Click(Sender: TObject);
// Вставка текста
var
 V: Variant;
begin
    V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3)
          .TextFrame.TextRange;
    if ComboBox5.ItemIndex=0 then V.InsertAfter(Edit1.Text)
    else V.InsertBefore(Edit1.Text);
end;


procedure TForm1.ComboBox10Change(Sender: TObject);
// Регистр символов
var
 V: Variant;
begin
    V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3)
          .TextFrame.TextRange;
    V.ChangeCase(ComboBox10.ItemIndex+1);
end;

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

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




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