Добавление объектов в таблицу |
В таблицу можно вставлять посторонние объекты. Для чего это может быть нужно? Например, чтобы выделить какие-нибудь значения ячеек. Можно, конечно, использовать условное выделение (мы рассматривали подобный пример) - но не всегда его возможностей бывает достаточно.
Рассмотрим пример, в котором каждое значение ячейки представлено в виде маленькой шкалы, которая отображает уровень зарплаты. Вот что должно получиться в результате:
Красным помечены значения менее 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;
Это все - если запустить отчет, мы увидим таблицу, приведенную в начале этого раздела.
|