Добавление объектов в таблицу
В таблицу можно вставлять посторонние объекты. Для чего это может быть нужно? Например, чтобы выделить какие-нибудь значения ячеек. Можно, конечно, использовать условное выделение (мы рассматривали подобный пример) - но не всегда его возможностей бывает достаточно.
Рассмотрим пример, в котором каждое значение ячейки представлено в виде маленькой шкалы, которая отображает уровень зарплаты. Вот что должно получиться в результате:
Красным помечены значения менее 100, желтым - менее 3000, зеленым - более 3000.
Приступим к созданию отчета. Положим на лист объект "Кросс-таблица БД" и настроим его содержимое:
Настроим внешний вид таблицы. Для этого выберем цвет заголовков, поменяем английские надписи на русские (Зарплата, Сотрудник, Год, Итого) и отключим свойство "Авто-размер" (AutoSize
). В результате должна получиться такая таблица:
Теперь добавим элементы, которые будут отображать шкалу, в таблицу. Для этого выберите объект "Рисование/Прямоугольник" в панели объектов и положите его внутрь ячейки таблицы:
Таким же образом добавьте еще два прямоугольника.
Теперь создадим скрипт, который будет показывать нужное количество прямоугольников и раскрашивать их в один из цветов. Для этого выделите саму ячейку и в инспекторе объектов создайте обработчик события OnBeforePrint:
В обработчике напишем следующее (обратите внимание на названия объектов - вставленные в таблицу объекты имеют именно такие имена):
procedure DBCross1Cell0OnBeforePrint(Sender: TfrxComponent);
begin
// Value - это текущее значение ячейки
if Value < 100 then
begin
// это первый объект
DBCross1Object1.Color := clMaroon; // красный
// это второй объект
DBCross1Object2.Color := clWhite;
// это третий объект
DBCross1Object3.Color := clWhite;
end
else if Value < 3000 then
begin
DBCross1Object1.Color := $00CCFF; // желтый
DBCross1Object2.Color := $00CCFF;
DBCross1Object3.Color := clWhite;
end
else
begin
DBCross1Object1.Color := $00CC98; // зеленый
DBCross1Object2.Color := $00CC98;
DBCross1Object3.Color := $00CC98;
end;
end;
Это все - если запустить отчет, мы увидим таблицу, приведенную в начале этого раздела.