Управление отображением бэнда

отредактировано 03:24 Раздел: FastReport 2.xx VCL
Прошу прощения, если ответ на этот вопрос очевиден, я только начал пользоваться FR (пока экспериментирую с FreeReport).

У меня в зависимости от мастер-записи в детали некоторые поля могут быть пустыми. Если я группирую поля детали по нескольким detail data бэндам, можно ли сделать band, у которого все поля NULL невидимым? Автоматически или вручную - неважно.

Комментарии

  • starcomputerstarcomputer Украина, Донецк
    отредактировано 03:24
    написал:
    Если я группирую поля детали по нескольким detail data бэндам, можно ли сделать band, у которого все поля NULL невидимым? Автоматически или вручную - неважно.
    Задай условие Hightligth в Memo, поставь цвет шрифта белым и его не увидишь ! Это если Memo, а если по всему бэнду - используй событие OnBeforePrint :
    Например:
    Band.OnBeforePrint
    begin
    if FinalPass and (SUM[Поле1] +SUM[Поле2]+...+SUM[полеN] = 0) then
    Visible := False;
    end;
    
    Ну в таком духе, а вообще, по моему, выводятся только ненулевые значения (хотя ммм... сам бэнд будет выводиться как пустая строка).
  • отредактировано 03:24
    Это можно сделать в freeReport?

    Я не нашел, как задать обработчик On Before Print. Это делается в коде страницы или в коде самого бэнда?

    Пробовал сделать .Hide, но результата не добился ;)
  • BorisBoris Москва
    отредактировано 03:24
    Нет, во FreeReport такого обработчика создать нельзя:(
    В FastReport в этот обработчик доступен из Object Inspector.
  • отредактировано March 2004
    Так, пришлось купить FastReport.

    Теперь вопрос, как узнать из скрипта, что поле NULL (учитывая, что оно может принимать значение 0) ?
    И еще вопрос, какая функция скрипта возвращает длину строки?
  • bakhbakh Санкт-Петербург
    отредактировано 03:24
    написал:
    Так, пришлось купить FastReport.
    Поздравляем!.. Не разорился?.. ;)
    написал:
    как узнать из скрипта, что поле NULL (учитывая, что оно может принимать значение 0) ?
    FIELDISNULL([FieldName])
  • отредактировано March 2004
    FIELDISNULL([FieldName])
    - у меня всегда выдает true

    то есть скрипт

    begin
    if FieldIsNull([DtmAnalyst.TblExtendedEvent."S1"])
    then
    Visible := false
    else
    Visible := true
    end

    убирает бэнд в любом случае, вне зависимости от значения поля. Где я не прав?
  • bakhbakh Санкт-Петербург
    отредактировано 03:24
    cuiet написал:
    FIELDISNULL([FieldName]) - у меня всегда выдает true
    ...
    убирает бэнд в любом случае, вне зависимости от значения поля. Где я не прав?
    Наверное, в определении значения поля...
    На моих отчётах всё работает нормально...
  • отредактировано 03:24
    И что еще любопытно, даже когда это поле NULL, в отчете выводится 0. Что за глюк? Во FreeReport выводилось просто пустое место.
  • bakhbakh Санкт-Петербург
    отредактировано 03:24
    написал:
    И что еще любопытно, даже когда это поле NULL, в отчете выводится 0.
    Значит не NULL...
    написал:
    Что за глюк? Во FreeReport выводилось просто пустое место.
    В свойствах мемо - HideZeros = True поставь...
  • отредактировано 03:24
    Спасибо, нашел одновременно с Вашим ответом. Так это свойство на самом деле HideNulls ? ;)

    Проверил еще раз, что возвращает FieldIsNull. Вне зависимости от значения поля -1.

    Можно пример кода, где это работает?
  • bakhbakh Санкт-Петербург
    отредактировано 03:24
    cuiet написал:
    Можно пример кода, где это работает?
    В окне редактора мемо:
    [IF(FIELDISNULL([Holders."NAME"]), ' здесь был NULL ', ' а здесь NULL не был ')]
    
  • отредактировано 03:24
    В общем - ерунда у меня стабильно выходит.
    Рисует значение поля (1 или 0), а рядом пишет - " здесь был NULL ".
    Для полей с NULL - значение поля не рисует, но все равно пишет " здесь был NULL ".

    Borland C++ Builder 5, FireBird, FIB+ 4.81 Fast Report 2.5
  • bakhbakh Санкт-Петербург
    отредактировано 03:24
    написал:
    Для полей с NULL - значение поля не рисует, но все равно пишет " здесь был NULL ".
    Бред какой-то... Ничего умного больше посоветовать не могу...
    написал:
    Borland C++ Builder 5, FireBird, FIB+ 4.81 Fast Report  2.5
    Delphi 5, Yaffil 883, IBX, FR 2.52
  • отредактировано 03:24
    2 cuiet:

    В 2.5 с FieldIsNull была бага ...
    Кинь в форум исходник всей процедуры - я тебе скажу что где нужно дописать (сейчас нет старой версии под рукой) ...

    2 bakh:
    написал:
    Delphi 5, Yaffil 883, IBX, FR 2.52

    Уже 2.52 что-ли вышел или это просто очепятка ? ;) )

    P.S. Delphi 5, Firebird 1.5, FIBPlus, FR 2.51
  • bakhbakh Санкт-Петербург
    отредактировано 03:24
    Vano написал:
    Уже 2.52 что-ли вышел или это просто очепятка ? ;) )
    Вот не помню, но где-то в каком-то about'е видел 2.52...
    А может это мне приснилось... ;)

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

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