Удалить столбец из Cross-tab

отредактировано February 2013 Раздел: FastReport 4.0
Доброго времени суток! Облазила интернет и документацию, но ответа на свой вопрос не нашла.
В общем, имеем отчет с cross-tab (последний выбран по причине того, что количество строк и столбцов заранее неизвестно). Данные для cross-tab получаем из БД. С этим проблем нет. У cross-tab есть: стоки(1 уровень), столбцы (2 уровня), ячейки (5 уровней) и итоговый столбец (если точнее, то он в свою очередь состоит и 5 столбцов, т к у ячеек 5 уровней).
Проблема в том, что мне не нужно печатать некоторые уровни ячеек, но их итоги печатать надо.
Если упростить вышесказанное, то можно спросить так: возможно ли удаление столбцов, имеющих итоги, без удаления итогов.
Пробовала менять свойства Printable и Visible у неитогового столбца. Свойство Printable:=false работает, но оставляет пустые места, на месте ячеек, свойству Visible не удается присвоить значение false вовсе.
Вложила отчет для понятности. Не печатать нужно те столбцы, у которых пустые заголовки. Устроят любые варианты реалицации - через скрипт в том числе. Заранее спасибо за помощь.

Комментарии

  • отредактировано 04:29
    Ребят, если мне не в этот раздел, перенаправьте, пожалуйста.
  • gpigpi
    отредактировано 04:29
    procedure Cross1OnCalcWidth(ColumnIndex: Integer; ColumnValues: Variant; var Width: Extended);
    begin
         if ColumnIndex = 2 then Width := 0;                                                                                    
    end;
    Значение ColumnIndex определяется согласно Ваших задач
  • отредактировано 04:29
    gpi написал: »
    procedure Cross1OnCalcWidth(ColumnIndex: Integer; ColumnValues: Variant; var Width: Extended);
    begin
         if ColumnIndex = 2 then Width := 0;                                                                                    
    end;
    Значение ColumnIndex определяется согласно Ваших задач
    Спасибо за совет. Пользовалась именно этим вызовом до некоторых пор... В общем, необходимо вывести только итоговый столбец. Задача, вроде бы тривиальная
    procedure DBCross1OnCalcWidth(ColumnIndex: Integer; ColumnValues: Variant; var Width: Extended);
    begin
           if not(DBCross1.IsGrandTotalColumn(ColumnIndex))then Width:=0;  
    end;
    Если таблица 1х1х1(т е одна cellfield, один rowfield, одна columnfield), все ОК. Но если, скажем, в колонках сделать 3 поля (т е 3 columnfields), то он непременно выводит один последний(НЕ ИТОГОВЫЙ, а тот что перед ним) столбец.
  • отредактировано 04:29
    Решила проблему, убрав одно поле из rowfields. В принципе, мне и не нужно его выводить. Но все равно, интересно, почему он так делает. Если кто знает, отпишитесь, пожалуйста. Заранее спасибо.

Оставить комментарий