На этом шаге мы рассмотрим методы этого объекта и приведем пример использования объекта ThreeDFormat.
Перечислим основные методы этого объекта.
Метод IncrementRotationX поворачивает объект вокруг оси X на заданный угол. Общий вид этого метода:
IncrementRotationX(Angle)
Метод IncrementRotationY поворачивает объект вокруг оси Y на заданный угол. Общий вид этого метода:
IncrementRotationY(Angle)
Метод ResetRotation возвращает значения углов поворота объекта вокруг осей X и Y к исходным величинам. Этот метод не имеет параметров.
Метод SetExtrusionDirection задает направление линий проекции. Общий вид этого метода:
SetExtrusionDirection (PresetExtrusionDirection),
Метод SetThreeDFormat задает формат объемной проекции. Общий вид этого метода:
SetThreeDFormat (PresetThreeDFormat),
В заключение приведем пример использования некоторых из перечисленных методов и свойств этого объекта.
Структура приложения не отличается от приложений, приведенных на предыдущих шагах.
Сначала создается презентация и формируется объект, у которого устанавливаются начальные значения "объемности":
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).ThreeD; // Начальные значения объемности V.Depth:=100; V.Visible := True; V.ExtrusionColor.RGB := RGB(255, 100, 255); V.ExtrusionColorType:=1; // msoExtrusionColorAutomatic V.Perspective:=True; V.PresetLightingSoftness:=3; // msoLightingBright V.PresetLightingDirection:=8; // msoLightingBottom V.PresetMaterial:=3; // msoMaterialMetal V.RotationX:=45; end;
Затем некоторые из этих параметров изменяются при изменении соответствующих элементов формы Delphi-приложения.
Вот полный текст приложения:
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; Label3: TLabel; Label4: TLabel; Label5: TLabel; Edit1: TEdit; UpDown1: TUpDown; ComboBox1: TComboBox; ComboBox2: TComboBox; ComboBox3: TComboBox; Label6: TLabel; ComboBox4: TComboBox; Label7: TLabel; ComboBox5: TComboBox; Label8: TLabel; Edit2: TEdit; UpDown2: TUpDown; Label9: TLabel; Edit3: TEdit; UpDown3: TUpDown; 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 ComboBox1Change(Sender: TObject); procedure ComboBox2Change(Sender: TObject); procedure ComboBox3Change(Sender: TObject); procedure ComboBox4Change(Sender: TObject); procedure ComboBox5Change(Sender: TObject); procedure UpDown2Changing(Sender: TObject; var AllowChange: Boolean); procedure UpDown1Changing(Sender: TObject; var AllowChange: Boolean); procedure UpDown3Changing(Sender: TObject; var AllowChange: Boolean); 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); // Заполнить 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).ThreeD; // Начальные значения объемности V.Depth:=100; V.Visible := True; V.ExtrusionColor.RGB := RGB(255, 100, 255); V.ExtrusionColorType:=1; // msoExtrusionColorAutomatic V.Perspective:=True; V.PresetLightingSoftness:=3; // msoLightingBright V.PresetLightingDirection:=8; // msoLightingBottom V.PresetMaterial:=3; // msoMaterialMetal V.RotationX:=45; 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).ThreeD; V.ExtrusionColor.RGB:=RGB(R,G,B); end; end; procedure TForm1.ComboBox10Change(Sender: TObject); // Видимость объема var V: Variant; begin V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).ThreeD; if ComboBox10.ItemIndex=0 then V.Visible:=True else V.Visible:=False; end; procedure TForm1.UpDown1Changing(Sender: TObject; var AllowChange: Boolean); // Глубина проекции var V: Variant; begin V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).ThreeD; V.Depth:=StrToInt(Edit1.Text); end; procedure TForm1.ComboBox1Change(Sender: TObject); // Должен ли цвет линий проекции зависеть от заливки объекта var V: Variant; begin V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).ThreeD; V.ExtrusionColorType:=ComboBox1.ItemIndex+1; end; procedure TForm1.ComboBox2Change(Sender: TObject); // Перспектива var V: Variant; begin V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).ThreeD; if ComboBox2.ItemIndex=0 then V.Perspective:=False else V.Perspective:=True; end; procedure TForm1.ComboBox3Change(Sender: TObject); // Яркость освещения var V: Variant; begin V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).ThreeD; V.PresetLightingSoftness:=ComboBox3.ItemIndex+1; end; procedure TForm1.ComboBox4Change(Sender: TObject); // Положени источника света var V: Variant; begin V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).ThreeD; V.PresetLightingDirection:=ComboBox4.ItemIndex+1; end; procedure TForm1.ComboBox5Change(Sender: TObject); // Материал var V: Variant; begin V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).ThreeD; V.PresetMaterial:=ComboBox5.ItemIndex+1; end; procedure TForm1.UpDown2Changing(Sender: TObject; var AllowChange: Boolean); // Поворот по X var V: Variant; begin V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).ThreeD; V.RotationX:=StrToInt(Edit2.Text); end; procedure TForm1.UpDown3Changing(Sender: TObject; var AllowChange: Boolean); // Поворот по Y var V: Variant; begin V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).ThreeD; V.RotationY:=StrToInt(Edit3.Text); end; procedure TForm1.Button5Click(Sender: TObject); // Сброс поворотов var V: Variant; begin V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).ThreeD; V.ResetRotation; end; end.
Результат работы приложения изображен на рисунке 1.
Рис.1. Результат работы приложения
На следующем шаге мы рассмотрим объект TextRange.