BOB писал(а):...но там еще нужно указать правильно предыдущую структуру...
А вот об этом немного поподробней. Согласно документации, предыдущие структуры задаются «целочисленной константой или константным выражением, определяющие сколько предыдущих структур должно быть напечатано на странице». И согласно АВС шаблону, если в поле With prior установить какое-нибудь, отличное от нуля значение, например 1, то в сгенерированном этим шаблоном коде мы увидим: DETAIL,WITHPRIOR(1),AT(….
В моем проекте на данный момент реализовано, касательно рассматриваемой проблемы, следующее:
1. Имеется детайл заголовка. В нем находиться текстовое поле с атрибутом resize, в которое из внешнего файла заголовков конструктора вноситься текст заголовка, а также все сопутствующие атрибуты, такие как цвет, шрифт, размер и т.д. Т.к. длина заголовка равно как и размер шрифта заранее не могут быть известны, то, в идеале, нужно обеспечить «резиновость» данному Detail’у. Для упрощения, на первом этапе развития программы есть возможность сделать высоту данного детайла фиксированной.
2.Также имеется второй детайл. В нем - текстовое поле с атрибутом resize. В него из внешних файлов (на данный момент из RTF, хранящихся в tps в мемо поле БД, но уже сейчас бросаются серьезные взоры на файлы формата MS Word) заноситься УЖЕ ОТФОРМАТИРОВАННЫЙ ПОЛЬЗОВАТЕЛЕМ текст.
3. Заголовки заголовкам рознь. Это могут быть заголовки тем или глав, которые нужно печатать с новой строки. Но также могут быть заголовки абзацев и параграфов. Вот их-то и нужно выводить сразу же после предыдущего текста. Теоретически здесь ничего сложного не должно было быть, знай - анализируй галочки, поставленный в конструкторе пользователем и применяй или не применяй ENDPAGE(Report,0), но на поверку это оказалось одним из основных камнем преткновения.