На этом шаге мы рассмотрим еще несколько способов заливки надписи.
В качестве текстуры можно также использовать рисунок, загружаемый из файла. Для этого применим метод UserTextured объекта Fill. Единственный аргумент этого метода - строка - ссылка на путь и имя графического файла.
Приведем текст приложения, демонстрирующего использование рисунка в качестве текстуры. Последняя процедура позволяет выбрать рисунок и использовать его в качестве текстуры.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComObj, Spin, ExtDlgs; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button6: TButton; ListBox1: TListBox; Label1: TLabel; Button3: TButton; Label2: TLabel; SpinButton1: TSpinButton; SpinButton2: TSpinButton; SpinButton3: TSpinButton; SpinButton4: TSpinButton; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Edit1: TEdit; Label7: TLabel; ColorDialog1: TColorDialog; Button4: TButton; Button5: TButton; CheckBox1: TCheckBox; ComboBox1: TComboBox; ComboBox2: TComboBox; Label8: TLabel; Label9: TLabel; ComboBox3: TComboBox; Label10: TLabel; ComboBox4: TComboBox; Button7: TButton; OpenPictureDialog1: TOpenPictureDialog; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure ListBox1Click(Sender: TObject); procedure Edit1Change(Sender: TObject); procedure SpinButton1DownClick(Sender: TObject); procedure SpinButton1UpClick(Sender: TObject); procedure SpinButton2DownClick(Sender: TObject); procedure SpinButton2UpClick(Sender: TObject); procedure SpinButton3DownClick(Sender: TObject); procedure SpinButton3UpClick(Sender: TObject); procedure SpinButton4DownClick(Sender: TObject); procedure SpinButton4UpClick(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure ComboBox3Change(Sender: TObject); procedure ComboBox4Change(Sender: TObject); procedure Button7Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation var W:Variant; WordTextBox:Variant; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); //Создание надписи const msoTextOrientationHorizontal=1; var left,top:Extended; begin left:=10; top:=11; if W.ActiveDocument.Shapes.Count>0 then begin if W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Left+ 2*(W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Width+10)< W.ActiveDocument.PageSetup.PageWidth then begin left:=W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Left+ W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Width+10; top :=W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Top; end else begin left:=10; top:=W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Top+ W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Height+10.15; end; end; W.ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal, left, top, 200, 100, W.ActiveDocument.Range); end; procedure TForm1.Button2Click(Sender: TObject); //Создание нового документа begin W:=CreateOleObject('Word.Application'); W.Visible:=True; W.Documents.Add; end; procedure TForm1.Button6Click(Sender: TObject); //Выход begin W.Quit; Close; end; procedure TForm1.Button3Click(Sender: TObject); // Загружаем в ListBoxl имена объектов коллекции Shapes //из документа Word. var a: Integer; begin ListBox1.Items.Clear; for a:=1 to W.ActiveDocument.Shapes.Count do ListBox1.Items.Add(W.ActiveDocument.Shapes.Item(a).Name); end; procedure TForm1.ListBox1Click(Sender: TObject); // При активизации строки объекта ListBoxl, используя имя объекта, // выделяем его из коллекции Shapes и записываем ссылку на этот объект //в переменную WordTextBox. Затем в компонент Edit1 записываем текстовое // содержимое этого объекта. begin W.ActiveDocument.Shapes.Item( ListBox1.Items.Strings[ListBox1.ItemIndex]).Select; WordTextBox:=W.ActiveDocument.Shapes.Item( ListBox1.Items.Strings[ListBox1.ItemIndex]); Edit1.Text:=WordTextBox.TextFrame.TextRange.Text; end; procedure TForm1.Edit1Change(Sender: TObject); // При активизации компонента Edit1 типа TEdit записываем введенный //в него текст непосредственно в объект TextBox документа Word. begin WordTextBox.TextFrame.TextRange.Text:=Edit1.Text; end; // Следующие две процедуры регулируют величину отступа левой границы // текста от левой границы надписи. procedure TForm1.SpinButton1DownClick(Sender: TObject); begin WordTextBox.TextFrame.MarginLeft:=WordTextBox.TextFrame.MarginLeft-0.25; end; procedure TForm1.SpinButton1UpClick(Sender: TObject); begin WordTextBox.TextFrame.MarginLeft:=WordTextBox.TextFrame.MarginLeft+0.25; end; // Следующие две процедуры регулируют величину отступа правой границы // текста от правой границы надписи. procedure TForm1.SpinButton2DownClick(Sender: TObject); begin WordTextBox.TextFrame.MarginRight:=WordTextBox.TextFrame.MarginRight-0.25; end; procedure TForm1.SpinButton2UpClick(Sender: TObject); begin WordTextBox.TextFrame.MarginRight:=WordTextBox.TextFrame.MarginRight+0.25; end; // Следующие две процедуры регулируют величину отступа верхней границы // текста от верхней границы надписи. procedure TForm1.SpinButton3DownClick(Sender: TObject); begin WordTextBox.TextFrame.MarginTop:=WordTextBox.TextFrame.MarginTop-0.25; end; procedure TForm1.SpinButton3UpClick(Sender: TObject); begin WordTextBox.TextFrame.MarginTop:=WordTextBox.TextFrame.MarginTop+0.25; end; // Следующие две процедуры регулируют величину отступа нижней границы // текста от нижней границы надписи. procedure TForm1.SpinButton4DownClick(Sender: TObject); begin WordTextBox.TextFrame.MarginBottom:=WordTextBox.TextFrame.MarginBottom-0.25; end; procedure TForm1.SpinButton4UpClick(Sender: TObject); begin WordTextBox.TextFrame.MarginBottom:=WordTextBox.TextFrame.MarginBottom+0.25; end; procedure TForm1.Button4Click(Sender: TObject); //Задание цвета области надписи begin if not ColorDialog1.Execute then exit; WordTextBox.Fill.ForeColor.RGB:=ColorDialog1.Color; end; procedure TForm1.Button5Click(Sender: TObject); //Задание второго цвета begin if not ColorDialog1.Execute then exit; WordTextBox.Fill.BackColor.RGB:=ColorDialog1.Color; end; procedure TForm1.CheckBox1Click(Sender: TObject); //Задание градиента begin if CheckBox1.Checked then WordTextBox.Fill.TwoColorGradient(ComboBox1.ItemIndex+1, ComboBox2.ItemIndex+1) else WordTextBox.Fill.Solid; end; procedure TForm1.ComboBox3Change(Sender: TObject); //Использование предопределенного градиента begin WordTextBox.Fill.PresetGradient(ComboBox1.ItemIndex+1, ComboBox2.ItemIndex+1,ComboBox3.ItemIndex+1) end; procedure TForm1.ComboBox4Change(Sender: TObject); //Использование предопределенной текстуры для заливки надписи begin WordTextBox.Fill.PresetTextured(ComboBox4.ItemIndex+1); end; procedure TForm1.Button7Click(Sender: TObject); //Выбор рисунка в качестве текстуры для надписи begin If OpenPictureDialog1.Execute Then WordTextBox.Fill.UserTextured(OpenPictureDialog1.FileName); end; end.
Результат работы приложения можно увидеть на рисунке 1:
Рис.1. Результат работы приложения
Рисунок, загружаемый из файла, можно использовать не только в качестве текстуры, но и как фоновый рисунок (заливку), который сжимается или растягивается, вписываясь в размеры области объекта TextBox. Метод UserPicture, аргументом которого является строка - путь и имя графического файла, позволяет использовать рисунок в качестве фона объекта TextBox. Рассмотрим следующее приложение (как обычно, последняя процедура решает поставленную задачу).
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComObj, Spin, ExtDlgs; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button6: TButton; ListBox1: TListBox; Label1: TLabel; Button3: TButton; Label2: TLabel; SpinButton1: TSpinButton; SpinButton2: TSpinButton; SpinButton3: TSpinButton; SpinButton4: TSpinButton; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Edit1: TEdit; Label7: TLabel; ColorDialog1: TColorDialog; Button4: TButton; Button5: TButton; CheckBox1: TCheckBox; ComboBox1: TComboBox; ComboBox2: TComboBox; Label8: TLabel; Label9: TLabel; ComboBox3: TComboBox; Label10: TLabel; ComboBox4: TComboBox; Button7: TButton; OpenPictureDialog1: TOpenPictureDialog; Button8: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure ListBox1Click(Sender: TObject); procedure Edit1Change(Sender: TObject); procedure SpinButton1DownClick(Sender: TObject); procedure SpinButton1UpClick(Sender: TObject); procedure SpinButton2DownClick(Sender: TObject); procedure SpinButton2UpClick(Sender: TObject); procedure SpinButton3DownClick(Sender: TObject); procedure SpinButton3UpClick(Sender: TObject); procedure SpinButton4DownClick(Sender: TObject); procedure SpinButton4UpClick(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure ComboBox3Change(Sender: TObject); procedure ComboBox4Change(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation var W:Variant; WordTextBox:Variant; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); //Создание надписи const msoTextOrientationHorizontal=1; var left,top:Extended; begin left:=10; top:=11; if W.ActiveDocument.Shapes.Count>0 then begin if W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Left+ 2*(W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Width+10)< W.ActiveDocument.PageSetup.PageWidth then begin left:=W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Left+ W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Width+10; top :=W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Top; end else begin left:=10; top:=W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Top+ W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Height+10.15; end; end; W.ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal, left, top, 200, 100, W.ActiveDocument.Range); end; procedure TForm1.Button2Click(Sender: TObject); //Создание нового документа begin W:=CreateOleObject('Word.Application'); W.Visible:=True; W.Documents.Add; end; procedure TForm1.Button6Click(Sender: TObject); //Выход begin W.Quit; Close; end; procedure TForm1.Button3Click(Sender: TObject); // Загружаем в ListBoxl имена объектов коллекции Shapes //из документа Word. var a: Integer; begin ListBox1.Items.Clear; for a:=1 to W.ActiveDocument.Shapes.Count do ListBox1.Items.Add(W.ActiveDocument.Shapes.Item(a).Name); end; procedure TForm1.ListBox1Click(Sender: TObject); // При активизации строки объекта ListBoxl, используя имя объекта, // выделяем его из коллекции Shapes и записываем ссылку на этот объект //в переменную WordTextBox. Затем в компонент Edit1 записываем текстовое // содержимое этого объекта. begin W.ActiveDocument.Shapes.Item( ListBox1.Items.Strings[ListBox1.ItemIndex]).Select; WordTextBox:=W.ActiveDocument.Shapes.Item( ListBox1.Items.Strings[ListBox1.ItemIndex]); Edit1.Text:=WordTextBox.TextFrame.TextRange.Text; end; procedure TForm1.Edit1Change(Sender: TObject); // При активизации компонента Edit1 типа TEdit записываем введенный //в него текст непосредственно в объект TextBox документа Word. begin WordTextBox.TextFrame.TextRange.Text:=Edit1.Text; end; // Следующие две процедуры регулируют величину отступа левой границы // текста от левой границы надписи. procedure TForm1.SpinButton1DownClick(Sender: TObject); begin WordTextBox.TextFrame.MarginLeft:=WordTextBox.TextFrame.MarginLeft-0.25; end; procedure TForm1.SpinButton1UpClick(Sender: TObject); begin WordTextBox.TextFrame.MarginLeft:=WordTextBox.TextFrame.MarginLeft+0.25; end; // Следующие две процедуры регулируют величину отступа правой границы // текста от правой границы надписи. procedure TForm1.SpinButton2DownClick(Sender: TObject); begin WordTextBox.TextFrame.MarginRight:=WordTextBox.TextFrame.MarginRight-0.25; end; procedure TForm1.SpinButton2UpClick(Sender: TObject); begin WordTextBox.TextFrame.MarginRight:=WordTextBox.TextFrame.MarginRight+0.25; end; // Следующие две процедуры регулируют величину отступа верхней границы // текста от верхней границы надписи. procedure TForm1.SpinButton3DownClick(Sender: TObject); begin WordTextBox.TextFrame.MarginTop:=WordTextBox.TextFrame.MarginTop-0.25; end; procedure TForm1.SpinButton3UpClick(Sender: TObject); begin WordTextBox.TextFrame.MarginTop:=WordTextBox.TextFrame.MarginTop+0.25; end; // Следующие две процедуры регулируют величину отступа нижней границы // текста от нижней границы надписи. procedure TForm1.SpinButton4DownClick(Sender: TObject); begin WordTextBox.TextFrame.MarginBottom:=WordTextBox.TextFrame.MarginBottom-0.25; end; procedure TForm1.SpinButton4UpClick(Sender: TObject); begin WordTextBox.TextFrame.MarginBottom:=WordTextBox.TextFrame.MarginBottom+0.25; end; procedure TForm1.Button4Click(Sender: TObject); //Задание цвета области надписи begin if not ColorDialog1.Execute then exit; WordTextBox.Fill.ForeColor.RGB:=ColorDialog1.Color; end; procedure TForm1.Button5Click(Sender: TObject); //Задание второго цвета begin if not ColorDialog1.Execute then exit; WordTextBox.Fill.BackColor.RGB:=ColorDialog1.Color; end; procedure TForm1.CheckBox1Click(Sender: TObject); //Задание градиента begin if CheckBox1.Checked then WordTextBox.Fill.TwoColorGradient(ComboBox1.ItemIndex+1, ComboBox2.ItemIndex+1) else WordTextBox.Fill.Solid; end; procedure TForm1.ComboBox3Change(Sender: TObject); //Использование предопределенного градиента begin WordTextBox.Fill.PresetGradient(ComboBox1.ItemIndex+1, ComboBox2.ItemIndex+1,ComboBox3.ItemIndex+1) end; procedure TForm1.ComboBox4Change(Sender: TObject); //Использование предопределенной текстуры для заливки надписи begin WordTextBox.Fill.PresetTextured(ComboBox4.ItemIndex+1); end; procedure TForm1.Button7Click(Sender: TObject); //Выбор рисунка в качестве текстуры для надписи begin If OpenPictureDialog1.Execute Then WordTextBox.Fill.UserTextured(OpenPictureDialog1.FileName); end; procedure TForm1.Button8Click(Sender: TObject); //Выбор рисунка в качестве фона для надписи begin If OpenPictureDialog1.Execute Then WordTextBox.Fill.UserPicture(OpenPictureDialog1.FileName); end; end.
Результат работы приложения можно увидеть на рисунке 2:
Рис.2. Результат работы приложения
Еще одним и последним способом задания фона текстовой области надписи является использование узора. Узор определяется собственно рисунком (штриховкой), а также цветом фона и цветом штриховки. Узор определяется константой, выбираемой более чем из сотни возможных. Для выбора узора используется метод Patterned(Pattern: Integer) объекта Fill, где Pattern определяет используемую штриховку. Для задания цветов фона и штриховки в формате RGB предназначены свойства BackColor.RGB и ForeColor.RGB. Рассмотрим следующий исходный код.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComObj, Spin, ExtDlgs; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button6: TButton; ListBox1: TListBox; Label1: TLabel; Button3: TButton; Label2: TLabel; SpinButton1: TSpinButton; SpinButton2: TSpinButton; SpinButton3: TSpinButton; SpinButton4: TSpinButton; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Edit1: TEdit; Label7: TLabel; ColorDialog1: TColorDialog; Button4: TButton; Button5: TButton; CheckBox1: TCheckBox; ComboBox1: TComboBox; ComboBox2: TComboBox; Label8: TLabel; Label9: TLabel; ComboBox3: TComboBox; Label10: TLabel; ComboBox4: TComboBox; Button7: TButton; OpenPictureDialog1: TOpenPictureDialog; Button8: TButton; Label11: TLabel; Button9: TButton; Button10: TButton; Label12: TLabel; ComboBox5: TComboBox; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure ListBox1Click(Sender: TObject); procedure Edit1Change(Sender: TObject); procedure SpinButton1DownClick(Sender: TObject); procedure SpinButton1UpClick(Sender: TObject); procedure SpinButton2DownClick(Sender: TObject); procedure SpinButton2UpClick(Sender: TObject); procedure SpinButton3DownClick(Sender: TObject); procedure SpinButton3UpClick(Sender: TObject); procedure SpinButton4DownClick(Sender: TObject); procedure SpinButton4UpClick(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure ComboBox3Change(Sender: TObject); procedure ComboBox4Change(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure Button10Click(Sender: TObject); procedure ComboBox5Change(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation var W:Variant; WordTextBox:Variant; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); //Создание надписи const msoTextOrientationHorizontal=1; var left,top:Extended; begin left:=10; top:=11; if W.ActiveDocument.Shapes.Count>0 then begin if W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Left+ 2*(W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Width+10)< W.ActiveDocument.PageSetup.PageWidth then begin left:=W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Left+ W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Width+10; top :=W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Top; end else begin left:=10; top:=W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Top+ W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Height+10.15; end; end; W.ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal, left, top, 200, 100, W.ActiveDocument.Range); end; procedure TForm1.Button2Click(Sender: TObject); //Создание нового документа begin W:=CreateOleObject('Word.Application'); W.Visible:=True; W.Documents.Add; end; procedure TForm1.Button6Click(Sender: TObject); //Выход begin W.Quit; Close; end; procedure TForm1.Button3Click(Sender: TObject); // Загружаем в ListBoxl имена объектов коллекции Shapes //из документа Word. var a: Integer; begin ListBox1.Items.Clear; for a:=1 to W.ActiveDocument.Shapes.Count do ListBox1.Items.Add(W.ActiveDocument.Shapes.Item(a).Name); end; procedure TForm1.ListBox1Click(Sender: TObject); // При активизации строки объекта ListBoxl, используя имя объекта, // выделяем его из коллекции Shapes и записываем ссылку на этот объект // в переменную WordTextBox. Затем в компонент Edit1 записываем текстовое // содержимое этого объекта. begin W.ActiveDocument.Shapes.Item( ListBox1.Items.Strings[ListBox1.ItemIndex]).Select; WordTextBox:=W.ActiveDocument.Shapes.Item( ListBox1.Items.Strings[ListBox1.ItemIndex]); Edit1.Text:=WordTextBox.TextFrame.TextRange.Text; end; procedure TForm1.Edit1Change(Sender: TObject); // При активизации компонента Edit1 типа TEdit записываем введенный //в него текст непосредственно в объект TextBox документа Word. begin WordTextBox.TextFrame.TextRange.Text:=Edit1.Text; end; // Следующие две процедуры регулируют величину отступа левой границы // текста от левой границы надписи. procedure TForm1.SpinButton1DownClick(Sender: TObject); begin WordTextBox.TextFrame.MarginLeft:=WordTextBox.TextFrame.MarginLeft-0.25; end; procedure TForm1.SpinButton1UpClick(Sender: TObject); begin WordTextBox.TextFrame.MarginLeft:=WordTextBox.TextFrame.MarginLeft+0.25; end; // Следующие две процедуры регулируют величину отступа правой границы // текста от правой границы надписи. procedure TForm1.SpinButton2DownClick(Sender: TObject); begin WordTextBox.TextFrame.MarginRight:=WordTextBox.TextFrame.MarginRight-0.25; end; procedure TForm1.SpinButton2UpClick(Sender: TObject); begin WordTextBox.TextFrame.MarginRight:=WordTextBox.TextFrame.MarginRight+0.25; end; // Следующие две процедуры регулируют величину отступа верхней границы // текста от верхней границы надписи. procedure TForm1.SpinButton3DownClick(Sender: TObject); begin WordTextBox.TextFrame.MarginTop:=WordTextBox.TextFrame.MarginTop-0.25; end; procedure TForm1.SpinButton3UpClick(Sender: TObject); begin WordTextBox.TextFrame.MarginTop:=WordTextBox.TextFrame.MarginTop+0.25; end; // Следующие две процедуры регулируют величину отступа нижней границы // текста от нижней границы надписи. procedure TForm1.SpinButton4DownClick(Sender: TObject); begin WordTextBox.TextFrame.MarginBottom:=WordTextBox.TextFrame.MarginBottom-0.25; end; procedure TForm1.SpinButton4UpClick(Sender: TObject); begin WordTextBox.TextFrame.MarginBottom:=WordTextBox.TextFrame.MarginBottom+0.25; end; procedure TForm1.Button4Click(Sender: TObject); //Задание цвета области надписи begin if not ColorDialog1.Execute then exit; WordTextBox.Fill.ForeColor.RGB:=ColorDialog1.Color; end; procedure TForm1.Button5Click(Sender: TObject); //Задание второго цвета begin if not ColorDialog1.Execute then exit; WordTextBox.Fill.BackColor.RGB:=ColorDialog1.Color; end; procedure TForm1.CheckBox1Click(Sender: TObject); //Задание градиента begin if CheckBox1.Checked then WordTextBox.Fill.TwoColorGradient(ComboBox1.ItemIndex+1, ComboBox2.ItemIndex+1) else WordTextBox.Fill.Solid; end; procedure TForm1.ComboBox3Change(Sender: TObject); //Использование предопределенного градиента begin WordTextBox.Fill.PresetGradient(ComboBox1.ItemIndex+1, ComboBox2.ItemIndex+1,ComboBox3.ItemIndex+1) end; procedure TForm1.ComboBox4Change(Sender: TObject); //Использование предопределенной текстуры для заливки надписи begin WordTextBox.Fill.PresetTextured(ComboBox4.ItemIndex+1); end; procedure TForm1.Button7Click(Sender: TObject); //Выбор рисунка в качестве текстуры для надписи begin If OpenPictureDialog1.Execute Then WordTextBox.Fill.UserTextured(OpenPictureDialog1.FileName); end; procedure TForm1.Button8Click(Sender: TObject); //Выбор рисунка в качестве фона для надписи begin If OpenPictureDialog1.Execute Then WordTextBox.Fill.UserPicture(OpenPictureDialog1.FileName); end; procedure TForm1.Button9Click(Sender: TObject); //Выбор цвета штриховки begin if ColorDialog1.Execute then WordTextBox.Fill.ForeColor.RGB:=ColorDialog1.Color; end; procedure TForm1.Button10Click(Sender: TObject); //Выбор цвета фона begin if ColorDialog1.Execute then WordTextBox.Fill.BackColor.RGB:=ColorDialog1.Color; end; procedure TForm1.ComboBox5Change(Sender: TObject); //Выбор вида штриховки begin WordTextBox.Fill.Patterned(ComboBox5.ItemIndex+1); end; end.
Процедура TForm1.Button9Click() определяет цвет штриховки, а следующпя - цвет фона. Цвета выбираются с помощью диалога ColorDialog1, возвращающего значение цвета как комбинацию значений в формате RGB. Последняя процедура определяет вид штриховки с помощью элемента управления TComboBox (комбинированный список). Внешний вид формы с элементами управления и результат выполнения программы представлены на рисунке 3.
Рис.3. Результат работы приложения
В заключение приведем перечень видов штриховок.
Мнемоническое обозначение | Константа |
---|---|
msoPattern5Percent | 1 |
msoPattern10Percent | 2 |
msoPattern20Percent | 3 |
msoPattern25Percent | 4 |
msoPattern30Percent | 5 |
msoPattern40Percent | 6 |
msoPattern50Percent | 7 |
msoPattern60Percent | 8 |
msoPattern70Percent | 9 |
msoPattern75Percent | 10 |
msoPattern80Percent | 11 |
msoPattern90Percent | 12 |
msoPatternDarkHorizontal | 13 |
msoPatternDarkVertical | 14 |
msoPatternDarkDownwardDiagonal | 15 |
msoPatternDarkUpwardDiagonal | 16 |
msoPatternSmallCheckerBoard | 17 |
msoPatternTrellis | 18 |
msoPatternLightHorizontal | 19 |
msoPatternLightVertical | 20 |
msoPatternLightDownwardDiagonal | 21 |
msoPatternLightUpwardDiagonal | 22 |
msoPatternSmallGrid | 23 |
msoPatternDottedDiamond | 24 |
msoPatternWideDownwardDiagonal | 25 |
msoPatternWideUpwardDiagonal | 26 |
msoPatternDashedUpwardDiagonal | 27 |
msoPatternDashedDownwardDiagonal | 28 |
msoPatternNarrowVertical | 29 |
msoPatternNarrowHorizontal | 30 |
msoPatternDashedVertical | 31 |
msoPatternDashedHorizontal | 32 |
msoPatternLargeConfetti | 33 |
msoPatternLargeGrid | 34 |
msoPatternHorizontalBrick | 35 |
msoPatternLargeCheckerBoard | 36 |
msoPatternSmallConfetti | 37 |
msoPatternZigZag | 38 |
msoPatternSolidDiamond | 39 |
msoPatternDiagonalBrick | 40 |
msoPatternOutlinedDiamond | 41 |
msoPatternPlaid | 42 |
msoPatternSphere | 43 |
msoPatternWeave | 44 |
msoPatternDottedGrid | 45 |
msoPatternDivot | 46 |
msoPatternShingle | 47 |
msoPatternWave | 48 |
На следующем шаге мы рассмотрим способы изменения границы надписи.