Шаг 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 Кб).
На следующем шаге мы продолжим изучение этого вопроса.
Предыдущий шаг
Содержание
Следующий шаг