Как оставить свободное место на листе?

отредактировано 01:39 Раздел: FastReport 2.xx VCL
Здравствуйте.
Помогите, пожалуйста, если кто сталкивался. Мне нужно гарнтированно на каждом втором листе или на последнем листе отчета выводить определенную информацию. Она не может находится на отдельном листе а должна обязательно быть с предшествующими данными. Я определяю место, которое осталось на листе следующим образом:
В OnBeforePrint в бэнде Master Data пишу код:
 if (FREESPACE * 5/18 < 150) AND ([PAGE#] MOD 2 = 0) then....
В большинстве случаев все работает, но здесь не учитывается размер бэнда, который будет печататься, и, поэтому, если печатуемый бэнд слишком растянут, то все-равно иногда та информация, которая должна завершать данную страницу, печатается на следующей странице, а если в место 150, написать написать, например, 160, то в большинстве случаев остается очень много свободного места на странице.
Можно ли как-то определить высоту растянутого бэнда? Если проверять значение MasterData1.Height, то оно всегда равно тому, которое установлено в момент проектирования. Или есть у кого методика для таких случаев?
У меня FastReport 2.53
С уважением,
Денис Помозов.

Комментарии

  • отредактировано February 2007
    Не нашел ничего другого, как сделать собственную функцию подсчета высоты. Всплыла другая проблема - нужно знать высоту бэнда до начала его вывода, и, в случае, если его высота превашает нужную, то отложить его вывод, вывести другой бэнд а потом вывести этот. Если проверку сделать (как я это) в событии OnBeforePrint, то максимум, что я могу сделать, так это начать его вывод с новой строки. Повторюсь. У меня в OnBeforePrint прописан код:
     
    if (FREESPACE * 5/18 < 150) AND ([PAGE#] MOD 2 = 0) then 
      NewGr := NewGr + 1
    
    В результате выполнения этого кода выводися Group Footer, но только после вывода Master Data в котором я делаю проверку. Можно ли сделать наоборот? Т.е. Сначала вывести Group Footer, а потом продолжить вывод Master Data. Есть какое-нибудь событие, которое сработает перед этим событием, но уже после того, как будет выбрана следующая запись?
    Я еще пробовал не использовать группировку, а пользоваться Page Header и Page Footer. Но столкнулся с проблемой, что если они даже не видимые, то все равно занимают на листе место. Может, можно это как-то обойти?

    С уважением,
    Денис Помозов.
  • gpigpi
    отредактировано 01:39
    написал:
    Но столкнулся с проблемой, что если они даже не видимые, то все равно занимают на листе место. Может, можно это как-то обойти?
    Сделайте их высоту равной 0
  • отредактировано 01:39
    gpi написал:
    Сделайте их высоту равной 0
    При проектировании отчета или в скрипте?
  • gpigpi
    отредактировано 01:39
    Всё равно

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

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