Table.CopyByY

From SunFlurry wiki
Revision as of 16:44, 8 August 2020 by Admin (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  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. Если второй аргумент равен 1, атрибут CurPutY примет значение 1, а CurPutX увеличится на ширину предыдущей области.
  2. Будут скопированы ячейки диапазона 1:7,2:7 в результирующую таблицу в область, начинающуюся с верхней левой ячейки <CurPutX>:<CurPutY>
  3. Будет произведен поиск переменной пДата и значение копируемой ячейки будет изменено на ее значение (если переменная не существует, будет вызвано исключение). Для копируемых ячеек, содержащих вычисляемые выражения, а не просто переменные, будет произведено вычисление выражений.
  4. Атрибут CurPutY увеличится на 1 (высота области).
  5. Если третий параметр равен нулю, в таблице, в которую производится копирование, будет изменена ширина столбцов CurPutX-2 и CurPutX-1 в соответствии с шириной столбца 1 и 2 таблицы-шаблона, высота строки будет подсчитана автоматически исходя из высот всех ячеек, уже находящихся в строке CurPutY (так как строка на рисунке имеет установку автоматической высоты).
  6. Будут скопированы неразрывные регионы, попадающие в область (в данном примере отсутствуют).
  7. Будут скопированы разбиения страницы, попадающие в область (в данном примере отсутствуют).
  8. Будут скопированы объекты таблицы, попадающие в область (в данном примере отсутствуют), для значений объектов, с установленным флажком "значение для вычисления", значения будут вычислены, как это происходило для значений ячеек. Для каждого скопированного объекта, будет вызвано событие 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;