Child-бэнды |
Рассмотрим случай, когда одна из строк в отчете типа "этикетка" может иметь переменный размер. Чтобы смоделировать ситуацию на нашем примере, уменьшим ширину объекта Bio."Common Name" до 2.5см и включим у него опцию "Растягивание". Также включим растягивание у бэнда "Данные 1 уровня". Также включим все линии рамки у всех объектов, чтобы лучше был виден принцип растягивания. Получится отчет следующего вида:
Мы видим, что объект в первом случае содержит длинный текст и поэтому он растянулся на две строки. При этом лежащий под ним объект, привязанный к полю Bio."Length (cm)", сместился ниже. Произошло это потому, что по умолчанию все объекты имеют включенное свойство "Смещение" (или ShiftMode = smAlways в инспекторе объектов). Такие объекты смещаются вниз, если над ними есть растягиваемый объект (объект "Текст" с включенным свойством "Растягивание"). Высота, на которую смещается объект, зависит от того, насколько сильно растягивается лежащий над ним объект.
Однако в нашем случае это неприемлемо – нам нужно, чтобы объект с текстом "Длина, см:" также смещался. Для этого в FastReport есть специальный тип бэнда – дочерний бэнд, или Child-бэнд. Он привязывается к основному бэнду и выводится после него. Модифицируем наш отчет:
Для того, чтобы связать основной бэнд с дочерним, у бэнда "Данные 1 уровня" установим в инспекторе объектов свойство Child = Child1. Теперь каждый раз при печати основного бэнда будет выводиться и дочерний:
Как видно, теперь заголовок печатается там, где нужно. Для того, чтобы избежать переноса child-бэнда на следующую страницу (т.е. отрыва его от основного бэнда), установите у основного бэнда свойство "Не отрывать child" (KeepChild в инспекторе объектов).
|