Документ Word может содержать таблицы, которые как объекты объедине-
ны в коллекцию Tables. Как вытекает из вышесказанного, обычно эта кол-
лекция принадлежит объекту "документ". Рассмотрим ее основные свойства
и методы.
Свойство Count:integer содержит информацию о количестве таблиц в кол-
лекции. Если в документе нет ни одной таблицы, то Count содержит ноль.
Метод Add добавляет новую таблицу в коллекцию. При создании таблицы
определяются область, где будет создана таблица, и ее основные парамет-
ры — количество столбцов и строк. Хотя коллекция таблиц и принадлежит
документу, тем не менее сама таблица может быть создана на любом объек-
те или месте документа, на котором это возможно. Объект Item(tab) — эле-
мент коллекции и представляет собой таблицу с порядковым номером tab
данной коллекции.
Для демонстрации свойств и методов коллекции Tables создадим новый
документ и в нем создадим таблицу. Используем метод Add. Его специ-
фикация в VB имеет следующий вид: expression.Add(Range, NumRows,
NumColumns), где Range — область, на которой создается таблица, NumRows
и NumColumns — количество строк и столбцов создаваемой таблицы.
Рассмотрим использование метода Add в среде Delphi на примере приве-
денного ниже фрагмента программного текста.
Создание таблицы
procedure TForml.Button2Click(Sender: TObject);
begin
W.ActiveDocument.Tables.Add(Range:=W.ActiveDocument.Range, NumRows:=2,
NumColumns:=3);
end;
Данная процедура создаст таблицу непосредственно в документе. Первый
аргумент метода определяет область, где будет создана таблица, — весь до-
кумент. Следующие аргументы определяют количество строк и столбцов.
Если попробовать вторично выполнить эту процедуру, то будет сгенериро-
вана ошибка (рис. 7.1).
Рис. 7.1. Ошибка при попытке создать таблицу в той области документа,
где она уже есть
Для корректного создания следующей таблицы необходимо в качестве пер-
вого аргумента метода Add указать область, которая свободна и не содержит
таблицу. Для задания этой области можно использовать метод Range, кото-
рый рассматривался ранее, или, например, свойство End объекта Range.
Рассмотрим следующую процедуру, которая создает новую таблицу в доку-
менте. В отличие от предыдущей, для создания новой таблицы она исполь-
зует область в конце документа.
Создание таблицы в конце документа
procedure TForml.Button3Click(Sender: TObject)
var MyRange:variant;
begin
MyRange:=W.ActiveDocument.Range(W.ActiveDocument.Range.End-1,
W.ActiveDocument.Range.End-1);
W.ActiveDocument.Tables.Add(Range:=MyRange, NumRows:=2, NumColumns:=3);
W.ActiveDocument.Range.InsertAfter(' ' ) ;
end;
Данная процедура использует область в конце документа, в которой и соз-
дается новая таблица. За вновь созданной таблицей вставляется пробел, ко-
торый разделяет таблицы между собой. Если разделения нет, то вновь соз-
даваемые таблицы будут добавляться как строки к существующим таблицам.
Когда создано несколько таблиц, мы можем определить их количество. Это
значение содержится в свойстве Count коллекции Tables. Приведенная ниже
процедура выводит список таблиц в компонент ListBox.
Получение списка таблиц в документе
procedure TOKBottomDlg.FormShow(Sender: TObject);
var a_:integer;
begin
ListBoxl.Items.Clear;
for a_:=l to Forml.W.ActiveDocument.Tables.Count do begin
ListBoxl.Items.Add('Таблица - '+inttostr(a_));
end;
end;
В результате выполнения этой процедуры компонент ListBoxl будет содер-
жать список таблиц (рис. 7.2).
Используя объект Item коллекции Tables и порядковый номер таблицы,
можно выделить любую таблицу из всего списка таблиц документа для
дальнейших манипуляций. Для выделения таблицы, которая содержится в
коллекции, используется метод Select объекта Item. Этот объект содержит
все методы, коллекции и объекты, присущие таблице как объекту.
Следующий фрагмент программы демонстрирует использование метода
Select и метода Delete, удаляющего выбранную таблицу.
Выделение и удаление таблицы коллекции Tables
procedure TOKBottomDlg.ButtonlClick(Sender: TObject);
begin
Forml.W.ActiveDocument.Tables.Item(ListBoxl.itemindex+1)..Select;
end;
procedure TOKBottomDlg.Button2Click(Sender: TObject);
begin
Forml.W.ActiveDocument.Tables.Item(ListBoxl.itemindex+1).Delete;
end;
Для демонстрации этих методов предназначено текстовое приложение,
представленное на сопроводительном диске книги. Процесс выполнения
данных процедур может выглядеть примерно так, как показано на рис. 7.2.
Рис. 7.2. Работа со списком таблиц в документе, выделение и удаление |