На этом шаге мы рассмотрим способы заливки ячеек и изменение их границ.
Таблица состоит из ячеек, которые объединены в строки и столбцы. Поэтому, как у строк и столбцов, так и у отдельных ячеек есть аналогичные между собой свойства, отличающиеся только областью применения этих свойств. Если мы, например, изменяем толщину границ для ячейки, то это изменение приведет к изменению отображения данной ячейки. Если изменить параметры строки (столбца), то это может привести к изменению всех границ всех ячеек строки (столбца) или только границы строки (столбца). Заливка определяется для всех ячеек выбранной строки (столбца). Рассмотрим это на следующем примере, в котором будем изменять толщину линий столбца, их цвет и заливку.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComObj; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; ListBox1: TListBox; Button4: TButton; Button5: TButton; Label1: TLabel; Label2: TLabel; Edit1: TEdit; Label3: TLabel; Edit2: TEdit; Label4: TLabel; Edit3: TEdit; Label5: TLabel; Edit4: TEdit; Label6: TLabel; Label7: TLabel; Label8: TLabel; ComboBox1: TComboBox; ComboBox2: TComboBox; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; ComboBox3: TComboBox; ComboBox4: TComboBox; ComboBox5: TComboBox; Button6: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure ListBox1Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Edit3Change(Sender: TObject); procedure Edit4Change(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure ComboBox2Change(Sender: TObject); procedure ComboBox3Change(Sender: TObject); procedure ComboBox4Change(Sender: TObject); procedure ComboBox5Change(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation var W:Variant; table: Variant; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); //Создание таблицы begin W.ActiveDocument.Tables.Add(Range:=W.ActiveDocument.Range, NumRows:=2, NumColumns:=3); end; procedure TForm1.Button2Click(Sender: TObject); begin W:=CreateOleObject('Word.Application'); W.Visible:=True; W.Documents.Add; end; procedure TForm1.Button3Click(Sender: TObject); //Таблица в конце документа var MyRange:Variant; begin W.ActiveDocument.Range.InsertAfter(' '); MyRange:=W.ActiveDocument.Range(W.ActiveDocument.Range.End-1, W.ActiveDocument.Range.End-1); W.ActiveDocument.Tables.Add(Range:=MyRange, NumRows:=2, NumColumns:=3); end; procedure TForm1.Button4Click(Sender: TObject); //Количество таблиц var a: integer; begin ListBox1.Items.Clear; for a:=1 to W.ActiveDocument.Tables.Count do begin ListBox1.Items.Add('Таблица - '+IntToStr(a)); end; end; procedure TForm1.Button5Click(Sender: TObject); //Удаление выбранной таблицы begin W.ActiveDocument.Tables.Item(ListBox1.ItemIndex+1).Select; W.ActiveDocument.Tables.Item(ListBox1.ItemIndex+1).Delete; end; procedure TForm1.ListBox1Click(Sender: TObject); //Запомнить параметры выбранной таблицы begin table:=W.ActiveDocument.Tables.Item(ListBox1.ItemIndex+1); Edit1.Text:=IntToStr(table.Columns.Count); Edit2.Text:=IntToStr(table.Columns.Width); end; procedure TForm1.Edit3Change(Sender: TObject); //Выбор столбца begin Edit4.Text:=IntToStr(table.Columns.Item(StrToInt(Edit3.Text)).Width); end; procedure TForm1.Edit4Change(Sender: TObject); //Установка ширины выбранного столбца begin table.Columns.Item(StrToInt(Edit3.Text)).Width:=StrToInt(Edit4.Text); end; procedure TForm1.Button6Click(Sender: TObject); begin Close; end; procedure TForm1.ComboBox1Change(Sender: TObject); //Выбор толщины рамки const wdLineWidth025pt=2; wdLineWidth450pt=36; begin case ComboBox1.ItemIndex of 0:table.Columns.Item(StrToInt(Edit3.Text)).Borders.OutsideLineWidth:= wdLineWidth025pt; 1:table.Columns.Item(StrToInt(Edit3.Text)).Borders.OutsideLineWidth:= wdLineWidth450pt; end; end; procedure TForm1.ComboBox2Change(Sender: TObject); //Цвет рамки begin table.Columns.Item(StrToInt(Edit3.Text)).Borders.OutsideColorIndex:= ComboBox2.ItemIndex; end; procedure TForm1.ComboBox3Change(Sender: TObject); //Текстура const wdTextureNone=0; wdTextureSolid=1000; wdTexture30Percent=300; begin case ComboBox3.ItemIndex of 0: table.Columns.Item(StrToInt(Edit3.Text)).Shading.Texture:= wdTextureNone; 1: table.Columns.Item(StrToInt(Edit3.Text)).Shading.Texture:= wdTextureSolid; 2: table.Columns.Item(StrToInt(Edit3.Text)).Shading.Texture:= wdTexture30Percent; end; end; procedure TForm1.ComboBox4Change(Sender: TObject); //Цвет фона begin table.Columns.Item(StrToInt(Edit3.Text)).Shading. BackgroundPatternColorIndex:=ComboBox4.ItemIndex; end; procedure TForm1.ComboBox5Change(Sender: TObject); //Цвет рисунка begin table.Columns.Item(StrToInt(Edit3.Text)).Shading. ForegroundPatternColorIndex:=ComboBox5.ItemIndex; end; end.
Результаты применения описанных процедур к выбранной таблице и внешний вид формы представлены на рисунке 1.
Рис.1. Результат работы приложения
При создании этого приложения мы использовали некоторые константы, которые определены в библиотеке Microsoft Word. Чтобы узнать значения этих констант, а также свойства и методы объектов Microsoft Word можно поступить следующим образом:
Рис.2. Окно Object Browser
В заключение приведем перечень цветов, которые мы использовали при создании приложения.
Мнемоническое обозначение | Константа |
---|---|
wdAuto | 0 |
wdBlack | 1 |
wdBlue | 2 |
wdTurquoise | 3 |
wdBringhtGreen | 4 |
wdPink | 5 |
wdRed | 6 |
wdYellow | 7 |
wdWhite | 8 |
wdDarkBlue | 9 |
wdTeal | 10 |
wdGreen | 11 |
wdViolet | 12 |
wdDarkRed | 13 |
wdDarkYellow | 14 |
wdGray50 | 15 |
wdGray25 | 16 |
На следующем шаге мы продолжим изучение этого вопроса.