/// <summary> /// print the footer of the page; /// can contain eg. long caption lines that did not fit at top of the columns /// </summary> public override void PrintPageFooter() { System.Int32 columnNr; String Caption; float StringWidth; float CurrentXPos; Int32 oldCurrentSubReport; if (FPrinter.PageFooterSpace == 0) { // this printer does not support page footers return; } FPrinter.LineFeedToPageFooter(); FPrinter.DrawLine(FPrinter.LeftMargin, FPrinter.Width, eLinePosition.eAbove, eFont.eDefaultBoldFont); FPrinter.LineSpaceFeed(eFont.eSmallPrintFont); /* * TLogging.Log('TopMargin in cm: ' + Convert.ToString(TopMargin* 2.54)); * TLogging.Log('BottomMargin in cm: ' + Convert.ToString(BottomMargin* 2.54)); * TLogging.Log('Height in cm: ' + Convert.ToString(Height* 2.54)); * TLogging.Log('Footerspace in cm: ' + Convert.ToString(FPageFooterSpace)); * TLogging.Log('smallprintheight in cm: ' + Convert.ToString(SmallPrintFont.GetHeight(ev.Graphics))); * TLogging.Log('defaultheight in cm: ' + Convert.ToString(DefaultFont.GetHeight(ev.Graphics))); */ oldCurrentSubReport = FParameters.Get("CurrentSubReport").ToInt(); FParameters.Add("CurrentSubReport", -1); CurrentXPos = FPrinter.LeftMargin; for (columnNr = 0; columnNr <= FNumberColumns - 1; columnNr += 1) { if (FParameters.Exists("LongCaption", columnNr)) { Caption = Get("LongCaption", columnNr); StringWidth = FPrinter.GetWidthString(Caption, eFont.eSmallPrintFont); if (FPrinter.ValidXPos(CurrentXPos + StringWidth)) { // can print in same line FPrinter.PrintString(Caption, eFont.eSmallPrintFont, CurrentXPos); } else { FPrinter.LineFeed(eFont.eSmallPrintFont); CurrentXPos = FPrinter.LeftMargin; FPrinter.PrintString(Caption, eFont.eSmallPrintFont, CurrentXPos); } CurrentXPos = CurrentXPos + StringWidth + FPrinter.GetWidthString("a", eFont.eSmallPrintFont) * 7; } } FParameters.Add("CurrentSubReport", oldCurrentSubReport); }
/// <summary> /// print the page header /// </summary> public override void PrintPageHeader() { String pages; Version clientVersion; FPrinter.PrintString(Get("ControlSource", ReportingConsts.HEADERTITLE1), eFont.eHeadingFont, eAlignment.eCenter); FPrinter.PrintString(StringHelper.DateToLocalizedString(FTimePrinted), eFont.eDefaultFont, eAlignment.eRight); // todo: // should page, title, sitename, date be bold, as in Petra 2.1? // requested by, petra version, is not bold if (FPrinter.NumberOfPages == 0) { pages = "Page " + FPrinter.CurrentPageNr.ToString(); } else { pages = "Page " + FPrinter.CurrentPageNr.ToString() + " of " + FPrinter.NumberOfPages.ToString(); } FPrinter.PrintString(pages, eFont.eDefaultFont, eAlignment.eLeft); FPrinter.LineFeed(eFont.eHeadingFont); FPrinter.PrintString(Get("ControlSource", ReportingConsts.HEADERTITLE2), eFont.eDefaultBoldFont, eAlignment.eCenter); FPrinter.PrintString(FTimePrinted.ToString("T"), eFont.eDefaultFont, eAlignment.eRight); FPrinter.LineFeed(eFont.eDefaultBoldFont); FPrinter.PrintString("Report requested by: " + UserInfo.GUserInfo.UserID, eFont.eDefaultFont, eAlignment.eLeft); clientVersion = System.Reflection.Assembly.GetAssembly(typeof(TReportPrinterLayout)).GetName().Version; FPrinter.PrintString("Version: " + clientVersion.Major.ToString() + "." + clientVersion.Minor.ToString() + "." + clientVersion.Build.ToString() + "." + clientVersion.Revision.ToString(), eFont.eDefaultFont, eAlignment.eRight); FPrinter.LineFeed(eFont.eHeadingFont); FPrinter.LineFeed(eFont.eDefaultFont); FPrinter.PrintString(Get("ControlSource", ReportingConsts.HEADERDESCR1), eFont.eDefaultFont, eAlignment.eLeft); FPrinter.PrintString(Get("ControlSource", ReportingConsts.HEADERPERIOD), eFont.eDefaultFont, eAlignment.eRight); FPrinter.LineFeed(eFont.eDefaultFont); FPrinter.PrintString(Get("ControlSource", ReportingConsts.HEADERDESCR2), eFont.eDefaultFont, eAlignment.eLeft); FPrinter.PrintString(Get("ControlSource", ReportingConsts.HEADERPERIOD2), eFont.eDefaultFont, eAlignment.eRight); FPrinter.PrintString(Get("ControlSource", ReportingConsts.HEADERTYPE), eFont.eDefaultFont, eAlignment.eCenter); FPrinter.LineFeed(eFont.eDefaultFont); FPrinter.PrintString(Get("ControlSource", ReportingConsts.HEADERDESCR3), eFont.eDefaultFont, eAlignment.eLeft); FPrinter.PrintString(Get("ControlSource", ReportingConsts.HEADERPERIOD3), eFont.eDefaultFont, eAlignment.eRight); FPrinter.LineFeed(eFont.eDefaultFont); FPrinter.LineFeed(eFont.eDefaultFont); FPrinter.PrintString(Get("ControlSource", ReportingConsts.HEADERPAGELEFT1), eFont.eDefaultBoldFont, GetPosition(ReportingConsts.HEADERPAGELEFT1, -1, HEADERPAGELEFT1_POS)); FPrinter.PrintString(Get("ControlSource", ReportingConsts.HEADERPAGELEFT2), eFont.eDefaultBoldFont, GetPosition(ReportingConsts.HEADERPAGELEFT2, -1, HEADERPAGELEFT2_POS)); PrintColumnCaptions(); FPrinter.DrawLine(FPrinter.LeftMargin, FPrinter.Width, eLinePosition.eAbove, eFont.eDefaultBoldFont); FPrinter.LineFeed(eFont.eDefaultFont); }
/// <summary> /// can either print or simulate /// </summary> /// <returns>s the current y position after printing or simulating /// </returns> protected override double PrintNormalLevelFooter(TResult row) { Boolean linePrinted; linePrinted = false; // footer if (FParameters.Get("SpaceLineAbove", -1, row.depth, eParameterFit.eExact).ToBool() == true) { FPrinter.LineSpaceFeed(eFont.eDefaultFont); } if (FParameters.Get("FullLineAbove", -1, row.depth, eParameterFit.eExact).ToBool() == true) { FPrinter.DrawLine(FPrinter.LeftMargin, FPrinter.Width, eLinePosition.eAbove, eFont.eDefaultFont); FPrinter.LineSpaceFeed(eFont.eDefaultFont); } FPrinter.PrintString(row.descr[0].ToString(), eFont.eDefaultFont, GetPosition(ReportingConsts.COLUMNLEFT + 1, row.depth, FPrinter.Cm(COLUMNLEFT1_POS)), GetWidth(ReportingConsts.COLUMNLEFT + 1, row.depth, FPrinter.Cm(3)), GetAlignment(ReportingConsts.COLUMNLEFT + 1, row.depth, eAlignment.eLeft)); PrintColumns(row); linePrinted = FPrinter.PrintString(row.descr[1].ToString(), eFont.eDefaultFont, GetPosition(ReportingConsts.COLUMNLEFT + 1, row.depth, FPrinter.Cm(COLUMNLEFT1_POS)), GetWidth(ReportingConsts.COLUMNLEFT + 1, row.depth, FPrinter.Cm(3)), GetAlignment(ReportingConsts.COLUMNLEFT + 1, row.depth, eAlignment.eLeft)); if (linePrinted) { FPrinter.LineFeed(eFont.eDefaultFont); } if (FParameters.Get("FullLineBelow", -1, row.depth, eParameterFit.eExact).ToBool() == true) { FPrinter.DrawLine(FPrinter.LeftMargin, FPrinter.Width, eLinePosition.eAbove, eFont.eDefaultFont); FPrinter.LineSpaceFeed(eFont.eDefaultFont); } if (FParameters.Get("SpaceLineBelow", -1, row.depth, eParameterFit.eExact).ToBool() == true) { FPrinter.LineSpaceFeed(eFont.eDefaultFont); } FNextElementLineToPrint[row.depth] = eStageElementPrinting.eFinished; return(FPrinter.CurrentYPos); }
/// <summary> /// print one value, into the given column /// </summary> /// <param name="columnNr"></param> /// <param name="level"></param> /// <param name="column"></param> /// <returns></returns> protected override bool PrintColumn(Int32 columnNr, Int32 level, TVariant column) { String s; float position; float width; bool linePrinted; linePrinted = false; position = GetPosition(columnNr, level, 0); width = GetWidth(columnNr, level, 0); s = column.ToString(); if (s.Length != 0) { linePrinted = true; if (FParameters.Get("LineAbove", columnNr, level, eParameterFit.eAllColumnFit).ToBool() == true) { FPrinter.DrawLine(position, position + width, eLinePosition.eAbove, eFont.eDefaultFont); } if (FWrapColumn) { FPrinter.PrintStringWrap(s, eFont.eDefaultFont, position, width, GetAlignment(columnNr, level, eAlignment.eRight)); } else { FPrinter.PrintString(s, eFont.eDefaultFont, position, width, GetAlignment(columnNr, level, eAlignment.eRight)); } if (FParameters.Get("LineBelow", columnNr, level, eParameterFit.eAllColumnFit).ToBool() == true) { FPrinter.DrawLine(position, position + width, eLinePosition.eBelow, eFont.eDefaultFont); } FPrinter.LineFeed(eFont.eDefaultFont); } return(linePrinted); }