на одной странице

отредактировано 12:46 Раздел: FastReport 2.xx VCL
Есть Group Header и Group Footer, в QR есть свойство, которое определает, что 2 банда будут напечатаны строго на одной странице. Есть ли в FR такое свойство? Хочу чтоб группа печаталась строго на одной странице, те если не умещается, то Group Header на новуб страницу.
Пока сделал скрипт в ОнПринт для Group Header, где определяю сколько осталось до конца страницы и если меньше некоего среднего(максимального) размера группы вызываю NEWPAGE
ЗЫ FR 2.47

Комментарии

  • отредактировано 12:46
    Попробуй свойство FormNewPage у Group бендов.
  • отредактировано 12:46
    во блин
    я ж говорю, что не ...
    а, может вас смутило слово "строго", сори
    мне не надо, чтоб одна группа - одна страница
    , мне надо, чтоб одна группа не могла распологаться на разных страницах
  • отредактировано 12:46
    написал:
    мне не надо, чтоб одна группа - одна страница, мне надо, чтоб одна группа не могла распологаться на разных страницах
    Тебе про это и говорят - поставь признак "Формировать новую страницу" у Group header-a
    Если группа не уместилась на одной странице и если ты хочешь чтобы на второй странице заголовок тоже был, то поставь у Group header-a "Выводить на всех страницах"
  • отредактировано 12:46
    написал:
    Тебе про это и говорят - поставь признак "Формировать новую страницу" у Group header-a
    тогда будет по одной группе на странице - это не надо
    поставил RepeatHeader := true - ничего не изменилось, заголовок на новой странице не повторяется
    ну и хрен с ним, мне это и не надо
    повторяю ещё раз:
    надо, чтоб группа не разрывалась и печаталась на одной странице

  • отредактировано 12:46
    Противоречие какое-то наблюдается:
    написал:
    тогда будет по одной группе на странице - это не надо 
    надо, чтоб группа не разрывалась и печаталась на одной странице
  • отредактировано 12:46
    в чём же противоречие:
    1)одна группа - одна страница
    т.е. группа распологается на странице целиком, следующая группа - следующая страница,...
    2) что надо мне
    мне не надо, чтоб следующая группа всегда формировала новую страницу
    мне надо, чтоб группа помещалась на странице вся, те, если она не помещается целиком, то перемещалась на следующую целиком
  • отредактировано 12:46
    написал:
    мне надо, чтоб группа помещалась на странице вся, те, если она не помещается целиком, то перемещалась на следующую целиком
    Сам то понял что сказал ? ;) )
    Если группа не помещается на страницу целиком - ты думаешь она поместится тебе целиком на следующую страницу ?
  • отредактировано 12:46
    написал:
    Сам то понял что сказал ? ;) )
    а ты сам подумай, какие ещё могут быть варианты ;)
    может быть на этой странице, сверху(как бы для тебя попонятней сказать), до этой группы, которая целиком не помещается, те на одну страницу в среднем помещяется 3,5 группы, так вот мне не надо, чтоб на странице было 3,5, мне надо, чтоб было 3, а след группа(которая не помещается ) перелезла на другую страницу.
  • отредактировано 12:46
    МУЖИКИ (-=Serg=- и Vano) вы чего-то сильно тормозите. Человек же вам толком объяснил, что он хочет и чтоь ваш вариант не подходит.

    TO Smirnov Anton
    Теперь по сути. В 2.* версиях такого свойства нет и не было (в 3.* не помню - не смотрел), поэтому это всегда делали скриптом в бэнде - примерно так, как это сделал ты (это даже в стандартных демках описано). Так что все ты сделал правильно.
  • отредактировано 12:46
    вспомнил, в QR это было Link[ed]Band называлось
    спешу не соглачится, сделал не правильно, не до конца
    ведь высота группы - величина переменная, так что я брал максимум(хорошо, что он у меня естьи не большой), но всё ж неправильно это
    вот я и спрашиваю, раз нет стандартной фичи, то как бы мне узнать высоту группы, и если она больше чем осталось места на странице, то сфорсировать новую страницу
  • отредактировано 12:46
    Я же написал как!

    Примерно так:
    в скрипте заголовка группы:
    begin
      Inc(i);
      if not FinalPass then
        Arr[i] := Height
      else if FreeSpace < Arr[i] then
        NewPage;
    end
    

    в скриптах детали и конца группы (если есть):
    if not FinalPass then
        Arr[i] := Arr[i] + Height;
    

    Ну и само собой перемнную i нужно перед всем этим делом обнулить (в скрипте титл-бенда или еще где)
  • отредактировано 12:46
    Спасибо.
    Наконец-то дошли руки до двухпроходного отчёта(Еле нашёл, где его включить ;) )
    всё почти так, только в груп футере текст такой
    begin
    if not FINALPASS   then
       Arr[i] := GroupFooter1.Top + GroupFooter1.Height - Arr[i];
    end
    
  • отредактировано 12:46
    Smirnov Anton написал:
    только в груп футере текст такой
    begin
    if not FINALPASS   then
       Arr[i] := GroupFooter1.Top + GroupFooter1.Height - Arr[i];
    end
    
    А зачем это? То, что было, неправильно работало? Это же почти одно и то же (твой GroupFooter1.Top накапливается за счет данных из MasterData)

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

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