Программирование Db Cross-tab

отредактировано August 2007 Раздел: FastReport Studio
Мне нужно как то, в зависимости от содержимого DBCross1Column0, скрывать соответствующий столбец DBCross1CellHeader1, т.е., в принципе устанавливать свойство DBCross1CellHeader1.Width=0.
Посмотрел пример из руководства "Управление размером строк/колонок:"
Pascal Script:
procedure Cross1OnCalcWidth(ColumnIndex: Integer;
ColumnValues: Variant; var Width: Extended);
begin
if (VarToStr(ColumnValues[0]) = '1999') and
(VarToStr(ColumnValues[1]) = '11') then
Width := 100;
end;
Не работает
Переписал на VB Script и упростил, чтобы понятнее было
sub Cross1OnCalcWidth(ColumnIndex As Integer,
ColumnValues As Variant, Width As Extended)

if VarToStr(ColumnValues[0]) <> "1999" then
Width = 0
end if

end sub
В моем примере значение "1999" не существует и условие должно срабатывать всегда.
Но даже если условие вообще убрать - все равно не работает.
Вообще никакой реакции.
Ну и непонятно откуда берутся параметры функции Cross1OnCalcWidth(), их имена, порядок, типы.
Есть ли где работающие примеры отчетов со скриптами для DB Cross-tab?
Помогите разобраться.

Комментарии

  • gpigpi
    отредактировано 05:19
    Проверил, всё работает. У Вас заголовок у кросса случайно не двухуровневый? Если да, то для сравнения значений заголовков второго уровня нужно использовать VarToStr(ColumnValues[1])
  • отредактировано September 2007
    Действительно работает, но почему то OnCalcWidth работает только в режиме Авто-размер=True (что вообще даже не логично), притом что другие обработчики событий работают вне зависимости от этого режима и это делает его применение абсурдным.

    1. Это действительно так? Проверял на последней демке 4.3.22.
    2. Хотелось бы узнать какие параметры у обработчика OnCalcHeight, в руководстве о нем ничего не сказано.
    3. Как из VB.NET напрямую передать DataSet DBCross?
    Пока я передаю через MasterData: MyFrxDataSet.BindTableToBand("tblMyTable", MyFastReport, "MasterData1") в VB.NET, а потом в скрипте отчета присваиваю DBCross1.DataSet=MasterData1.DataSet.
    А можно это сделать как то напрямую?

    PS
    Для наглядности приводимых примеров, хотелось бы вставлять в текст изображения.
    Но не пойму как это у вас делается.
    У вас есть функция вставить изображение, но она предлагает URL "http://".
    Получается из буфера обмена или из файла на компьютере никак не вставить?

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

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