На этом шаге мы приведем пример использования объектов 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.
На следующем шаге мы рассмотрим объект ParagraphFormat.