Форматирование по месту

       Рассмотренный способ форматирования применяется ко всем выражениям, которые имеются в объекте. В нашем случае все работает правильно, т.к. в объекте всего одно выражение. Однако, как быть, если их два, да еще и разного типа?

 

       Рассмотрим такой случай: вывод в одном объекте суммы и количества заказов. Для этого в объект надо поместить следующий текст:

 

Сумма: [SUM(<Group."ItemsTotal">,MasterData1)] 

Кол-во: [COUNT(MasterData1)]

 

       При запуске отчета убедимся, что оба значения представлены в денежном формате (который мы задали в предыдущем примере), что отчасти неверно:

 

_img159

 

       Для корректного вывода значений надо бы отформатировать каждое из них индивидуально. Для этого есть способ – так называемые тэги формата. Они дописываются перед закрывающей квадратной скобкой выражения. В нашем примере отключим форматирование объекта (в редакторе формата выберем категорию "Текст (без форматирования)"). Теперь нужно поменять формат первой переменной, т.к. вторая будет отображена правильно (без форматирования – в виде целого числа, что нам и надо). Для этого поменяем текст объекта следующим образом:

 

Сумма: [SUM(<Group."ItemsTotal">,MasterData1) #n%2,2m] 

Кол-во: [COUNT(MasterData1)]

 

и убедимся, что теперь отчет работает правильно:

 

_img160

 

       Теперь о том, как использовать тэги. Общий синтаксис следующий:

 

[expression #tag]

 

       Обратите внимание – пробел между выражением и знаком # обязателен! Сам тэг может быть следующего вида:

 

#nСтрокаФорматирования – числовой формат

#dСтрокаФорматирования – формат даты/времени

#bЛожь,Истина – булевый формат

 

       СтрокаФорматирования в каждом случае представляет собой аргумент для функции, с помощью которой выполняется форматирование. Так, для числового форматирования это делфийская функция Format, для даты/времени – функция FormatDateTime. Возможные значения строк форматирования можно узнать в справочной системе Delphi. Вот некоторые значения, используемые в FastReport:

 

для числового форматирования:

%g – число с минимальным количеством знаков после запятой

%2.2f – число с фиксированным количеством знаков после запятой

%2.2n – число с разделителем разрядов

%2.2m – денежный формат, принятый в ОС Windows, зависит от региональных настроек в панели управления.

 

для формата дата/время:

dd.mm.yyyy – дата вида 23.12.2003

dd mmm yyyy – дата вида 23 ноя 2003

dd mmmm yyyy – дата вида 23 Ноябрь 2003

hh:mm – время вида 23:12

hh:mm:ss – время вида 23:12:00

dd mmmm yyyy, hh:mm – время и дата вида 23 Ноябрь 2003, 23:12

 

       В строке для числового формата допускается указывать вместо точки запятую или тире, тогда этот символ будет использован как разделитель целой и дробной частей числа. Использование других разделителей не допускается.

 

       Что касается форматирования типа #b (булевое), то строка форматирования представляется в виде двух значений, разделенных запятой. Первое значение соответствует False, второе – True.

 

       Чтобы не запоминать все тэги и их значения, в редакторе объекта "Текст" есть удобное средство для вставки форматирования. При нажатии на кнопку _img161 вызывается редактор формата, который мы уже рассматривали. После выбора формата он вставляется в текст. При этом, если курсор стоит перед или после закрывающей квадратной скобки, то формат вставляется корректно.