Показать сообщение отдельно
Старый 28.06.2013, 14:30   #1  
IKA is offline
IKA
Участник
 
359 / 65 (3) ++++
Регистрация: 15.03.2006
Отчет с динамич высотой контролов
Может, кому сэкономит время, тк я немного "поразвлекалась" , пока нашла решение.
Задача:
Есть отчет, в котором один из контролов имеет дин высоту. Отчет-сетка т.е выглядит как таблица с разными по высоте строками , высота строки определяется высотой контрола с дин высотой. Графика для отрисовки таблицы создается с помощью Box+ vertical Lines
Проблема:
Для того, чтобы высота строк менялась динамически, и соответствеенно изменялась высота Box, и растягивались линии, логично выставить Height=ColumnHeight у контролов. Все работает, но я так и не поняла , что определяет ColumnHeight, в результате высота строк, что бы я ни делала - выше высоты контролов с тексом приблизительно на 1.5 символа (см описание проблемы тут) . Пользователи не оч рады, тк им не понятно, почему строки в 2 раза выше, чем должны были бы по логике вещей быть("можно было бы в 2 раза больше данных на листе уместить!")
Решение: (основано на замечательном предложении Dronas)
1) Ставим DynHeight на контроле, кот изменяет высоту
2) Всем shapes устанавливаем ColumnHeight
3) На секции указываем высоту 0mm
4) в executeSection пишем:
MySection.height100mm(MyDynHeightControl.heightOfWordWrappedString100mm(StringValue_In_MyDynHeightControl) + 200);
PS: тут я накинула к высоте 200, чтобы текст не был оч близко к границе секции.

5) У всех остальных контролов ставим Height = Auto ( + можно TopMargin = 1mm, BottomMargin=1mm,чтобы контролы не были впритык к границе секции)

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

Ax2009 RU2

Последний раз редактировалось IKA; 28.06.2013 в 14:35.
За это сообщение автора поблагодарили: gl00mie (3).