Difference between revisions of "Table.CopyByY"
m (1 revision imported) |
|
(No difference)
|
Latest revision as of 07:53, 7 February 2021
CopyByY (Работа с шаблонами) | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Функция производит работу в другом направлении, по сравнении с функцией CopyByX, и выполняет копирование указанной области ячеек и объектов, находящихся внутри этой области из таблицы-шаблона в текущую таблицу, начиная с ячейки, заданной атрибутами CurPutX и CurPutY. В момент копирования тексты и значения ячеек и объектов, являющиеся шаблонами, будут превращены в результаты их вычисления. Если третий аргумент равен 1, до начала копирования, функция переводит курсор копирования на первую строку и производит сдвиг курсора по горизонтали (размер сдвига по горизонтали определяется шириной области, которая была скопирована в таблицу до текущей). После окончания копирования функция переводит курсор копирования вниз на высоту области копирования. Если четвертый аргумент равен 1, функция не будет изменять размеры строк или столбцов в соответствии с размерами строк и столбцов копируемой области, однако, при копировании текста в ячейки, автоматически рассчитываемые размеры строк или столбцов по-прежнему будут изменены, если это необходимо. После копирования любого визуального объекта, функция вызывает событие OnFinishCopyObject, если оно существует в текущем или глобальном модуле.
На рисунке показан вид простой таблицы-шаблона. Области таблицы имеют свои имена. При использовании функции, для указания на область копирования, формат определения области следующий: <Имя области шаблона>[|<Имя области шаблона пересекающегося измерения>]
либо <Имя области шаблона>[,<Имя области шаблона пересекающегося измерения>]
, либо прямое указание на область копирования <Левый столбец области>:<Верхняя строка области>,<Правый столбец области>:<Нижняя строка области>
(нумерация начинается с единицы). Т.е., для именованных областей на рисунке, v1
будет подразумеваться область ячеек в диапазоне 1:1,<ширина таблицы>:6
; для h1
подразумевается область 1:1,2:9
(9 -- высота таблицы); для h1|v2
подразумевается область 1:7,2:7
.
При копировании в новую таблицу области "h1|v2" с рисунка с помощью функции CopyByX:
- Если второй аргумент равен 1, атрибут CurPutY примет значение 1, а CurPutX увеличится на ширину предыдущей области.
- Будут скопированы ячейки диапазона
1:7,2:7
в результирующую таблицу в область, начинающуюся с верхней левой ячейки<CurPutX>:<CurPutY>
- Будет произведен поиск переменной
пДата
и значение копируемой ячейки будет изменено на ее значение (если переменная не существует, будет вызвано исключение). Для копируемых ячеек, содержащих вычисляемые выражения, а не просто переменные, будет произведено вычисление выражений. - Атрибут CurPutY увеличится на 1 (высота области).
- Если третий параметр равен нулю, в таблице, в которую производится копирование, будет изменена ширина столбцов CurPutX-2 и CurPutX-1 в соответствии с шириной столбца 1 и 2 таблицы-шаблона, высота строки будет подсчитана автоматически исходя из высот всех ячеек, уже находящихся в строке CurPutY (так как строка на рисунке имеет установку автоматической высоты).
- Будут скопированы неразрывные регионы, попадающие в область (в данном примере отсутствуют).
- Будут скопированы разбиения страницы, попадающие в область (в данном примере отсутствуют).
- Будут скопированы объекты таблицы, попадающие в область (в данном примере отсутствуют), для значений объектов, с установленным флажком "значение для вычисления", значения будут вычислены, как это происходило для значений ячеек. Для каждого скопированного объекта, будет вызвано событие OnFinishCopyObject.
Синтаксис
Table.CopyByY(<Указание на область таблицы-шаблона (STRING)>,<Перейти на новый столбец до добавления области (INT)>=0,<Не производить изменения размеров столбцов или строк (INT)>=0)
Аргументы
<Указание на область таблицы-шаблона (STRING)>
- Строковой аргумент в формате наименований областей или прямого указания на ячейки таблицы-шаблона (см. выше).<Перейти на новый столбец до добавления области (INT)>
- (необязательный аргумент) Если аргумент равен 1, атрибут CurPutY принимает значение 1, а CurPutX увеличивается на ширину предыдущей добавленной области до начала копирования (см. пример выше).<Не производить изменения размеров столбцов или строк (INT)>
- (необязательный аргумент) Задает режим, когда пересчета ширины столбцов или высоты строк таблицы результата, попадающих в диапазон копирования, для которых не установлен признак "автоматическое изменение", не будет происходить. Это немного увеличивает скорость копирования и может использоваться, если размеры уже заданы, и в шаблоне они неверные.
Примеры
Т.CopyByY("v1|h1",1); For i:=1 To СпСтроки.Size() Do ... Т.CopyByY("v1|h2"); EndDo; Т.CopyByY("v1|h3"); Т.Options.FixedLine:=Т.Height(); Т.Options.FixedColumn:=4;