Шаг 60.
Автоматизация Microsoft Word. Создание таблиц и работа с ними. Создание, выделение и удаление таблиц в документе

    На этом шаге мы рассмотрим простейшие операции с таблицами.

    Документ Word может содержать таблицы, которые как объекты объединены в коллекцию Tables. Как вытекает из вышесказанного, обычно эта коллекция принадлежит объекту "документ". Рассмотрим ее основные свойства и методы.

    Свойство Count: integer содержит информацию о количестве таблиц в коллекции. Если в документе нет ни одной таблицы, то Count содержит ноль.

    Метод Add добавляет новую таблицу в коллекцию. При создании таблицы определяются область, где будет создана таблица, и ее основные параметры - количество столбцов и строк. Хотя коллекция таблиц и принадлежит документу, тем не менее сама таблица может быть создана на любом объекте или месте документа, на котором это возможно. Объект Item(tab) - элемент коллекции и представляет собой таблицу с порядковым номером tab данной коллекции.

    Для демонстрации свойств и методов коллекции Tables создадим новый документ и в нем создадим таблицу. Используем метод Add. Его спецификация в VB имеет следующий вид:

    expression.Add(Range, NumRows, NumColumns), 

где Range - область, на которой создается таблица, NumRows и NumColumns - количество строк и столбцов создаваемой таблицы.

    Рассмотрим использование метода Add в среде Delphi на примере приведенного ниже фрагмента программного текста.

procedure TForm1.Button1Click(Sender: TObject);
//Создание таблицы
begin
  W.ActiveDocument.Tables.Add(Range:=W.ActiveDocument.Range, 
                          NumRows:=2, NumColumns:=3);
end;
Текст этого приложения можно взять здесь (6,0 Кб).

    Данная процедура создаст таблицу непосредственно в документе. Первый аргумент метода определяет область, где будет создана таблица, - весь документ. Следующие аргументы определяют количество строк и столбцов. Если попробовать вторично выполнить эту процедуру, то будет сгенерирована ошибка.

    Для корректного создания следующей таблицы необходимо в качестве первого аргумента метода Add указать область, которая свободна и не содержит таблицу. Для задания этой области можно использовать метод Range, который рассматривался ранее, или, например, свойство End объекта Range.

    Рассмотрим следующую процедуру, которая создает новую таблицу в докменте. В отличие от предыдущей, для создания новой таблицы она использует область в конце документа.

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;
Текст этого приложения можно взять здесь (6,0 Кб).

    Результат работы приложения изображен на рисунке 1:


Рис.1. Результат работы приложения

    Данная процедура использует область в конце документа, в которой и создается новая таблица. За вновь созданной таблицей вставляется пробел, который разделяет таблицы между собой. Если разделения нет, то вновь создаваемые таблицы будут добавляться как строки к существующим таблицам.

    Когда создано несколько таблиц, мы можем определить их количество. Это значение содержится в свойстве Count коллекции Tables. Приведенная ниже процедура выводит список таблиц в компонент ListBox.

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;
Текст этого приложения можно взять здесь (8,0 Кб).

    В результате выполнения этой процедуры компонент ListBox1 будет содержать список таблиц (рисунок 2).


Рис.2. Результат работы приложения

    Используя объект Item коллекции Tables и порядковый номер таблицы, можно выделить любую таблицу из всего списка таблиц документа для дальнейших манипуляций. Для выделения таблицы, которая содержится в коллекции, используется метод Select объекта Item. Этот объект содержит все методы, коллекции и объекты, присущие таблице как объекту.

    Следующий фрагмент программы демонстрирует использование метода Select и метода Delete, удаляющего выбранную таблицу.

procedure TForm1.Button5Click(Sender: TObject);
//Удаление выбранной таблицы
begin
  W.ActiveDocument.Tables.Item(ListBox1.ItemIndex+1).Select;
  W.ActiveDocument.Tables.Item(ListBox1.ItemIndex+1).Delete;
end;
Текст этого приложения можно взять здесь (7,0 Кб).

    Результат работы приложения изображен на рисунке 3:


Рис.3. Результат работы приложения

    На следующем шаге мы рассмотрим форматы таблиц.




Предыдущий шаг Содержание Следующий шаг