На этом шаге мы рассмотрим задание видимости, толщины и цвета линии границы.
Параметры линии границы объекта определяются свойствами объекта Line, который сам является свойством и принадлежит объекту TextBox. При создании надписи она имеет видимые линии границы с определенными параметрами, но у нас есть возможность сделать эти линии вообще невидимыми. Для этого достаточно изменить состояние свойства Visible объекта Line - установить его в значение False.
procedure TForm1.CheckBox1Click(Sender: TObject); //Задание видимости линии границы begin Line.Visible:=CheckBox1.Checked; end;
Задать толщину линии можно с помощью свойства Weight объекта Line. В приложениях Delphi значение толщины линии должно задаваться дробным числом типа Extended. Следующий программный код отражает изменение толщины линии.
procedure TForm1.SpinEdit1Change(Sender: TObject); //Задание толщины линии границы begin Line.Weight:=SpinEdit1.Value*0.25; end;
Цвет линии границы задается выбором из палитры цветов Excel, при этом значение индекса цвета записывается в свойство ForeColor.SchemeColor. Например, оператор
Line.ForeColor.SchemeColor:=1;
определяет для линии цвет как значение, соответствующее выбранному в палитре цвету. Такой метод определения цвета зависит от палитры и ее изменений. Если требуется задать цвет как комбинацию трех цветов (красный, зеленый, синий), то используем запись значения цвета в формате RGB непосредственно в свойство ForeColor.RGB объекта Line.
Изменим для надписи цвет линии границы, используя формат RGB.
procedure TForm1.Button5Click(Sender: TObject); //Задание цвета линии границы begin if ColorDialog1.Execute then Line.ForeColor.RGB:=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; Button3: TButton; ListBox1: TListBox; Label3: TLabel; Button4: TButton; CheckBox1: TCheckBox; SpinEdit1: TSpinEdit; Label1: TLabel; 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 CheckBox1Click(Sender: TObject); procedure SpinEdit1Change(Sender: TObject); procedure Button5Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation var E:variant; TextBox:variant; Line: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]); Line:=TextBox.Line; //Получить ссылку на объект Line end; procedure TForm1.CheckBox1Click(Sender: TObject); //Задание видимости линии границы begin Line.Visible:=CheckBox1.Checked; end; procedure TForm1.SpinEdit1Change(Sender: TObject); //Задание толщины линии границы begin Line.Weight:=SpinEdit1.Value*0.25; end; procedure TForm1.Button5Click(Sender: TObject); //Задание цвета линии границы begin if ColorDialog1.Execute then Line.ForeColor.RGB:=ColorDialog1.Color; end; end.
На следующем шаге мы продолжим изучение этого вопроса.