Неизвестным кол-во колонок и длинные тексты в них
Как вывести в отчет таблицу с неизвестным количеством полей и, возможно, с очень длинными текстами в полях? Я нашла способ, но он не совсем устраивает.
Сначала пыталась использовать TfrxCrossView. Неуместившиеся колонки переносятся на другую страницу, но с большими текстами проблема. Если текст в поле состоит из большого количества не очень длинных строк, так что такая запись по высоте не помещается на странице отчета, то все отрисовывается очень странно: печатаются полупустые страницы, содержимое колонок выводится не под заголовками этих колонок, что-то накладывается на другое. Если же текст в поле - это одна очень длинная строка, то вообще при построении отчета выдается Access Violation. Можно ли со всем этим как-то бороться?
Мне удалось получить отчет следующим способом. В режиме run-time создать страницу, на нее поместить TfrxMasterData, а на него TfrxMemoView, соответствующие полям таблицы. Для полей, которые не умещаются на этой странице, таким же образом создается новая страница, куда помещается TfrxMasterData, а на него другие TfrxMemoView, и т.д. Чтобы бэнды TfrxMasterData на всех страницах для одной записи растягивались одинаково, приходится еще помещать на каждую страницу все остальные поля, но делать их невидимыми (делать шрифт белым).
А еще нужно, чтобы выводились сначала страница с уместившимися колонками, затем страницы с теми же записями с неуместившимися колонками, затем аналогично страницы со следующими записями. Но при моем способе так, видимо, не получится.
Можно ли каким-то образом все это сделать?
Сначала пыталась использовать TfrxCrossView. Неуместившиеся колонки переносятся на другую страницу, но с большими текстами проблема. Если текст в поле состоит из большого количества не очень длинных строк, так что такая запись по высоте не помещается на странице отчета, то все отрисовывается очень странно: печатаются полупустые страницы, содержимое колонок выводится не под заголовками этих колонок, что-то накладывается на другое. Если же текст в поле - это одна очень длинная строка, то вообще при построении отчета выдается Access Violation. Можно ли со всем этим как-то бороться?
Мне удалось получить отчет следующим способом. В режиме run-time создать страницу, на нее поместить TfrxMasterData, а на него TfrxMemoView, соответствующие полям таблицы. Для полей, которые не умещаются на этой странице, таким же образом создается новая страница, куда помещается TfrxMasterData, а на него другие TfrxMemoView, и т.д. Чтобы бэнды TfrxMasterData на всех страницах для одной записи растягивались одинаково, приходится еще помещать на каждую страницу все остальные поля, но делать их невидимыми (делать шрифт белым).
А еще нужно, чтобы выводились сначала страница с уместившимися колонками, затем страницы с теми же записями с неуместившимися колонками, затем аналогично страницы со следующими записями. Но при моем способе так, видимо, не получится.
Можно ли каким-то образом все это сделать?
Комментарии
Cross такие ячейки не может рисовать в принципе. Надо использовать старые кросс-бэнды и выставлять флаг "Разрываемый" у дата-бэнда. См. пример отчета в демке demos\main, "Old-style crosstab"