2014-11-18 4 views
0

У меня есть типичный отчет FastReport со столом внутри диапазона MasterData. Стол довольно длинный и узкий, так что я думаю о том, разделив ее пополам и поместить нижнюю половину рядом с верхней половиной, как так:Как разбить таблицу на два столбца в FastReport?

A  A D 
B  B E 
C -> C F 
D 
E 
F 

Там подвох - строки на столе являются 1-3 линии высокие.

Я пробовал использовать свойство MasterData.Columns. Две проблемы с этим: разбиение таблицы по строкам, что делает ее AB CD EF, что неприемлемо, также не учитывает высоты строк, поэтому, если, например, строка A выше других, тогда возникает нежелательный разрыв после D на второй колонке (несмотря на StretchMode = smMaxHeight).

Моя версия FastReport - 4.7.

ответ

1

У FastReport есть два способа сделать отчет о столбцах.

Вы уже обнаружили одну из них «колонковые колонны» - этот метод печатает группу слева направо, а затем вниз.

Второй способ - столбцы страницы. Столбец страницы FR печатает полосу до конца страницы, а затем переходит к следующему столбцу. Я считаю этот метод именно тем, что вы ищете. Чтобы сделать столбцы страниц, просто дважды щелкните страницу в дизайнере отчетов, выберите вкладку других опций и установите количество столбцов, которые вы хотите распечатать.

+0

Это звучит как хорошее решение, но есть способ учета строк переменной высоты, поэтому, если строки ABC имеют 5 см каждый, а строки DEF - всего 1 см, разделение производится как AB/CDEF. ? – Kromster

+0

Да, возможно, но только с использованием кода сценария. – Den

+0

Вы должны установить «Double Pass» в параметрах отчета и в первом проходе рассчитать высоты и заполнить, например, в списке (например, «Добавить» (линия полосы, высота на странице)). На втором проходе вам нужно посмотреть заполненные значения, а если высота слишком велика, вызовите метод Report.Engine.NewColumn. – Den