예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
        /// <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);
        }