На этом шаге мы рассмотрим настройку границ ячеек.
Перейдем к анализу графического оформления ячейки. Ячейка представляет собой прямоугольную область. Эта область, кроме отображаемого в ней значения, имеет такие свойства, как заливка и граница. Как заливка ячейки, так и граница имеют соответствующие свойства (цвет, толщину, тип, узор, цвет узора). Рассмотрим эти свойства подробней. Граница ячейки представляет собой линии, ограничивающие ее с четырех сторон. Линии объединены в коллекцию Borders, доступ к любой из них осуществляется через элементы этой коллекции. Каждый элемент коллекции предоставляет доступ к отрезку прямой, прилегающему к той или другой стороне ячейки. Диагонали ячейки тоже являются элементами этой коллекции. Каждый элемент коллекции Borders является объектом и имеет свои индивидуальные свойства, что позволяет задать тип линии и цвет отдельно для каждой линии границы ячейки. Рассмотрим процедуры, позволяющие обеспечить доступ к любой линии границы (или ко всей границе сразу) выбранной ячейки, установить ее толщину, тип линии и цвет.
procedure TForm1.ComboBox1Change(Sender: TObject); //Выбор границы begin if CheckBox1.Checked Then Border:=Range.Borders.Item[ComboBox1.ItemIndex+5]; end; procedure TForm1.SpinEdit1Change(Sender: TObject); //Устанавливаем толщину линии границы ячейки begin Border.Weight:=SpinEdit1.Value; end; procedure TForm1.ComboBox2Change(Sender: TObject); //Устанавливаем тип линии границы ячейки begin Case ComboBox2.ItemIndex Of 0: Border.LineStyle:=1; //xlContinuous 1: Border.LineStyle:=-4115; //xlDash 2: Border.LineStyle:=4; //xlDashDot 3: Border.LineStyle:=5; //xlDashDotDot 4: Border.LineStyle:=-4118; //xlDot 5: Border.LineStyle:=-4119; //xlDouble 6: Border.LineStyle:=-4142; //xlLineStyleNone 7: Border.LineStyle:=13; //xlSlantDashDot End; end; procedure TForm1.Button3Click(Sender: TObject); //Устанавливаем цвет линии границы ячейки begin if ColorDialog1.Execute then Border.Color:=ColorDialog1.Color; end;
Результат настройки линий границ ячеек с использованием приведенных процедур представлен на рисунке 1.
Рис.1. Настройка параметров границы ячейки
Вот полный текст приложения.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComObj, Spin; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Label1: TLabel; Edit1: TEdit; CheckBox1: TCheckBox; ComboBox1: TComboBox; Label2: TLabel; SpinEdit1: TSpinEdit; Label3: TLabel; ComboBox2: TComboBox; ColorDialog1: TColorDialog; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Edit1Exit(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure SpinEdit1Change(Sender: TObject); procedure ComboBox2Change(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation var E:variant; Range:variant; Border: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.Edit1Exit(Sender: TObject); //Определение области begin Range:=E.ActiveSheet.Range[Edit1.Text]; end; procedure TForm1.ComboBox1Change(Sender: TObject); //Выбор границы begin if CheckBox1.Checked Then Border:=Range.Borders.Item[ComboBox1.ItemIndex+5]; end; procedure TForm1.SpinEdit1Change(Sender: TObject); //Устанавливаем толщину линии границы ячейки begin Border.Weight:=SpinEdit1.Value; end; procedure TForm1.ComboBox2Change(Sender: TObject); //Устанавливаем тип линии границы ячейки begin Case ComboBox2.ItemIndex Of 0: Border.LineStyle:=1; //xlContinuous 1: Border.LineStyle:=-4115; //xlDash 2: Border.LineStyle:=4; //xlDashDot 3: Border.LineStyle:=5; //xlDashDotDot 4: Border.LineStyle:=-4118; //xlDot 5: Border.LineStyle:=-4119; //xlDouble 6: Border.LineStyle:=-4142; //xlLineStyleNone 7: Border.LineStyle:=13; //xlSlantDashDot End; end; procedure TForm1.Button3Click(Sender: TObject); //Устанавливаем цвет линии границы ячейки begin if ColorDialog1.Execute then Border.Color:=ColorDialog1.Color; end; end.
На следующем шаге мы рассмотрим заливку ячеек.