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

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

Комментарии

  • отредактировано 01:48
    Ребят, если мне не в этот раздел, перенаправьте, пожалуйста.
  • gpigpi
    отредактировано 01:48
    procedure Cross1OnCalcWidth(ColumnIndex: Integer; ColumnValues: Variant; var Width: Extended);
    begin
         if ColumnIndex = 2 then Width := 0;                                                                                    
    end;
    
    Значение ColumnIndex определяется согласно Ваших задач
  • отредактировано 01:48
    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), то он непременно выводит один последний(НЕ ИТОГОВЫЙ, а тот что перед ним) столбец.
  • отредактировано 01:48
    Решила проблему, убрав одно поле из rowfields. В принципе, мне и не нужно его выводить. Но все равно, интересно, почему он так делает. Если кто знает, отпишитесь, пожалуйста. Заранее спасибо.

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

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.