Drkb online - як створити таблицю в word - е

Function CreateTable (NumRows, NumColumns: integer;
var index: integer): boolean;
var sel_: variant;
begin
CreateTable: = true;
try
sel _: = W.selection;
W.ActiveDocument.Tables.Add (Range: = sel_.Range, NumRows: = NumRows,
NumColumns: = NumColumns);
index: = W.ActiveDocument. Tables.Count;
except
CreateTable: = false;
end;
End;

Перший оператор визначає область виділення або положення курсора, другий оператор створює таблицю і третій повертає кількість таблиць в документі або порядковий номер новоствореної таблиці, який буде використовуватися іншими функціями для доступу до цієї таблиці.
Наша функція створить таблицю довільного розміру, але для коректного представлення даних необхідно задати певні розміри рядків і стовпців. Щоб задати розмір таблиці або рядки (стовпці), потрібно отримати доступ до таких властивостей таблиці, як колекції Columns і Rows (список стовпців і рядків), через які зможемо отримати доступ до конкретної рядку або (і) колонки, до осередків і до параметрів осередку (рядки, стовпці). Для цього використовуємо об'єкт ActiveDocument.Tables.Item (table), де table - номер таблиці в документі. Створимо функцію, яка буде задавати ширину і висоту всіх елементів таблиці.

Function SetSizeTable (Table: integer; RowsHeight,
ColumnsWidth: real): boolean;
begin
SetSizeTable: = true;
try
W.ActiveDocument.Tables.Item (Table) .Columns.Width: = ColumnsWidth;
W.ActiveDocument.Tables.Item (Table). Rows.Height: = RowsHeight;
except
SetSizeTable: = false;
end;
End;

Аналогічно ми можемо задавати висоту будь-який рядка або (і) ширину будь-якого стовпця на вибір. Для доступу до розмірів осередку використовуємо також колекції Rows, Columns об'єкта Table. Щоб скористатися цими можливостями з нашого застосування, створимо такі функції.

Function SetHeightRowTable (Table, Row: integer;
RowHeight: real): boolean;
begin
SetHeightRowTable: = true;
try
W.ActiveDocument.Tables.Item (Table) .Rows.item (Row) .Height: = RowHeight;
except
SetHeightRowTable: = false;
end;
End;
Function SetWidthColumnTable (Table, Column: integer;
ColumnWidth: real): boolean;
begin
SetWidthColumnTable: = true;
try
W.ActiveDocument.Tables.Item (Table) .Columns.
Item (Column) .Width: = ColumnWidth;
except
SetWidthColumnTable: = false;
end;
End;

Можливо, нам доведеться не тільки задавати розміри таблиці, але і визначати (зчитувати) розміри елементів таблиці. Для цього використовуємо ті ж колекції, об'єкти і властивості таблиці, що і в функції SetSizeTable, але трохи змінимо внутрішні оператори таким чином, що в повертаються змінні RowsHeight і ColumnsWidth будуть записуватися значення розмірів рядків і стовпців таблиці.

Function GetSizeTable (Table: integer; var RowsHeight,
ColumnsWidth: real): boolean;
begin
GetSizeTable: = true;
try
ColumnsWidth: = W.ActiveDocument. Tables.Item (Table) .Columns.Width;
RowsHeight: = W.ActiveDocument. Tables.Item (Table) .Rows.Height;
except
GetSizeTable: = false;
end;
End;

Також можна вважати і розміри рядка або стовпця на вибір, для цього досить використовувати колекції Rows, Columns об'єкта Table (Tables.Item (Table)).
Наступним етапом формування табличного документа визначимо запис текстової інформації в вибрану комірку таблиці. Одним із способів такого запису є доступ до поля Text осередки, але і в цьому випадку текст записується не безпосередньо, а в об'єкт Range елементи таблиці. Функція SetTextToTable виконує таку запис.

Function SetTextToTable (Table: integer; Row, Column: integer;
text: string): boolean;
begin
SetTextToTable: = true;
try
W.ActiveDocument.Tables.Item (Table) .Columns.Item (Column).
Cells.Item (Row) .Range.Text: = text;
except
SetTextToTable: = false;
end;
End;

І останнє заходів, яких треба зробити над таблицею для створення простого табличного документа, це об'єднання осередків. Для цього скористаємося методом Merge об'єкта Cell (осередок). Перший оператор функції об'єднання осередків повертає покажчик на об'єкт - кінцеву осередок (Cel). Другий оператор об'єднує початкову осередок Row1, Column1 з кінцевої осередком, табличні координати якої вже задані і рівні Row2, Column2.

Function SetMergeCellsTable (Table: integer; Row1,
Column1, Row2, Column2: integer): boolean;
var Cel: variant;
begin
SetMergeCellsTable: = true;
try
Cel: = W.ActiveDocument.Tables.I tem (Table) .Cell (Row2, Column2);
W.ActiveDocument.Tables.Item (Table). Cell (Row1, Column1) .Merge (Cel);
except
SetMergeCellsTable: = false;
end;
End;

Переходимо до заключної стадії - створення документа.
Для цього всі визначені в цій частині статті функції об'єднаємо з раніше створеними і перенесемо до новоствореної бібліотеки процедур і функцій. Наприклад, це буде файл MyWord.pas, в розділі interface якого будуть описані заголовки всіх наших функцій, а в розділі implementation - самі функції (в подальшому будемо користуватися цією бібліотекою). Не забудьте після implementation вставити рядки uses ComObj; var W: variant ;.
Створимо новий проект, в програмному модулі якого зробимо посилання на нашу бібліотеку uses MyWord ;. На формі розмістимо кнопку і в процедуру обробки натиснення її впишемо наступний програмний код.

Схожі статті