Ограничение по кол-ву строк на листе

отредактировано 08:18 Раздел: FastReport 2.xx VCL
Мне нужно сделать, чтобы количество строк (секция Master Data) на листе было определенное. Например 3. Если количество строк болше трех то начинать новую страницу, если меньше, то печатать пустые строки.
Подскажите, как такое можно сделать.

Комментарии

  • Andrew_ShAndrew_Sh г.Минск
    отредактировано August 2005
    Requiem написал:
    Мне нужно сделать, чтобы количество строк (секция Master Data) на листе было определенное. Например 3. Если количество строк болше трех то начинать новую страницу, если меньше, то печатать пустые строки.
    Подскажите, как такое можно сделать.
    В обработчкие OnBeforePrint страницы
    begin
      ROWS_PER_PAGE := 3;
      iRowsOnPage := 0;
    end
    


    В обработчкие OnBeforePrint для MasterData
    begin
      iRowsOnPage := iRowsOnPage + 1;
      if iRowsOnPage > ROWS_PER_PAGE then
      begin
        NewPage;
        iRowsOnPage := 1;
      end;
    end
    
    Requiem написал:
    ...., если меньше, то печатать пустые строки.

    В простейшем случае, если в отчете используется только MasterData без GroupHeader, то допечатывать пустые строки надо только на последнем листе.

    Для этого добавьте еще один MasterData с Виртуальным источником данных и количеством строк = 3. Разместите на MasterData необходимые memo и в OnBeforePrint бэнда вставьте код:
    begin
      iRowsOnPage := iRowsOnPage + 1;
      Visible := iRowsOnPage <= ROWS_PER_PAGE;
    end
    
  • отредактировано 08:18
    Спасибо, все получилось.
  • отредактировано August 2005
    У меня еще один вопросик. Можно как то сделать, чтобы строка с переносом расценивалась как 2, 3, 4 и т.д строк?
  • Andrew_ShAndrew_Sh г.Минск
    отредактировано 08:18
    Requiem написал:
    У меня еще один вопросик. Можно как то сделать, чтобы строка с переносом расценивалась как 2, 3, 4 и т.д строк?
    нет. А к чему такие сложности. Возможно у задачи есть другие пути решения. ;)
  • отредактировано 08:18
    Хорошо, задам вопрос по другому. Для примера, у меня на каждой странице должно быть 4 строки. В программе я определяю, что у меня в одной строке данные не влезли в memo и занимают 2 строки. Мне нужно изменить максимальное количество строк на этой странице на 3, но на следущей, их опять должно быть 4.

    И попутно еще один вопрос. Как мне сделать, чтобы MasterFooter выходил на каждой странице?

    Спасибо за оказываемую помощь.
  • Andrew_ShAndrew_Sh г.Минск
    отредактировано 08:18
    Requiem написал:
    И попутно еще один вопрос. Как мне сделать, чтобы MasterFooter выходил на каждой странице?
    Поместить на страницу бэнд 'Page Footer'. В обработчике OnBeforePrint этого бэнда написать:
    begin
      MasterFooter1.Visible := true;
      ShowBand(MasterFooter1);
      MasterFooter1.Visible := false;
    end
    

    вместо MasterFooter1 вставьте название вашего MasterFooter-бэнда.
    В скрипте строка MasterFooter1.Visible := false; нужна для того, чтобы MasterFooter не печатался еще раз на последнем листе.
    Насколько понял, вы хотите выводить в MasterFooter результаты по странице?
    В этом случае использование агрегатных функций в мемо на MasterFooter не подойдет, результаты по листу и/или с накоплением надо считать в скрипте с использованием переменных, которые потом и использовать в Memo на MasterFooter.
  • Andrew_ShAndrew_Sh г.Минск
    отредактировано 08:18
    Requiem написал:
    Хорошо, задам вопрос по другому. Для примера, у меня на каждой странице должно быть 4 строки. В программе я определяю, что у меня в одной строке данные не влезли в memo и занимают 2 строки. Мне нужно изменить максимальное количество строк на этой странице на 3, но на следущей, их опять должно быть 4.
    Или я в арифметике чего-то не понимаю или у вас действительно очень путанный алгоритм. ;) Сначала говорите, что на странице должны быть 4 строки, потом пишете, что если в мемо 2 строки, то макс.число строк должно быть = 3, хотя 4-2=2, т.е. надо допечатать еще 2 строки или 3-2=1 - одну строку??? ;)
    Вы уж определитесь пожалуйста.
    И еще, насколько я понял, под строками вы имеете ввиду количество строк в мемо, а не количество строк в Dataset для MasterData?

    Уточнитесь и будем пробовать решать ваши задачи.

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

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