На этом шаге мы рассмотрим способы расположения текста внутри ячейки таблицы.
Когда таблица создана, можно заполнять ее текстом. Записывать информацию непосредственно в ячейку таблицы позволяет объект Cell, который и представляет собой ячейку. Ссылку на конкретную ячейку получают, обращаясь к объекту Cell с параметрами (номер строки и столбца). Например, если выполнить оператор mycell:=table.Cell(l, 2);, то переменная mycell типа variant будет содержать ссылку на ячейку в первой строке и во втором столбце таблицы. В состав объекта "ячейка" входит объект Range. Нам известно, что Range может содержать текст. Используя свойства ячейки и объекта Range, запишем текст в конкретную ячейку и зададим для него шрифт и расположение.
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; Button6: TButton; Button8: TButton; Label6: TLabel; Memo1: TMemo; Label7: TLabel; ComboBox1: TComboBox; Label8: TLabel; ComboBox2: TComboBox; 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 Button8Click(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure ComboBox2Change(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.Button8Click(Sender: TObject); //Процедура добавления текста в выбранную ячейку begin table.Cell(StrToInt(Edit4.Text), StrToInt(Edit3.Text)).Range.Text:=Memo1.text; end; procedure TForm1.ComboBox1Change(Sender: TObject); //Вертикальное выравнивание begin table.Cell(StrToInt(Edit4.Text),StrToInt(Edit3.Text)). VerticalAlignment:=ComboBox1.ItemIndex; end; procedure TForm1.ComboBox2Change(Sender: TObject); //Горизонтальное выравнивание begin table.Cell(StrToInt(Edit4.Text), StrToInt(Edit3.Text)). Range.ParagraphFormat.Alignment:=ComboBox2.ItemIndex; end; end.
Результат работы приложения можно увидеть на рисунке 1:
Рис.1. Результат работы приложения
На следующем шаге мы рассмотрим способы задания шрифтов.