private void moveSection(cReportPaintObject paintObj,
float x,
float y,
float minBottom,
float maxBottom,
cReportSection secToMove,
bool isNew)
{
float oldHeight = 0;
m_dataHasChanged = true;
cReportAspect w_aspect = paintObj.getAspect();
// if Y is contained by the allowed range everything is ok
//
if (y >= minBottom && y <= maxBottom) {
w_aspect.setTop(y - m_offY);
// because the top has been set to real dimensions
// of the screen we must move to the offset
// of its section
//
w_aspect.setTop(w_aspect.getTop() + w_aspect.getOffset());
}
else {
// if we have moved to top
//
if (y < minBottom) {
w_aspect.setTop(minBottom);
// because the top has been set to real dimensions
// of the screen we must move to the offset
// of his section
//
w_aspect.setTop(w_aspect.getTop() + w_aspect.getOffset());
}
else {
w_aspect.setTop(maxBottom);
}
}
// TODO: remove after more testing - aligning the sections has an undesired result: the last section line is shrinked after five resize actions
//
// m_paint.alingToGrid(paintObj.getKey());
if (isNew) {
oldHeight = 0;
}
else {
oldHeight = secToMove.getAspect().getHeight();
}
// for the detail section and every other section which is over the detail
// we only change the height, for all sections bellow the detail we need to
// change the height and top becasuse wen we strech a section it needs to move
// to the bottom of the report
//
secToMove.getAspect().setHeight(w_aspect.getTop()
+ cGlobals.C_HEIGHT_BAR_SECTION
- secToMove.getAspect().getTop());
// every section bellow this section needs to update its top
//
float offsetTop = 0;
w_aspect = secToMove.getAspect();
offsetTop = oldHeight - (w_aspect.getHeight() + m_newSecLineOffSet);
switch (secToMove.getTypeSection()) {
// if the section is a footer we move to bottom
// (OJO: footer sections, no group footers)
//
case csRptSectionType.FOOTER:
case csRptSectionType.MAIN_FOOTER:
w_aspect.setTop(w_aspect.getTop() + offsetTop);
// OJO: this has to be after we have changed the top of the section
// to allow the paint object to reflect the change
//
// we move the controls of this section
//
pChangeHeightSection(secToMove, oldHeight);
// move the section
//
pChangeBottomSections(secToMove, offsetTop);
// for headers, group headers, group footers and the detail section we move to top
//
break;
default:
// move all controls in this section
//
pChangeHeightSection(secToMove, oldHeight);
offsetTop = offsetTop * -1;
pChangeTopSections(secToMove, offsetTop);
break;
}
// finaly we need to update the offset of every section,
// apply it to every object paint in m_Paint
//
float pageHeight = 0;
cReportPaperInfo w_paperInfo = m_report.getPaperInfo();
pGetOffSet(CSReportPaint.cGlobals.getRectFromPaperSize(
m_report.getPaperInfo(),
w_paperInfo.getPaperSize(),
w_paperInfo.getOrientation()).Height,
out pageHeight);
pRefreshOffSetInPaintObjs();
m_paint.setGridHeight(pageHeight);
}