На этом шаге мы рассмотрим задание стиля линии границы.
Рассмотрим еще одно важное свойство, применяемое как к отдельным ячейкам, так и ко всем ячейкам строки, столбца или таблицы. Это стиль линии границы. Особенностью его является то, что стиль линии задается не для всех линий границы ячейки, а индивидуально для каждой. Выбор определенной линии границы осуществляется выбором элемента коллекции Borders. Количество элементов коллекции определяется числом линий, ограничивающих ячейки или пересекающих ячейки или группу выделенных ячеек. Приведем текст программы, изменяющий стиль одной выбранной линии границы ячейки.
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; Button6: TButton; ComboBox3: TComboBox; Label9: TLabel; ComboBox4: TComboBox; Label10: TLabel; 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 ComboBox1Change(Sender: TObject); procedure ComboBox2Change(Sender: TObject); procedure ComboBox3Change(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.Button6Click(Sender: TObject); begin Close; end; procedure TForm1.ComboBox1Change(Sender: TObject); //Выбор толщины рамки const wdLineWidth025pt=2; wdLineWidth450pt=36; var i:Integer; begin i:=StrToInt(Edit3.Text); case ComboBox1.ItemIndex of 0:table.Columns.Item(i).Borders.OutsideLineWidth:=wdLineWidth025pt; 1:table.Columns.Item(i).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 wdBorderTop=-1; wdBorderLeft=-2; wdBorderBottom=-3; wdBorderRight=-4; var Border:variant; stroka,stolbec:Integer; begin stroka:=StrToInt(Edit4.Text); stolbec:=StrToInt(Edit3.Text); case ComboBox3.ItemIndex of 0:Border:=table.Cell(stroka,stolbec).Borders.Item(wdBorderTop); 1:Border:=table.Cell(stroka,stolbec).Borders.Item(wdBorderLeft); 2:Border:=table.Cell(stroka,stolbec).Borders.Item(wdBorderBottom); 3:Border:=table.Cell(stroka,stolbec).Borders.Item(wdBorderRight); end; Border.LineStyle:=ComboBox4.ItemIndex; end; end.
Результат работы приложения можно увидеть на рисунке 1:
Рис.1. Результат работы приложения
На следующем шаге мы начнем знакомиться с добавлением и удалением строк и столбцов таблицы.