Печать нескольких экземпляров одного бэнда (engine.showband)

CouRageCouRage Санкт-Петербург
отредактировано 08:15 Раздел: FastReport .NET
В отчете необходимо пустое место под таблицей заполнить пустыми строками. Для этого можно, например, добавить ChildBand с пустыми ячейками, а потом его несколько раз вывести.
В FR.VCL был метод Engine.ShowBand(). В FR.NET такой фокус, насколько я понимаю, не пройдет. Здесь должна быть четкая иерархия бэндов и не более одного Child для каждого бэнда.
Поэтому, я попробовал поступить как-то так:
ChildBand band = Child1;
for (int i = 0; i < blankCount; ++i)
{
  band.Child = new ChildBand();
  band = band.Child;
}

Но в конструкторе ChildBand() к сожалению нельзя указать бэнд-образец - чтобы создалась копия.

Как можно выйти из данной ситуации ?

Комментарии

  • отредактировано 08:15
    Можно это сделать в скрипте, но я добавлю св-во в ChildBand, чтобы это делалось автоматически. Будет, наверное, в ночном билде.
  • CouRageCouRage Санкт-Петербург
    отредактировано 08:15
    Спасибо.
  • отредактировано 08:15
    Добавил св-во "Заполнять пустое место страницы" у дочернего бэнда. Его можно прицепить к бэнду-подвалу таблицы (или подвалу отчета).
  • CouRageCouRage Санкт-Петербург
    отредактировано 08:15
    Если прицепить к бэнду-подвалу таблицы, то бэнд-подвал печатается раньше, чем идут пустые строки.
  • отредактировано 08:15
    Да, именно так и задумывалось. Нужно как-то иначе?
  • CouRageCouRage Санкт-Петербург
    отредактировано 08:15
    Строки пустого бэнда должны быть продолжением таблицы. Так вроде логично.
    Непонятно, в каких случаях нужно будет напечатать подвал таблицы (с итогами таблицы например) и затем печатать пустые строки до конца страницы.

    P.S. В одном из аналогичных генераторов отчетов видел такую реализацию: там есть отдельный тип бэнда - "Empty Band". Он кладется под бэнд данных и заполняет все свободное пространство до конца страницы, начиная от последней строки таблицы бэнда данных. Это так, для примера, не обязательно делать так.
  • CouRageCouRage Санкт-Петербург
    отредактировано 08:15
    Как дополнительный вопрос:
    Есть какая-то возможность напечатать определнное количество строк какого-то бэнда? Причем кол-во строк задав в крипте. В FR.VCL, например, у бэнда данных есть свойство RowCount.
    Конкретная ситуация: пользователи просят, чтобы в таблице было ровно 10 строк, поэтому в зависимости от кол-ва строк реальных данных нужно печатать определенное кол-во пустых строк.
  • отредактировано 08:15
    Логику уже переделал, в новой сборке будет.
    В FR.Vcl это свойство - ограничитель, а не "расширитель". Если реально строк 5, а задано 10, дополнительные 5 печататься не будут.
    А если реальных данных больше, чем 10?
  • Dracula_DISDracula_DIS Москва
    отредактировано October 2008
    1. В редакторе RichObject - лучше добавить кнопки Ok Cancel. Сейчас приходится 2 раза нажимать, сначало на закрыть окно потом на Сохранить..

    2. Имеем в RichObject некий текст, открываем его, изменяем у части текста стиль на подчеркнутый, выходим, сохраням - изменения не отображаются, при печати - также изменения не отображаются...

    3. в редакторе RichObject большой текст, скрол бар виден, растягиваем форму до тех пор пока скрол исчезнет, теперь уменьшаем форму - скрол не появляется - не отпуская мышь опять расширяем - скрол появляется..

    4. В окне добавления бендов при большом количестве бендов сложно ориентироваться. Предлагаю добавить дерево не только тип бенда но и его имя.
  • Dracula_DISDracula_DIS Москва
    отредактировано 08:15
    Блин, не в тот раздел отписал ((
  • отредактировано 08:15
    1) уговорили :)
    2,3) ничего подобного у меня не наблюдается. Проверяю в демке. Система WinXP SP2
    4) добавлю.
  • CouRageCouRage Санкт-Петербург
    отредактировано October 2008
    написал:
    В FR.Vcl это свойство - ограничитель, а не "расширитель". Если реально строк 5, а задано 10, дополнительные 5 печататься не будут.
    Странно, я всегда там устанавливал нужное кол-во строк бэнду и он столько и печатал. При этом бэнд отвязывался от источника данных.
    написал:
    А если реальных данных больше, чем 10?
    Говорят, что больше 10 в данном случае не может быть никогда :) .
    Кстати, это стандартная ситуация, когда нужно печатать на каком-либо бланке. Если пользователь ввел столько данных , что они на бланк не влезают - это его проблемы.
  • отредактировано 08:15
    Ок, буду думать в этом направлении.
  • CouRageCouRage Санкт-Петербург
    отредактировано 08:15
    написал:
    Можно это сделать в скрипте,
    Александр, не могли бы Вы все-таки написать, как это можно сделать в скрипте.
  • отредактировано 08:15
    Т.к. в текущей сборке метод Engine.ShowBand объявлен как internal, это невозможно. В следующей сборке добавлю метод и, возможно, реализую функционал на уровне ядра.
  • отредактировано October 2008
    Добавил, реализовал, сборка будет ночью.
    Добавление: см. отчет Features/Complete upto N rows
  • CouRageCouRage Санкт-Петербург
    отредактировано 08:15
    Спасибо. Поверил. Работает.

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

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