Форматирование при использовании Tfrxsubreport
Здравствуйте!
Отчет представляет из себя один band (MasterData). На нем размещены три поля из источника данных и одно поле - TfrxSubReport. В качестве subreport-а является один band, на котором размещены 5 полей.
В прикреплении к этому сообщению привожу фрагмент сформированного отчета.
Прокомментирую несколько мест отчета (на картинке помечены красным цветом), отображение которых не нравится и хотелось бы поменять:
1. Вот именно так надо, чтобы отображалось. Но в данном случае просто совпало, что текст в ячейки из Masterdata занимает несколько строк и высота ячейки совпала с суммарной высотой двух ячеек из Datail.
2. Высота ячейки из MasterData немного превышает суммарную высоту ячеек из Datail. Необходимо, чтобы последняя ячейка детальных записей растянулась по высоте до нижнего края master-ячейки.
3. Ситуация, аналогичная ситуации из 2.
4. Ситуация, аналогичная 2 и 3.
Для ячеек из MasterData установлено свойство "StretchMode = smMaxHeight". Для ячейки frxSubReport такого свойства нет.
Для бэнда, который является детальными данными, установлено свойство "Stretched = True", а для его ячеек также установлены свойства "StretchMode = smMaxHeight".
Вопрос, как правильно настроить отчет для желаемого отображения?
Отчет представляет из себя один band (MasterData). На нем размещены три поля из источника данных и одно поле - TfrxSubReport. В качестве subreport-а является один band, на котором размещены 5 полей.
В прикреплении к этому сообщению привожу фрагмент сформированного отчета.
Прокомментирую несколько мест отчета (на картинке помечены красным цветом), отображение которых не нравится и хотелось бы поменять:
1. Вот именно так надо, чтобы отображалось. Но в данном случае просто совпало, что текст в ячейки из Masterdata занимает несколько строк и высота ячейки совпала с суммарной высотой двух ячеек из Datail.
2. Высота ячейки из MasterData немного превышает суммарную высоту ячеек из Datail. Необходимо, чтобы последняя ячейка детальных записей растянулась по высоте до нижнего края master-ячейки.
3. Ситуация, аналогичная ситуации из 2.
4. Ситуация, аналогичная 2 и 3.
Для ячеек из MasterData установлено свойство "StretchMode = smMaxHeight". Для ячейки frxSubReport такого свойства нет.
Для бэнда, который является детальными данными, установлено свойство "Stretched = True", а для его ячеек также установлены свойства "StretchMode = smMaxHeight".
Вопрос, как правильно настроить отчет для желаемого отображения?
Комментарии
Почитайте статью http://fast-report.com/ru/forum/index.php?showtopic=7096
Как я сейчас строю отчет.
Перед началом вывода подчиненных записей запоминаю координату (y := Engine.CurY).
При выводе подчиненных записей вычисляю их суммарную высоту.
После окончания вывода подчиненных записей вывожу первичную запись, возвращаясь на запомненную координату (Engine.CurY := y).
Что не так. При выводе подчиненных записей может произойти смена страницы. В этом случае я перехожу на координату Y не предыдущей страницы, а уже текущей, - все отображение, кончно, портится.
А можно ли как-нибудь перейти на предыдущую страницу, есть ли что-то наподобие Engine.CurPage ?
А еще лучше, может быть у кого-нибудь есть инетересные примеры построения отчетов на механизме ManualBuild ? Поделитесь, пожалуйста.
Да, я тоже начал было двигаться в этом направлении.
Я создал глобальную переменную. При выводе первой детальной ячейки обнуляю эту переменную. При выводе каждой детальной ячейки увеличиваю значение на высоту выводимой ячейки. Но когда дохожу до последней, как узнать высоту родительской ячейки?
Если есть такая возможность, не могли бы Вы прислать похожий пример?
И если в сабрепорте она меньше, то я растягиваю последнюю ячейку.
Моя реализация мне самому не очень нравится, я её пока что обтачиваю... если же Вы найдёте какое-то красивое решение, обязательно сообщите здесь :-)
:-) Не совсем понятно, как алгоритм решения "задачи о назначении" связан с форматированием при печати моего отчета.
Снова не понял. Понял, о чем идет речь. Но к моему отчету не имеет никакого отношения.
У меня уже есть данные. Эти данные выводятся, за исключением некоторых строк, высоту которых необходимо увеличить. Требуется только лишь техническая реализация этого момента. А именно:
1. Если выводить отчет, используя Subreport, то необходимо корректно обрабатывать процесс вывода строк (анализ высоты строк и т.д.). у меня это сделать не получается, так при выводе ячейки первичной записи DataSet-а, я еще не знаю будущую ее высоту, а она может поменяться из-за детальных записей.
2. Если строить отчет вручную, то у меня не получается реализовать следующий момент. При выводе ячеек детальных записей страница отчета может поменяться. После вывода всех ячеек детальных записей (и расчета их суммарной высоты) надо вывести master-ячейку, но эта ячейка должна "начинаться" на предыдущей странице, а "оканчиваться" на текущей.
Еще раз схематично проиллюстрирую результат формирования отчета при использовании subreport.
На первой картинке изображено то, как выводится отчет, на второй - то, как необходимо (после ячеек "1.3" и "2.1" нельзя оставлять пустое место)