На этом шаге мы рассмотрим создание линии и задание ее параметров.
Линия в рабочей книге Excel создается с использованием метода AddLine коллекции Shapes. Аргументами метода AddLine являются начальные и конечные координаты (BeginX, BeginY, EndX и EndY типа Extended). Толщина, цвет и другие характеристики линии задаются, в основном, так же, как для линии границы надписи (таблица 1).
Свойство | Тип | Назначение |
---|---|---|
Visible | Boolean | Отобразить/скрыть линию |
Weight | Integer | Толщина линии |
ForeColor.RGB | TColor | Цвет линии |
BackColor.RGB | TColor | Цвет фона (для узора) |
Style | Integer | Тип линии |
DashStyle | Integer | Шаблон линии |
Pattern | Integer | Узор |
BeginArrowheadStyle | Integer | Вид стрелки в начале линии |
BeginArrowheadLength | Integer | Длина стрелки в начале линии |
BeginArrowheadWidth | Integer | Ширина стрелки в начале линии |
EndArrowheadStyle | Integer | Вид стрелки в конце линии |
EndArrowheadLength | Integer | Длина стрелки в конце линии |
EndArrowheadWidth | Integer | Ширина стрелки в конце линии |
Следующее приложение позволяет создать и настроить параметры линии.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComObj, Spin, ExtDlgs, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; ListBox1: TListBox; Label3: TLabel; Button4: TButton; Panel1: TPanel; Button5: TButton; ColorDialog1: TColorDialog; Label2: TLabel; SpinButton1: TSpinButton; Edit1: TEdit; Edit2: TEdit; SpinButton2: TSpinButton; Label1: TLabel; Label4: TLabel; ComboBox1: TComboBox; Button6: TButton; Button7: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure ListBox1Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure SpinButton1DownClick(Sender: TObject); procedure SpinButton1UpClick(Sender: TObject); procedure SpinButton2DownClick(Sender: TObject); procedure SpinButton2UpClick(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation var E:variant; LN:Variant; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); //Создание объекта Excel и отображение окна begin E:=CreateOleObject('Excel.Application'); E.Visible:=True; end; procedure TForm1.Button2Click(Sender: TObject); //Создание рабочей книги begin E.WorkBooks.Add; end; procedure TForm1.Button3Click(Sender: TObject); //Создание линии var left,top:Extended; begin left:=10; top:=11; if E.ActiveWorkBook.ActiveSheet.Shapes.Count>0 then begin left:=E.ActiveWorkBook.ActiveSheet.Shapes. item(E.ActiveWorkBook.ActiveSheet.Shapes.count).Left+20; top:=E.ActiveWorkBook.ActiveSheet.Shapes. item(E.ActiveWorkBook.ActiveSheet.Shapes.count).Top+20; end; E.ActiveWorkBook.ActiveSheet.Shapes.AddLine( left, top, left+150, top+100); end; procedure TForm1.Button4Click(Sender: TObject); //Заполнить список линий var a: Integer; begin ListBox1.Items.Clear; for a:=1 to E.ActiveWorkBook.ActiveSheet.Shapes.Count do ListBox1.Items.Add(E.ActiveWorkBook.ActiveSheet.Shapes.Item(a).Name); end; procedure TForm1.ListBox1Click(Sender: TObject); // При активизации строки объекта ListBoxl, используя имя объекта, // выделяем его из коллекции Shapes и записываем ссылку на этот объект //в переменную LN. begin LN:=E.ActiveWorkBook.ActiveSheet.Shapes.Item( ListBox1.Items.Strings[ListBox1.ItemIndex]); end; procedure TForm1.Button5Click(Sender: TObject); //Задание цвета линии begin if ColorDialog1.Execute then LN.Line.ForeColor.RGB:=ColorDialog1.Color; end; procedure TForm1.SpinButton1DownClick(Sender: TObject); //Уменньшение толщины линии begin LN.Line.Weight:=LN.Line.Weight-0.25; Edit1.Text:=FloatToStr(LN.Line.Weight); end; procedure TForm1.SpinButton1UpClick(Sender: TObject); //Увеличение толщины линии begin LN.Line.Weight:=LN.Line.Weight+0.25; Edit1.Text:=FloatToStr(LN.Line.Weight); end; procedure TForm1.SpinButton2DownClick(Sender: TObject); //Уменьшение плотности цвета begin if LN.Line.Transparency<1 then begin LN.Line.Transparency:=LN.Line.Transparency+0.01; Edit2.Text:=FloatToStr(LN.Line.Transparency); end; end; procedure TForm1.SpinButton2UpClick(Sender: TObject); //Увеличение плотности цвета begin if LN.Line.Transparency>0 then begin LN.Line.Transparency:=LN.Line.Transparency-0.01; Edit2.Text:=FloatToStr(LN.Line.Transparency); end; end; procedure TForm1.ComboBox1Change(Sender: TObject); //Выбор узора для линии границы надписи begin LN.Line.Pattern:=ComboBox1.ItemIndex+1; end; procedure TForm1.Button6Click(Sender: TObject); //Задание цвета узора begin if ColorDialog1.Execute then LN.Line.ForeColor.RGB:=ColorDialog1.Color; end; procedure TForm1.Button7Click(Sender: TObject); //Задание цвета фона узора begin if ColorDialog1.Execute then LN.Line.BackColor.RGB:=ColorDialog1.Color; end; end.
Результат работы приложения изображен на рисунке 1.
Рис.1. Результат работы приложения
На следующем шаге мы рассмотрим создание произвольных фигур.