Работа с объектом WordBasic. Создание и редактирование таблиц в документе Word

   
На этом шаге мы рассмотрим создание и редактирование таблиц средствами WordBasic.

   
Таблицы в документах Word представляют собой объекты, являющиеся продолжением основного текста в документе.
Например, если мы создаем таблицу, то она создается в месте нахождения курсора и, таким образом, разрывает текст.
То есть если требуется создать таблицу в определенном месте документа, то необходимо предварительно установить в
это место курсор.

   
Создадим таблицу в нашем документе, для этого используем функцию TableInsertTable(NumColumns, NumRows),
где NumColumns и NumRows - количества столбцов и строк в создаваемой таблице. Есть и другие
синтаксисы данной функции (см. справку по WordBasic).


Рис.1. Фрагмент справки по WordBasic, посвященный созданию таблиц

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

procedure TForm1.Button3Click(Sender: TObject);
//Вставка таблицы в документ
var
  NumColumns, NumRows: Integer;
begin
  //  Создаем таблицу размером 2x5
  NumColumns:=2;
  NumRows:=5;
  TB:=WB.TableInsertTable(NumColumns,NumRows);
  //  Отображаем линии таблицы
  WB.TableGridlines(true);
  //  Переходим в  конец документа
  WB.EndOfDocument;
  //  Вставляем пробел
  WB.insert(' ');
  // Переходим в конец документа
  WB.EndOfDocument;
end;

   
Данная процедура включает в себя несколько операторов. Первые два пропускаем. Следующий оператор создает
таблицу. Следующий за ним оператор представляет собой вызов процедуры, устанавливающей свойства линий таблицы.
Если единственный аргумент процедуры TableGridlines установлен в значение True, то линии границ
таблицы отображаются. Чтобы скрыть линии границ, вызовем метод WB.TableGridlines(False). Далее
переходим в конец документа и вставляем символ пробела, чтобы следующая вставляемая таблица не слилась с этой таблицей.

   
Если между существующей таблицей и вновь создаваемой, следующей за первой, нет ни одного символа, то вторая
таблица просто сольется с первой. В этом случае создание новой таблицы будет иметь эффект добавления новых строк
к существующей таблице. Добавить или вставить новую строку в таблицу можно другим способом - с помощью процедуры
TableInsertRow. Если вызвать эту процедуру без аргумента, то будет вставлена одна строка; если при вызове в
качестве аргумента задать целое число, то оно определит количество вставляемых строк. Эта процедура выполняется,
если курсор находится в области таблицы, иначе генерируется ошибка.

   
Рассмотрим следующую процедуру.

procedure TForm1.Button8Click(Sender: TObject);
//Добавление строки в таблицу
begin
  WB.TableInsertRow; // Добавляем одну строку
  WB.TableInsertRow(3); // Добавляем три строки
end;

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


Рис.2. Добавление таблиц в документ и вставка строк в последнюю таблицу

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

   
Используем для этого процедуры NextCell и PrevCell, позволяющие двигаться последовательно от первой
ячейки к последней или наоборот. Дополнительно к перемещению курсора от первой к последней ячейке процедура
NextCell добавляет новую строку в конец таблицы, если до этого курсор находился в последней ячейке таблицы.

   
Рассмотрим применение этих процедур в Delphi на следующем примере программного кода.

procedure TForm1.Button4Click(Sender: TObject);
//Перемещение курсора к следующей ячейке
begin
  WB.NextCell;
end;

procedure TForm1.Button5Click(Sender: TObject);
//Перемещение курсора к предыдущей ячейке
begin
  WB.PrevCell;
end;

   
Организовать перемещение курсора в таблице можно и с помощью другой пары процедур - NextObject и PrevObject.
В отличие от уже рассмотренных процедур, они позволяют перемещаться и между таблицами, не изменяя при этом саму структуру
таблицы. Пример их использования в приложениях Delphi:

procedure TForm1.Button6Click(Sender: TObject);
//Перемещение к следующему объекту
begin
  WB.NextObject;
end;

procedure TForm1.Button7Click(Sender: TObject);
//Перемещение к предыдущему объекту
begin
  WB.PrevObject;
end;

   
Для перемещения непосредственно в конец или начало строки или столбца (и в начало или конец таблицы) применяют
следующие четыре команды WordBasic:

  • StartOfRow - перемещаемся в начальную ячейку строки;
  • EndOfRow - перемещаемся в последнюю ячейку строки;
  • StartOfColumn - перемещаемся в верхнюю ячейку столбца;
  • EndOfColumn - перемещаемся в нижнюю ячейку столбца.

   
Комбинируя представленные процедуры, можно перемещаться в начало или конец таблицы, а также перемещаться
между таблицами в документе.

   
Приведем текст приложения, иллюстрирующий использование некоторых из перечисленных методов.

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;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
var
  WB: Variant;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
//Создание объекта WordBasic
begin
 WB:=CreateOleObject('Word.Basic');
end;

procedure TForm1.Button2Click(Sender: TObject);
//Показать окно Word
begin
 WB.AppShow;
 WB.FileNewDefault;
end;

procedure TForm1.Button3Click(Sender: TObject);
//Вставка таблицы в документ
var
  NumColumns, NumRows: Integer;
begin
  //  Создаем таблицу размером 2x5
  NumColumns:=2;
  NumRows:=5;
  TB:=WB.TableInsertTable(NumColumns,NumRows);
  //  Отображаем линии таблицы
  WB.TableGridlines(true);
  //  Переходим в  конец документа
  WB.EndOfDocument;
  //  Вставляем пробел
  WB.insert(' ');
  // Переходим в конец документа
  WB.EndOfDocument;
end;

procedure TForm1.Button4Click(Sender: TObject);
//Перемещение курсора к следующей ячейке
begin
  WB.NextCell;
end;

procedure TForm1.Button5Click(Sender: TObject);
//Перемещение курсора к предыдущей ячейке
begin
  WB.PrevCell;
end;

procedure TForm1.Button6Click(Sender: TObject);
//Перемещение к следующему объекту
begin
  WB.NextObject;
end;

procedure TForm1.Button7Click(Sender: TObject);
//Перемещение к предыдущему объекту
begin
  WB.PrevObject;
end;

procedure TForm1.Button8Click(Sender: TObject);
//Добавление строки в таблицу
begin
  WB.TableInsertRow; // Добавляем одну строку
  WB.TableInsertRow(3); // Добавляем три строки
end;

end.

Текст этого приложения можно взять здесь (6,3 Кб).

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

   
На следующем шаге мы рассмотрим работу с рисунками и другими внешними объектами.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий