На этом шаге мы рассмотрим методы этого объекта и приведем пример их использования.
Перечислим основные методы этого объекта.
Метод AddConnector предназначен для программной реализации соединительной линии. Данный метод возвращает объект Shape, который и представляет собой созданную соединительную линию. Следует иметь в виду, что метод AddConnector только создает соединительную линию, но не соединяет ее с объектами. Для того чтобы задать объекты, которые будет соединять данная линия, используются методы BeginConnect и EndConnect.
Синтаксис метода AddConnector:
AddConnector(Type, BeginX, BeginY, EndX, EndY),
Метод BeginConnect связывает начало коннектора с фигурой. Его синтаксис:
BeginConnect (Shape, Site),
Метод EndConnect связывает конец коннектора с фигурой. Его синтаксис аналогичен методу BeginConnect. Следующие строки добавляют коннектор и определяют его начало в нижней границе первой фигуры, а конец - в верхней границе второй фигуры:
. . . . const msConnectorStraight = 1; . . . . // Добавить коннектор V:=W.ActivePresentation.Slides.Item(1).Shapes .AddConnector(msConnectorStraight,0,0,0,0); V1:=W.ActivePresentation.Slides.Item(1).Shapes; V.ConnectorFormat.BeginConnect(ConnectedShape:=V1.Item(1), ConnectionSite:=3); V.ConnectorFormat.EndConnect (ConnectedShape:=V1.Item(2), ConnectionSite:=1);
Методы BeginDisconnect и EndDisconnect используются, соответственно, для разрыва начала и конца коннектора с фигурами. В отличие от ранее рассмотренных методов, они не имеют параметров.
Пример использования указанных методов:
V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).ConnectorFormat; V.BeginDisconnect; V.EndDisconnect;
Приведем пример приложения, демонстрирующего использование перечисленных методов.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComObj, StdCtrls; type TForm1 = class(TForm) Button1: TButton; CheckBox1: TCheckBox; Button3: TButton; Button4: TButton; ColorDialog1: TColorDialog; ComboBox1: TComboBox; Label1: TLabel; Button2: TButton; Button5: TButton; procedure Button1Click(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure Button2Click(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 msConnectorStraight = 1; var V,V1: Variant; begin W.Presentations.Add; W.ActivePresentation.Slides.Add(1,1); //Второй параметр - ppLayoutTitle Slide1(Self); // Заполнить 1-й слайд // Добавить коннектор V:=W.ActivePresentation.Slides.Item(1).Shapes .AddConnector(msConnectorStraight,0,0,0,0); V1:=W.ActivePresentation.Slides.Item(1).Shapes; V.ConnectorFormat.BeginConnect(ConnectedShape:=V1.Item(1), ConnectionSite:=3); V.ConnectorFormat.EndConnect (ConnectedShape:=V1.Item(2), ConnectionSite:=1); 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.ComboBox1Change(Sender: TObject); var V: Variant; begin V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).ConnectorFormat; V.Type:=ComboBox1.ItemIndex+1; // Тип соединительной линии end; procedure TForm1.Button2Click(Sender: TObject); // Отсоединить коннектор var V: Variant; begin V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3).ConnectorFormat; V.BeginDisconnect; V.EndDisconnect; ShowMessage('Коннектор отсоединен'); end; procedure TForm1.Button5Click(Sender: TObject); // Присоединить коннектор var V,V1: Variant; begin V1:=W.ActivePresentation.Slides.Item(1).Shapes; V:=W.ActivePresentation.Slides.Item(1).Shapes.Item(3); V.ConnectorFormat.BeginConnect(ConnectedShape:=V1.Item(1), ConnectionSite:=3); V.ConnectorFormat.EndConnect (ConnectedShape:=V1.Item(2), ConnectionSite:=1); ShowMessage('Коннектор присоединен'); end; end.
Результат работы приложения изображен на рисунке 1.
Рис.1. Результат работы приложения
Кратко прокомментируем основные моменты этого приложения.
После построения коннектора можно переключиться на презентацию и попробовать подвигать связанные фигуры. Отметим, что в этом случае коннектор будет их связывать. После разрыва связи аналогичные движения не приведет к изменению местоположения коннектора. Повторное подсоединение коннектора восстановит исходное состояние.
Поле со списком позволяет изменить внешний вид коннектора.
На следующем шаге мы рассмотрим объект FillFormat.