Шаг 146.
Автоматизация Microsoft Excel. Работа с ячейками.
Границы ячейки

    На этом шаге мы рассмотрим настройку границ ячеек.

    Перейдем к анализу графического оформления ячейки. Ячейка представляет собой прямоугольную область. Эта область, кроме отображаемого в ней значения, имеет такие свойства, как заливка и граница. Как заливка ячейки, так и граница имеют соответствующие свойства (цвет, толщину, тип, узор, цвет узора). Рассмотрим эти свойства подробней. Граница ячейки представляет собой линии, ограничивающие ее с четырех сторон. Линии объединены в коллекцию 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.
Текст этого приложения можно взять здесь (7,3 Кб).

    На следующем шаге мы рассмотрим заливку ячеек.




Предыдущий шаг Содержание Следующий шаг