Расширенный формат |
Расширенный формат в графических формах не используется.
Расширенный формат предназначен для установки некоторых параметров вывода поля в отчет.
Область действия расширенного формата ограничивается формой, в которой он задан.
Расширенный формат поля перекрывает формат, заданный в шаблоне поля.
<расширенный формат> ::= { " <ключ> : [<дополнение>] " }
Расширенный формат представляет собой произвольную комбинацию ключей с дополнениями (для некоторых ключей дополнение может отсутствовать). Между ключом и дополнением ставится двоеточие.
Любой ключ может отсутствовать. Последовательность ключей при описании расширенного формата не имеет значения.
Ключи разделяются запятой. Каждый элемент конструкции (ключ плюс дополнение) заключается в кавычки.
<ключ> ::= b | s | p | t | d | m | draw | sum | avg | max | min
Ключ в (сокращение от Blank) является директивой для заполнения пробелами шаблона поля при нулевом значении поля. Ключ в не имеет дополнения.
Ключ s (сокращение от Skip page) является директивой для перехода на новую страницу отчета в месте расположения шаблона поля, при этом шаблон поля остается незаполненным. Поле должно иметь имя 'True', заключенное в одинарные кавычки.
При этом, если в строке с шаблоном поля 'True' присутствуют другие элементы простой строки, то:
часть строки, расположенная до шаблона поля 'True', остается на прежней странице;
часть строки, расположенная после шаблона поля 'True', выводится в первую строку новой страницы (после заголовка, если он есть). Пробелы, стоящие после шаблона, учитываются.
Если в строке с шаблоном поля 'True' после шаблона данного поля нет других элементов простой строки, то в начало новой страницы вставляется пустая строка (после заголовка, если он есть). Если выставить флажок Forms.Compatibility=OFF, то вставка пустой строки в начале следующей страницы не производится.
Ключ используется для перехода к новой странице до окончания предыдущей.
Ключ s не имеет дополнения.
Ключ p (или position) используется для корректировки положения поля в шаблоне, если поле занимает меньше позиций, чем ему отведено. Ключ p имеет три возможных дополнения:
l или left - поле сдвигается влево;
p или right - поле сдвигается вправо;
c или center - поле центрируется.
<ключ t> ::= t : ( l | r | a | - )
Ключ t (или trim) используется для корректировки правил удаления пробелов. Если поле имеет пробелы до или после выводимого значения, они по умолчанию удаляются.
Ключ t дает возможность пробелы удалять, не удалять или удалять с одной стороны. Ключ t имеет четыре возможных дополнения:
l или left - пробелы удаляются только слева;
r или right - пробелы удаляются только справа;
a или all - пробелы удаляются и слева, и справа;
- - пробелы не удаляются.
Ключ d (или delete) обрезает поле, не уместившееся в шаблон. Действует для всех типов полей. Ключ d имеет два возможных дополнения:
l или left - обрезает поле слева;
r или right - обрезает поле справа.
Ключ m представляет собой формат вывода даты в отчет.
Ключ m имеет дополнение следующего вида:
<дополнение ключа M> ::= d{d}/m{m}/y{y}
День, месяц, год разделяются символом "/".
Количество символов, отведенных дню, месяцу, году, не ограничено.
Количество символов, отведенных полю даты в шаблоне поля, должно быть не меньше количества символов даты в расширенном формате.
Ключ draw позволяет подключить к описываемому полю графический файл. При исполнении отчета в шаблон данного поля будет выведен рисунок из подключенного файла. При необходимости высота строки таблицы будет автоматически увеличена.
Ключ draw имеет дополнение следующего вида:
<дополнение ключа DRAW> ::= <имя графического файла> <имя графического файла> ::= <строка> | <идентификатор>
Имя графического файла задается строкой или идентификатором. Имя файла может содержать путь на файл. Если путь не указан, то файл ищется в одном каталоге с исполняемой формой.
Ключ draw используется в формах, созданных в электронной таблице .
Ключи sum, avg, max, min интерпретирует описываемое поле как агрегатное, что позволяет в шаблон данного поля выводить суммарное, среднее, максимальное или минимальное значение данного поля в цикле.
Ключи могут иметь дополнение, являющееся именем цикла, в котором рассчитывается значение агрегатного поля. Если имя цикла не указано, то берется ближайший предшествующий цикл, в котором используется одноименное поле (для вычисляемых полей именем можно считать арифметическое выражение для вычисления значения поля).
Перед первым входом в цикл значение агрегатного поля обнуляется.
Пример использования агрегатного поля для управляемых форм.
! form := getForm('t', 't.out'); ! if form=nil then ! exit; ! for i:=1 to 10 do begin ! form^.writeInt(i); ! end; ! form^.putEventById(feBreak,1); ! GetReports(form);
.form t .fields x .endfields .{ x=^ .} .endform
.linkform t1 prototype is t .fields x x:'sum' x:'avg' x:'max' x:'min' .endfields Пример использования агрегатных полей ------------------------------------- .{grou x=^ .} Всего Среднее Максимум Минимум ^ ^ ^ ^ .endform
В результате исполнения данной формы Вы получите следующий отчет:
Пример использования агрегатных полей ------------------------------------- x=1 x=2 x=3 x=4 x=5 x=6 x=7 x=8 x=9 x=10 Всего Среднее Максимум Минимум 55 5,5 10 1
Пример использования агрегатного поля для автономных форм
.form 'ex3_0_1' .ard .var x:integer .endvar .table blank .fields x x:'sum' x:'avg' x:'max' x:'min'.grou' // в данном случае имя цикла можно не указывать .endfields Пример использования агрегатных полей -------------------------------------- .{while x<5;grou .begin x:=x+1; end. x = ^ .} всего среднее максимум минимум ^ ^ ^ ^ .endform
При исполнении данной автономной формы мы получим следующий отчет:
Пример использования агрегатных полей ------------------------------------- x=1 x=2 x=3 x=4 x=5 Всего Среднее Максимум Минимум 15 3 5 1