Четверг, 26.12.2024, 07:56
Приветствую Вас Гость | RSS

DELPHI Report

Каталог статей Delphi Report

Главная » Статьи » MS Office (MS Word, MS Excel ) » MS Word

4.1 Шаблоны и отчёты MS Word

Когда мы формируем сложный документ по шаблону, и когда в этом шаблоне есть таблицы, количество строк которых в выходном документе может быть произвольным и зависеть от объема информации, то нам недостаточно просто функций создания таблиц и записи в ячейки определенной информации. Для создания такого документа необходимо, как минимум, еще несколько функций работы с таблицами, в перечень которых входит перемещение по таблицам, добавление строк (столбцов) в конец или в середину таблицы. Также необходимо определять размер (количество строк, столбцов) и номер текущего столбца и строки. Чтобы понимать, о чем речь, необходимо просмотреть части 1-3 данной статьи, опубликованных в предыдущих номерах.

Для того, чтобы применить свои знания к конкретной задаче, сделаем ее постановку. Например, в нашем документе есть таблица, которая представляет собой шаблон и заполняется из массива информации, который имеет произвольную длину. Таким документом может быть счет-фактура, заголовок которой представляет собой сложную таблицу, средняя часть представляет таблицу переменной длины, а нижняя также представляет сложную таблицу. Для заполнения такого шаблона можно использовать способ, описанный во второй части данной статьи. Этот способ основан на поиске в шаблоне переменных (неповторяющиеся строковые значения длиной 3-5 символов) и подстановке вместо них реальных значений на этапе формирования документа. Поэтому для добавления информации в такую таблицу придется осуществить поиск и позиционирование в строку (по переменной), в которую и перед которой необходимо вставлять строки, и запомнить, в какие колонки какую записывать информацию, но для начала необходимо определить, находится курсор в таблице или нет.

Для этого используем свойство Information объекта Selection, в качестве параметра которого будет константа wdWithInTable. В этом случае этот метод возвращает TRUE, если курсор в таблице, или FALSE, если нет. Для использования в нашем приложении создадим функцию GetSelectionTable.

Code:

Function GetSelectionTable:boolean;

const wdWithInTable=12;

begin

GetSelectionTable:=true;

try

GetSelectionTable:=W.Selection.Information(wdWithInTable);

except

GetSelectionTable:=false;

end;

End;

 

Если в нашем документе может быть более одной таблицы, то, скорее всего, необходима возможность перехода и позиционирование курсора на следующей или предыдущей таблице. Объект Selection дает нам эту возможность через методы GoToNext и GoToPrevious, в этом случае в качестве их параметров должна использоваться константа wdGoToTable.

Code:

Function GoToNextTable (table_:integer):boolean;

const wdGoToTable=2;

begin

GoToNextTable:=true;

try

W.Selection.GoToNext (wdGoToTable);

except

GoToNextTable:=false;

end;

End;

Function GoToPreviousTable (table_:integer):boolean;

const wdGoToTable=2;

begin

GoToPreviousTable:=true;

try

W.Selection.GoToPrevious(wdGoToTable);

except

GoToPreviousTable:=false;

end;

End;

 

 

Когда мы позиционируемся на таблице, можем определить количество столбцов и строк в ней. Для этого также используем свойство Information объекта Selection, но в качестве аргументов используем константы wdMaximum Number Of Columns и wdMaximum NumberOfRows.

Code:

Function GetColumnsRowsTable(table_:integer;

var Columns,Rows:integer):boolean;

const

wdMaximumNumberOfColumns=18;

wdMaximumNumberOfRows=15;

begin

GetColumnsRowsTable:=true;

try

Columns:=W.Selection.Information (wdMaximumNumberOfColumns);

Rows:=W.Selection.Information (wdMaximumNumberOfRows);

except

GetColumnsRowsTable:=false;

end;

End;

 

Кроме размера таблицы, нам может быть необходим номер колонки и строки, на которой позиционирован курсор. Для этого так же используем свойство Information объекта Selection, но в качестве аргументов используем константы wdStartOfRangeColumnNumber, wdStartOfRangeRowNumber. Для реализации этого в Delphi создадим функцию GetColumnRowTable.

Code:

Function GetColumnRowTable(table_:integer;

var Column,Row:integer):boolean;

const

wdStartOfRangeColumnNumber=16;

wdStartOfRangeRowNumber=13;

begin

GetColumnRowTable:=true;

try

Column:=W.Selection.Information (wdStartOfRangeColumnNumber);

Row:=W.Selection.Information (wdStartOfRangeRowNumber);

except

GetColumnRowTable:=false;

end;

End;

 

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

Далее

Категория: MS Word | Добавил: delphi (29.08.2008)
Просмотров: 9002 | Рейтинг: 3.0/4
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Меню сайта
Google
Форма входа
Категории раздела
MS Excel [22] MS Word [18]
Поиск
Друзья сайта
Статистика
Copyright MyCorp © 2024