Содержание

12. Печать данных формы (Print)

Печать данных осуществляется методом Print:

function Print(const TemplateName, OutFileName: String; var Errs: String; OpenFile: Boolean): String

Описание параметров:

  • TemplateName – путь к файлу шаблона. Может быть абсолютным и относительным. Если указан относительный путь, то используется папка шаблонов (указывается в настройках программы).
  • OutFileName – абсолютный путь к выходному файлу. Если указана пустая строка, то путь определяется программой.
  • Errs – сюда записываются возможные ошибки при печати.
  • OpenFile – если True, то программа открывает сформированный документ в текстовом редакторе.

Метод возвращает фактическое имя выходного файла. Дело в том, что во время печати файл OutFileName может быть занят другим процессом (например, открыт в текстовом редакторе) и метод никак не сможет его заменить. Поэтому он создает файл с таким же именем + число, обеспечивая возможность сохранить файл, и возвращает это имя в качестве результата.

OnPrint

Print вызывает событие OnPrint:

TPrintEvent = procedure (Sender: TObject; Action: TPrintAction; const SourceName, FieldName: String; var Value: String; var Accept: Boolean) 

Установив обработчик события, вы можете влиять на процесс печати. В параметр Action передается действие, которое выполняет программа во время печати. Возможны следующие значения:

  • paBeginPrint - начало печати. Параметр SourceName содержит полный путь к файлу шаблона. В этот момент вы можете выполнить какие-то подготовительные действия. Параметр Accept игнорируется.
  • paBeginData - начало данных. Данное действие соответствует тому, когда программа впервые встречает тег form или grid. В этот момент программа переводит курсор набора данных на первую запись - это действие по умолчанию, если параметр Accept равен False. Вы можете перехватить это действие, установив Accept в True. В скрипте вы можете, к примеру, позиционировать курсор на первой записи своего набора данных. Параметр SourceName содержит имя источника данных, указанного в теге form/grid. Это может быть имя формы, запроса или произвольное имя.
  • paNextData - следующая запись. Когда программа встречает тег end, она перемещает курсор набора данных на следующую запись и повторяет часть шаблона между тегами form-end или grid-end. Если достигнут конец записей, то программа переходит к участку шаблона за тегом end. Перемещение курсора - это действие по умолчанию, если Accept равен False. Установите Accept в True, если хотите перехватить это действие. Например, вы можете перейти к следующему элементу массива данных или переместить курсор на следующую запись. Когда достигните конца данных, то установите Accept в False, чтобы программа продолжила печать шаблона за тегом end. Параметр SourceName содержит имя источника данных, указанного в теге form/grid. Это может быть имя формы, запроса или произвольное имя.
  • paPrintField - печать поля. SourceName - имя источника данных, FieldName - имя поля. Если Accept равен True, то значение поля будет вычислять скрипт, передавая Value в шаблон. Если Accept равен False, то программа сама будет вычислять поле штатными средствами.
  • paEndPrint - конец печати. Файл документа уже сформирован. Вы можете выполнить какие-то завершающее действия, например освобождение памяти. Параметр Accept игнорируется.

1. Действия paBeginData, paNextData обычно перехватываются, когда надо распечатать набора данных, например TdxSQLQuery или произвольный массив.

2. В обработчике параметр Accept передается со значением False. Не меняйте его, если действие должно быть обработано самой программой.

3. Значение в теге group обрабатывается как печать поля paPrintField.