Printing subdetail footer has been fixed

This commit is contained in:
Arin Alexander 2016-04-12 20:37:47 +04:00
parent 43a62bdb7f
commit 166b18be49
2 changed files with 13 additions and 3 deletions

View File

@ -140,7 +140,8 @@ qreal ReportRender::maxColumnHeight()
} }
ReportRender::ReportRender(QObject *parent) ReportRender::ReportRender(QObject *parent)
:QObject(parent), m_renderPageItem(0), m_pageCount(0), m_currentColumn(0) :QObject(parent), m_renderPageItem(0), m_pageCount(0), m_currentColumn(0),
m_lastDataBand(0), m_lastRenderedFooter(0)
{ {
initColumns(); initColumns();
} }
@ -295,6 +296,9 @@ void ReportRender::renderBand(BandDesignIntf *patternBand, ReportRender::DataRen
startNewPage(); startNewPage();
} }
if (patternBand->isFooter())
m_lastRenderedFooter = patternBand;
BandDesignIntf* bandClone=renderData(patternBand); BandDesignIntf* bandClone=renderData(patternBand);
patternBand->emitBandRendered(bandClone); patternBand->emitBandRendered(bandClone);
@ -348,6 +352,7 @@ void ReportRender::renderBand(BandDesignIntf *patternBand, ReportRender::DataRen
void ReportRender::renderDataBand(BandDesignIntf *dataBand) void ReportRender::renderDataBand(BandDesignIntf *dataBand)
{ {
IDataSource* bandDatasource = 0; IDataSource* bandDatasource = 0;
m_lastRenderedFooter = 0;
if (dataBand && !dataBand->datasourceName().isEmpty()) if (dataBand && !dataBand->datasourceName().isEmpty())
bandDatasource = datasources()->dataSource(dataBand->datasourceName()); bandDatasource = datasources()->dataSource(dataBand->datasourceName());
@ -399,8 +404,10 @@ void ReportRender::renderDataBand(BandDesignIntf *dataBand)
} }
m_reprintableBands.removeOne(dataBand->bandHeader()); m_reprintableBands.removeOne(dataBand->bandHeader());
renderBand(dataBand->bandFooter(),StartNewPageAsNeeded);
renderGroupFooter(dataBand); renderGroupFooter(dataBand);
renderBand(dataBand->bandFooter(),StartNewPageAsNeeded);
datasources()->deleteVariable(varName); datasources()->deleteVariable(varName);
} else if (bandDatasource==0) { } else if (bandDatasource==0) {
renderBand(dataBand,StartNewPageAsNeeded); renderBand(dataBand,StartNewPageAsNeeded);
@ -469,7 +476,9 @@ void ReportRender::renderChildFooter(BandDesignIntf *parent, BandPrintMode print
if (band->metaObject()->indexOfProperty("printAlways")>0){ if (band->metaObject()->indexOfProperty("printAlways")>0){
printAlways=band->property("printAlways").toBool(); printAlways=band->property("printAlways").toBool();
} }
if (printAlways == (printMode==PrintAlwaysPrintable)) renderBand(band,StartNewPageAsNeeded);
if ( (band != m_lastRenderedFooter) && (printAlways == (printMode == PrintAlwaysPrintable)) )
renderBand(band,StartNewPageAsNeeded);
} }
} }

View File

@ -162,6 +162,7 @@ private:
qreal m_reportFooterHeight; qreal m_reportFooterHeight;
int m_renderedDataBandCount; int m_renderedDataBandCount;
BandDesignIntf* m_lastDataBand; BandDesignIntf* m_lastDataBand;
BandDesignIntf* m_lastRenderedFooter;
bool m_renderCanceled; bool m_renderCanceled;
QVector<qreal> m_maxHeightByColumn; QVector<qreal> m_maxHeightByColumn;
QVector<qreal> m_currentStartDataPos; QVector<qreal> m_currentStartDataPos;