Шаг 156.
Автоматизация Microsoft Excel. Работа с объектами в книге Excel.
Заливка. Обычная заливка

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

    Заливка области определяется свойствами объекта Fill, который принадлежит объекту TextBox и является его свойством. Манипулируя объектом Fill, мы можем настроить цвет и стиль заливки, фоновый рисунок и другие параметры области. Самый простой вариант заливки заключается в выборе цвета фона, который определяется свойством ForeColor объекта Fill. Для более сложного варианта заливки необходимо использование других свойств и методов объекта Fill, часть из которых представлены в таблице 1.

Таблица 1. Свойства и методы объекта Fill
Свойство или метод Тип Назначение
Туре Integer Определяет тип заливки - одноцветная или градиентная заливка, узор или рисунок
Visible Boolean True/False - показать/скрыть заливку
Transparency Extended 0..1 - определяет прозрачность заливки
BackColor Integer Определяет цвет заливки
Solid Метод Сбрасывает пользовательские настройки заливки и задает однотонную заливку
GradientStyle Integer Определяет направление градиента и тип штриховки
GradientVariant Integer Выбор варианта градиента для данного типа штриховки
GradientColorType Integer Определяет для выбранного типа штриховки градиента один, два цвета, или заготовку
GradientDegree Extended Определяет яркость двух цветов для градиентной заливки
PresetGradientType Integer Задает одну из доступных заготовок градиентов
OneColorGradient Метод Создает одноцветную градиентную заливку
TwoColorGradient Метод Создает двухцветную градиентную заливку
PresetGradient Метод Создает один из вариантов выбранной заготовки градиентной заливки
Pattern Integer Определяет тип узора для заливки
ForeColor Integer Определяет цвет фона для заливки узором
Patterned Метод Задает тип узора для заливки
PresetTextured Метод Задает для текстурной заливки образец текстуры
UserTextured Метод Задает для текстурной заливки рисунок из графического файла
UserPicture Метод Задает графический файл для заливки в виде рисунка

    Представленная процедура устанавливает для надписи одноцветную заливку.

procedure TForm1.Button5Click(Sender: TObject);
//Задание цвета заливки
begin
  if ColorDialog1.Execute then
     Fill.ForeColor.RGB:=ColorDialog1.Color;
end;


Рис.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;
    Button3: TButton;
    Memo1: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    ComboBox1: TComboBox;
    ListBox1: TListBox;
    Label3: TLabel;
    Button4: TButton;
    Button5: TButton;
    ColorDialog1: TColorDialog;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure Memo1Change(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure Button5Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
var
  E:variant;
  TextBox:variant;
  Fill: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);
//Создание надписи
const msoTextOrientationHorizontal=1;
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.AddTextbox(msoTextOrientationHorizontal,
     left, top, 200, 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 и записываем ссылку на этот объект
//в переменную TextBox.
begin
  TextBox:=E.ActiveWorkBook.ActiveSheet.Shapes.Item(
    ListBox1.Items.Strings[ListBox1.ItemIndex]);
  Fill:=TextBox.Fill; //Ссылка на объект Fill
end;

procedure TForm1.Memo1Change(Sender: TObject);
//Помещение текста в надпись
begin
  TextBox.TextFrame.Characters.Text:=Memo1.Text;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
//Направление (ориентация) текста
begin
 case ComboBox1.ItemIndex of
  0: TextBox.TextFrame.Orientation:=3; //msoTextOrientationDownward
  1: TextBox.TextFrame.Orientation:=1; //msoTextOrientationHorizontal
  2: TextBox.TextFrame.Orientation:=6; //msoTextOrientationHorizontalRotatedFarEast
  3: TextBox.TextFrame.Orientation:=-2;//msoTextOrientationMixed
  4: TextBox.TextFrame.Orientation:=2; //msoTextOrientationUpward
  5: TextBox.TextFrame.Orientation:=5; //msoTextOrientationVertical
  6: TextBox.TextFrame.Orientation:=4; //msoTextOrientationVerticalFarEast
 end;
end;

procedure TForm1.Button5Click(Sender: TObject);
//Задание цвета заливки
begin
  if ColorDialog1.Execute then
     Fill.ForeColor.RGB:=ColorDialog1.Color;
end;

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

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




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