Шаг 39 - Условное форматирование полей - применение формул

Прежде всего необходимо сказать, что в Crystal Reports определено два вида форматирования:

В следующих шагах мы уже рассматривали форматирование полей:

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

Давайте сделаем с помощью формул то же, что делали в прошлом шаге. Выделяем поле, и в контекстном меню выбираем Format Field. Появляется уже знакомый нам диалог форматирования. Переходим на вкладку Font.

39_1.gif (7980 b)

Справа от поля Color находится кнопка:

39_2.gif (293 b)

После ее нажатия появляется окно Format Editor.

39_3.gif (13841 b)

Внешне это окно очень похоже на редактор формул, однако это не так. Изменилось содержимое проводника функций и проводника операций. (Внимание! Сейчас мы вводим формулу, определяющую цвет шрифта). Содержимое проводников изменяется в зависимости от редактируемого свойства. Вводим формулу:

if{@Sum}>200 Then Red

Чтобы записать формулу, нажмите кнопку вверху слева (с изображением дискетки). Обратите внимание: рисунок на кнопке, вызвавшей редактор, изменилось:

39_4.gif (294 b)

Это свидетельствует о том, что к данному свойству применяется условное форматирование. Теперь нам надо изменить цвет фона. Переходим на вкладку Border окна форматирования, и повторяем наши действия для фона. В окне редактора вводим формулу и сохраняем ее:

if{@Sum}>200 then Yellow

Однако, в окне предварительного просмотра мы получим странный результат:

39_5.gif (3049 b)

Здесь проявилась важная особенность редактора форматирования. И если к полю применено условное форматирование, его абсолютное форматирование отменяется! Вообще-то в выражении if-else часть с else необязательна, но если ее нет, применяются установки по умолчанию. ( Свойства на вкладках игнорируются). Изменим формулу для фона:

if{@Sum}>200 Then 
	Yellow
else
	NoColor

Поверьте мне, теперь будет все нормально.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Юрий Гвоздев - 16.02.2003