private void pChangeTopSection(cReportSection rptSec,
float offSetTopSection,
bool bChangeTop,
bool bZeroOffset)
{
float newTopCtrl = 0;
float offSet = 0;
float bottom = 0;
float secTop = 0;
float secLnHeigt = 0;
float offSecLn = 0;
cReportPaintObject paintSec;
cReportAspect secAspect = rptSec.getAspect();
secAspect.setTop(secAspect.getTop() + offSetTopSection);
offSet = rptSec.getSectionLines().item(1).getAspect().getTop() - secAspect.getTop();
secTop = secAspect.getTop();
for (int _i = 0; _i < rptSec.getSectionLines().count(); _i++) {
cReportSectionLine rptSecLine = rptSec.getSectionLines().item(_i);
cReportAspect secLineAspect = rptSecLine.getAspect();
// footers grow to top
//
if (rptSec.getTypeSection() == csRptTypeSection.CSRPTTPMAINSECTIONFOOTER
|| rptSec.getTypeSection() == csRptTypeSection.CSRPTTPSCFOOTER) {
if (bChangeTop) {
if (bZeroOffset) {
offSet = 0;
}
}
else {
if (rptSecLine.getRealIndex() >= m_indexSecLnMoved && m_indexSecLnMoved > 0) {
bChangeTop = true;
}
}
// every other section grow to bottom
//
}
else {
offSecLn = (secTop + secLnHeigt) - secLineAspect.getTop();
if (offSetTopSection != 0) {
offSecLn = 0;
}
}
secLineAspect.setTop(secTop + secLnHeigt);
secLnHeigt = secLnHeigt + secLineAspect.getHeight();
if (rptSecLine.getKeyPaint() != "") {
paintSec = m_paint.getPaintSections().item(rptSecLine.getKeyPaint());
paintSec.getAspect().setTop(secLineAspect.getTop() + secLineAspect.getHeight() - cGlobals.C_HEIGHT_BAR_SECTION);
}
else {
paintSec = m_paint.getPaintSections().item(rptSec.getKeyPaint());
}
if (paintSec != null) {
paintSec.setHeightSecLine(secLineAspect.getHeight());
}
for (int _j = 0; _j < rptSecLine.getControls().count(); _j++) {
cReportControl rptCtrl = rptSecLine.getControls().item(_j);
cReportAspect ctrLabelAspect = rptCtrl.getLabel().getAspect();
if (rptCtrl.getIsFreeCtrl()) {
newTopCtrl = (ctrLabelAspect.getTop() - offSet) + offSecLn;
}
else {
newTopCtrl = (ctrLabelAspect.getTop() + ctrLabelAspect.getHeight() - offSet) + offSecLn;
}
bottom = secLineAspect.getTop() + secLineAspect.getHeight();
if (newTopCtrl > bottom) {
newTopCtrl = bottom - ctrLabelAspect.getHeight();
}
else {
newTopCtrl = (ctrLabelAspect.getTop() - offSet) + offSecLn;
}
if (newTopCtrl < secLineAspect.getTop()) { newTopCtrl = secLineAspect.getTop(); }
ctrLabelAspect.setTop(newTopCtrl);
if (m_paint.getPaintObject(rptCtrl.getKeyPaint()) != null) {
m_paint.getPaintObject(rptCtrl.getKeyPaint()).getAspect().setTop(ctrLabelAspect.getTop());
}
}
}
// when a group is added the first to get here is the header
// and the footer has not have a section yet
//
if (rptSec.getKeyPaint() == "") { return; }
cReportAspect w_aspect = rptSec.getAspect();
// we only draw the bottom line of the sections
//
paintSec = m_paint.getPaintSections().item(rptSec.getKeyPaint());
if (paintSec != null) {
paintSec.getAspect().setTop(w_aspect.getTop()
+ w_aspect.getHeight()
- cGlobals.C_HEIGHT_BAR_SECTION);
paintSec.setHeightSec(w_aspect.getHeight());
}
}