Шаг 147.
Автоматизация Microsoft Excel. Работа с ячейками.
Заливка ячейки

    На этом шаге мы рассмотрим способ заливки ячейки.

    Заливка ячейки определяется комбинацией следующих составляющих - цвета, узора и цвета узора, заполняющего пространство ячейки. Программный доступ к параметрам заливки обеспечивает свойство Interior объекта Range, где Range - ссылка на ячейку или область. Свойство Interior представляет собой объект, свойства которого связаны с визуальными свойствами внутреннего пространства ячейки.

    Цвет заливки определяется свойством Color объекта Interior и задается как комбинация трех цветов:

    Color:=RGB(R,G,В);

где R, G, В - числовые значения, соответствующие красному, зеленому и синему цветам. Цвет заливки можно также задать как выбранный на цветовой палитре - для этого используется свойство ColorIndex объекта Interior.

    Выберем цвет заливки, записав в свойство Color значение цветовой комбинации. Для этого используем следующую процедуру.

procedure TForm1.Button4Click(Sender: TObject);
//Задание цвета заливки ячейки
begin
  if ColorDialog1.Execute then
    Range.Interior.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;
    Button4: 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);
    procedure Button4Click(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;

procedure TForm1.Button4Click(Sender: TObject);
//Задание цвета заливки ячейки
begin
  if ColorDialog1.Execute then
    Range.Interior.Color:=ColorDialog1.Color;
end;

end.
Текст этого приложения можно взять здесь (7,5 Кб).

    На следующем шаге мы продолжим изучение этого вопроса.




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