Попытка понять алгоритм формирования отчета ...
Добавлено: 01 Апрель 2012, 0:00
Привет всем !
Не раз уже замечал - что когда хочешь сделать средствами Clarion, что то нестандартное
(с точки зрения его разработчиков), начинаются, даже не проблемы, а чудеса ...
Вопрос чисто теоритический, для обсуждения, если кому-нибудь интересно это интересно.
Есть некий элементарный отчет, в нем итог по листу PageFooter.
По описанию алгоритм формирования печатного листа следующий (упрощенно):
- формируется пустой лист, на него сразу выводится Form (если есть).
- далее перед первым выводом структуры Detail выводится PageHeader (если есть)
- далее осуществляется заполнение зоны печати структурами Detail с учетом Break (если есть)
- когда очередная структура Detail или ее компонент не может быть размещена на печатном листе - печатается PageFooter.
- формирование страницы завершено, добавляется новый лист и все начинается сначала.
Ничего не упустил ? Вроде бы все просто и понятно. Теперь попробуем выйти за рамки этой красивой идеи.
Структура PageFooter использует абсолютные координаты - это нормально и понятно, иначе она не смогла бы, в общем случае, быть напечатана.
Но нигде не сказано, что PageFooter ОБЯЗАТЕЛЬНО должен быть напечатан в одном и том же месте на всех листах.
Пробуем, по какому-нибудь признаку (например данные в выводимом Detail) изменить координаты PageFooter{Prop:YPos}.
Структура PageFooter послушно изменяет местополжение ... но в отчете НА ВСЕХ ЛИСТАХ она оказывается в том месте, которое указано последним !
Причем данные на всех PageFooter соответсвуют своим страницам (например сумма по листу) !
Это полностью не соответсвует алгоритму формирования печатного листа и наводит на мысль, что реальное формирование PageFooter
на всех листах производится только при закрытии отчета по текущим координатам ... Или я в чем-то ошибcя ?
Кто-нибудь знает способ напечатать PageFooter в разных местах на листах одного отчета ? Заранее спасибо ....
Не раз уже замечал - что когда хочешь сделать средствами Clarion, что то нестандартное
(с точки зрения его разработчиков), начинаются, даже не проблемы, а чудеса ...
Вопрос чисто теоритический, для обсуждения, если кому-нибудь интересно это интересно.
Есть некий элементарный отчет, в нем итог по листу PageFooter.
По описанию алгоритм формирования печатного листа следующий (упрощенно):
- формируется пустой лист, на него сразу выводится Form (если есть).
- далее перед первым выводом структуры Detail выводится PageHeader (если есть)
- далее осуществляется заполнение зоны печати структурами Detail с учетом Break (если есть)
- когда очередная структура Detail или ее компонент не может быть размещена на печатном листе - печатается PageFooter.
- формирование страницы завершено, добавляется новый лист и все начинается сначала.
Ничего не упустил ? Вроде бы все просто и понятно. Теперь попробуем выйти за рамки этой красивой идеи.
Структура PageFooter использует абсолютные координаты - это нормально и понятно, иначе она не смогла бы, в общем случае, быть напечатана.
Но нигде не сказано, что PageFooter ОБЯЗАТЕЛЬНО должен быть напечатан в одном и том же месте на всех листах.
Пробуем, по какому-нибудь признаку (например данные в выводимом Detail) изменить координаты PageFooter{Prop:YPos}.
Структура PageFooter послушно изменяет местополжение ... но в отчете НА ВСЕХ ЛИСТАХ она оказывается в том месте, которое указано последним !
Причем данные на всех PageFooter соответсвуют своим страницам (например сумма по листу) !
Это полностью не соответсвует алгоритму формирования печатного листа и наводит на мысль, что реальное формирование PageFooter
на всех листах производится только при закрытии отчета по текущим координатам ... Или я в чем-то ошибcя ?
Кто-нибудь знает способ напечатать PageFooter в разных местах на листах одного отчета ? Заранее спасибо ....