Отображение выражений с помощью объекта "Текст"

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

 

Hello, World! Today is [DATE].

 

       Если запустить отчет на построение, мы увидим приблизительно следующее:

 

Hello, World! Today is 01.01.2004.

 

       Что произошло? В процессе построения отчета FastReport встретил в тексте выражение, заключенное в квадратные скобки, вычислил его и вставил полученное значение обратно в текст, убрав, разумеется, скобки. Объект "Текст" может содержать любое количество выражений, смешанных с обычным текстом. В скобки можно заключать и одиночные переменные, и выражения, например, [1+2*(3+4)]. В выражениях можно использовать константы, переменные, функции, поля БД. Мы  рассмотрим эти возможности позже, по ходу главы.

 

       Итак, FastReport автоматически распознает имеющиеся в тексте выражения по квадратным скобкам. А что, если наш текст содержит квадратные скобки, и мы не хотим, чтобы они были восприняты как выражения? Например, если нам нужно вывести такой текст:

 

a[1] := 10

 

       FastReport воспримет [1] как выражение и выведет следующее:

 

a1 := 10

 

что нас, естественно, не устраивает. Один из способов избежать подобной  ситуации - отключить распознавание выражений. Просто выключите свойство AllowExpressions ("Выражения в тексте" в контекстном меню), и все выражения, имеющиеся в тексте, будут проигнорированы.

 

       Иногда требуется, чтобы текст содержал и выражения, и просто текст с квадратными  скобками, например:

 

a[1] := [myVar]

 

       Отключение выражений позволит вывести квадратные скобки там, где они нужны, но при этом отключит и обработку выражений. В этом случае FastReport позволяет задать другой набор символов, обозначающих выражение. За это отвечает свойство объекта ExpressionDelimiters, которое по умолчанию равно "[,]". В нашем случае можно использовать для выражений не квадратные, а угловые скобки:

 

a[1] := <myVar>

 

       При этом свойству ExpressionDelimiters надо установить значение "<,>". Как видно, запятая разделяет открывающие символы и закрывающие. Есть одно ограничение - нельзя задавать одинаковые открывающие и закрывающие символы, т.е. "%,%" работать не будет. Можно задать несколько символов, например "<%,%>". При этом наш пример будет выглядеть так:

 

a[1] := <%myVar%>