Search Results for

    Show / Hide Table of Contents

    Добавление объектов в таблицу

    В таблицу можно вставлять посторонние объекты. Для чего это может быть нужно? Например, чтобы выделить какие-нибудь значения ячеек. Можно, конечно, использовать условное выделение (мы рассматривали подобный пример) - но не всегда его возможностей бывает достаточно.

    Рассмотрим пример, в котором каждое значение ячейки представлено в виде маленькой шкалы, которая отображает уровень зарплаты. Вот что должно получиться в результате:

    Красным помечены значения менее 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;
    

    Это все - если запустить отчет, мы увидим таблицу, приведенную в начале этого раздела.

    Back to top © 1998-2024 Copyright ООО «Быстрые отчеты»