Был
доработан блок обработки цветов в описании представлений документов (поле
"COLOR" в справочнике R170):
Помимо существовавшей
ранее возможности изменять цвет шрифта строки таблицы, теперь можно
описать изменение цвета
шрифта и фона для каждой колонки, и даже для каждой отдельно взятой
ячейки таблицы. Для
этого в блок кода обработки цвета.
Рассмотрим все эти
возможности на примере отчета смены Производства, Склада, Экспедиции,
(который, как мы знаем
также является документом):
1. Изменение цвета строки
документа по условию.
Предположим, что мы
хотим сделать шрифт красного цвета в тех строках отчета, где выходящее
количество<0
Тогда нам следует
написать в блоке кода обработки цвета у данного представления отчета
следующее:
if eamnt<0
{'clRed','clRed'}//в данном случае первый
цвет означает цвет шрифта подсвеченной (выделенной курсором)
// строки в таблице, а
второй - обычной неподсвеченной строки
else
nil
endif
если мы хотим к тому же
написать, чтобы цвет фона ячейки был также изменен -
мы должны писать массив
уже из трех элементов:
if eamnt<0
{'clRed','clRed','clLime'}// где третий
элемент, в данном случае "clLime" - цвет фона строки
else
nil
endif
Напоминаю, что в
качестве цвета, мы можем указывать любые дельфийские цвета,
т.е. не только прямые
названия цветов: 'clBlue','clRed','clGreen', но и
указания на цвета
элементов WINDOWS например 'SpecialHighlight','SpecialNoHighlight',
'clActiveCaption','clBtnText'
и.т.д.
2. Изменение цвета
шрифта колонки
Если у нас возникла необходимость
выделить цветом, например колонки кода номенклатуры
и ее наименование, мы
можем это сделать следующим образом:
parameters FldName// с
помощью этой строки мы указываем, чтобы в блок кода обработки
// цветности автоматически
передавалось в качестве параметра имя колонки, а дальше
// мы уже обрабатываем его
как нам необходимо
if fldname='ANAL1' or
fldname='PNAME' //не забудте, что необходимо указывать все имена полей
ПРОПИСНЫМИ буквами
{'clRed','clRed'}//соответственно только
шрифт или {'clRed','clRed','clGreen'}
шрифт и фон
else
nil
endif
3. Изменение отдельных
ячеек в колонке
Немного усложним задачу №1. Предположим нам надо
выделять не строку с отрицательным
выходящим остатком, а
ячейку в соответствующей колонке, а положительную ячейку выделять
зеленым шрифтом:
parameters FldName
if fldname='EAMNT'
if &FldName < 0 //с помощью данного
выражения (так называемого макроса знак "&"+Имя переменной) мы
получаем
// значение данного поля в
текущий момент и в зависимости от него раскрашиваем колонку
{'clWhite','clBlack','clRed'}//ячейка с
минусовым значением черным шрифтом на красном фоне
else
{'clWhite','clBlack','clLime'}//ячейка с
неотрицательным значением черным шрифтом на светло-зеленом фоне
else
nil
endif
Кроме того, естественно
можно комбинировать различные варианты цветов...
Данная доработка
позволяет сделать более наглядным представление данных для пользователей,
и существенно улучшить
восприятие ими информации на экране.
ВАЖНО: Пожалуйста не
забывайте устанавливать признак частного реквизита после изменения
блока обработки цвета, во избежание
потери ваших изменений после обновления версии
программы.