void Render(ReportDestination destination, Report report)
{
+ Detail lastDetail = null;
bool dontAdvance = false;
bool nil;
level = 0;
for(c = 0; c < ((renderAction == groupStart) ? level : (level + 1)); c++)
{
if(report.groupings._[c].continuation)
+ {
+ if(lastDetail)
+ lastDetail.isLast = true;
AddDetailToPage(destination, eInstance_New(report.groupings._[c].continuation));
+ }
}
}
}
break;
case groupFinish:
+ if(lastDetail)
+ lastDetail.isLast = true;
if(report.groupings._[level].footer)
{
Detail groupEnd = eInstance_New(report.groupings._[level].footer);
case actualRows:
if(report.Advance(report.groupings._[level], level ? report.groupings._[level - 1].groupId : 0, &dontAdvance))
{
- if(AddDetailToPage(destination, eInstance_New(report.rowDetail)))
+ Detail detail;
+ if(AddDetailToPage(destination, (detail = eInstance_New(report.rowDetail))))
{
dontAdvance = true;
loop = false;
break;
}
else
+ {
report.ExecuteRowData(level);
+ lastDetail = detail;
+ }
}
else
{
detail.Create();
// This will probably never go here... (Only report/page headers have keepTogether set to false)
- if(overlap < 0)
- return true;
+ /*if(overlap < 0)
+ {
+ printf("bug");
+ }*/
+
}
return false;
}
{
public:
bool keepTogether;
+ bool isLast;
subclass(Detail) rowDetail;
}