示例#1
0
		protected ExporterCollection ConvertSection (BaseSection section,int dataRow)
		{
			Point currentBottom = Point.Empty;
			bool isContainer = false;
			
			PrepareSection(section, dataRow);
			
			var convertedSection = new ExporterCollection();
			Offset = SectionBounds.Offset;
			
			if (section.Items.Count > 0)
			{

				Rectangle desiredRectangle = LayoutHelper.CalculateSectionLayout(this.Graphics,section);
				LayoutHelper.FixSectionLayout(desiredRectangle,section);
				section.Items.SortByLocation();
				GapList gapCalculator = new GapList();
				gapCalculator.CalculateGapList(section);
				
				int i = 0;
				
				foreach (BaseReportItem item in section.Items)
				{
					ISimpleContainer simpleContainer = item as ISimpleContainer;
					
					if (simpleContainer != null)
					{
						isContainer = true;
						Offset = new Point(Offset.X,Offset.Y + gapCalculator.GapBetweenItems[i] );
						var containerSize = simpleContainer.Size;
						
						EvaluationHelper.EvaluateReportItems(EvaluatorFacade,simpleContainer.Items);
						
						var layouter = (ILayouter)ServiceContainer.GetService(typeof(ILayouter));
						LayoutHelper.SetLayoutForRow(Graphics,layouter, simpleContainer);
						
						section.MeasureOverride(section.Size);
						
						Offset = BaseConverter.ConvertContainer(convertedSection,simpleContainer,Offset.X,Offset);
						simpleContainer.Size = containerSize;
					}
					else
					{
						IBaseExportColumn converteditem = null;
						if (isContainer)
						{
							item.Location = new Point(item.Location.X,Offset.Y + gapCalculator.GapBetweenItems[i]);
							converteditem = ExportHelper.ConvertLineItem(item,new Point(item.Location.X,gapCalculator.GapBetweenItems[i]));
							isContainer = false;
						} else
						{
							converteditem = ExportHelper.ConvertLineItem(item,Offset);
						}
						
						if (converteditem.StyleDecorator.DisplayRectangle.Bottom > currentBottom.Y)
						{
							currentBottom = new Point(converteditem.StyleDecorator.Location.X,converteditem.StyleDecorator.DisplayRectangle.Bottom);
						}
						convertedSection.Add((BaseExportColumn)converteditem );
					}
					i ++;
				}
				Offset = new Point (Offset.X,Offset.Y + gapCalculator.LastGap);
				
				if (currentBottom.Y > Offset.Y) {
					Offset = new Point (Offset.X,currentBottom.Y);
				}
			}
			SectionBounds.Offset = Offset;
			return convertedSection;
		}
示例#2
0
		protected ExporterCollection ConvertSection (BaseSection section,int dataRow)
		{
			Point currentBottom = Point.Empty;
			FireSectionRenderEvent (section ,dataRow);
			PrintHelper.AdjustParent(section,section.Items);
			PrintHelper.AdjustSectionLocation(section);
			
			var convertedSection = new ExporterCollection();
			Offset = SectionBounds.Offset;
			Point startOffset = Offset;
			
			if (section.Items.Count > 0)
			{
				Size sectionSize = section.Size;

				Rectangle desiredRectangle = LayoutHelper.CalculateSectionLayout(this.Graphics,section);
				LayoutHelper.FixSectionLayout(desiredRectangle,section);
				section.Items.SortByLocation();
				GapList gapCalculator = new GapList();
				gapCalculator.CalculateGapList(section);
				int i = 0;
				
				foreach (BaseReportItem item in section.Items)
				{
					ISimpleContainer simpleContainer = item as ISimpleContainer;
					
					if (simpleContainer != null)
					{
						Offset = new Point(Offset.X,Offset.Y + gapCalculator.GapBetweenItems[i] );
						var containerSize = simpleContainer.Size;
						
						EvaluationHelper.EvaluateReportItems(EvaluatorFacade,simpleContainer.Items);
						
						var layouter = (ILayouter)ServiceContainer.GetService(typeof(ILayouter));
						LayoutHelper.SetLayoutForRow(Graphics,layouter, simpleContainer);
						/*
						 * */

						
						/*
				section.Items.ForEach(delegate(BaseReportItem aitem)
				                      {
//				                      	Console.WriteLine(item.Location);
				                      });
				var h = section.Items.FindHighestElement();
						 */
						section.MeasureOverride(section.Size);
						/** */
						Offset = BaseConverter.ConvertContainer(convertedSection,simpleContainer,Offset.X,Offset);
						simpleContainer.Size = containerSize;
					}
					else
					{
						var converteditem = ExportHelper.ConvertLineItem(item,Offset);
						if (converteditem != null) {
						if (converteditem.StyleDecorator.DisplayRectangle.Bottom > currentBottom.Y) {
							currentBottom = new Point(converteditem.StyleDecorator.Location.X,converteditem.StyleDecorator.DisplayRectangle.Bottom);
						}
						
						convertedSection.Add((BaseExportColumn)converteditem );
							
						}
//						if (converteditem.StyleDecorator.DisplayRectangle.Bottom > currentBottom.Y) {
//							currentBottom = new Point(converteditem.StyleDecorator.Location.X,converteditem.StyleDecorator.DisplayRectangle.Bottom);
//						}
//						
//						convertedSection.Add((BaseExportColumn)converteditem );
						
					}
					i ++;
				}
				Offset = new Point (Offset.X,Offset.Y + gapCalculator.LastGap);
//				Offset = new Point (Offset.X,Offset.Y + 5);
				
				if (currentBottom.Y > Offset.Y) {
					Offset = new Point (Offset.X,currentBottom.Y);
				}
//				Offset = new Point (Offset.X,Offset.Y + gapCalculator.LastGap);
			}
			SectionBounds.Offset = Offset;
			return convertedSection;
		}
示例#3
0
        protected ExporterCollection ConvertSection(BaseSection section, int dataRow)
        {
            Point currentBottom = Point.Empty;
            bool  isContainer   = false;

            PrepareSection(section, dataRow);

            var convertedSection = new ExporterCollection();

            Offset = SectionBounds.Offset;

            if (section.Items.Count > 0)
            {
                Rectangle desiredRectangle = LayoutHelper.CalculateSectionLayout(this.Graphics, section);
                LayoutHelper.FixSectionLayout(desiredRectangle, section);
                section.Items.SortByLocation();
                GapList gapCalculator = new GapList();
                gapCalculator.CalculateGapList(section);

                int i = 0;

                foreach (BaseReportItem item in section.Items)
                {
                    ISimpleContainer simpleContainer = item as ISimpleContainer;

                    if (simpleContainer != null)
                    {
                        isContainer = true;
                        Offset      = new Point(Offset.X, Offset.Y + gapCalculator.GapBetweenItems[i]);
                        var containerSize = simpleContainer.Size;

                        EvaluationHelper.EvaluateReportItems(EvaluatorFacade, simpleContainer.Items);

                        var layouter = (ILayouter)ServiceContainer.GetService(typeof(ILayouter));
                        LayoutHelper.SetLayoutForRow(Graphics, layouter, simpleContainer);

                        section.MeasureOverride(section.Size);

                        Offset = BaseConverter.ConvertContainer(convertedSection, simpleContainer, Offset.X, Offset);
                        simpleContainer.Size = containerSize;
                    }
                    else
                    {
                        IBaseExportColumn converteditem = null;
                        if (isContainer)
                        {
                            item.Location = new Point(item.Location.X, Offset.Y + gapCalculator.GapBetweenItems[i]);
                            converteditem = ExportHelper.ConvertLineItem(item, new Point(item.Location.X, gapCalculator.GapBetweenItems[i]));
                            isContainer   = false;
                        }
                        else
                        {
                            converteditem = ExportHelper.ConvertLineItem(item, Offset);
                        }

                        if (converteditem.StyleDecorator.DisplayRectangle.Bottom > currentBottom.Y)
                        {
                            currentBottom = new Point(converteditem.StyleDecorator.Location.X, converteditem.StyleDecorator.DisplayRectangle.Bottom);
                        }
                        convertedSection.Add((BaseExportColumn)converteditem);
                    }
                    i++;
                }
                Offset = new Point(Offset.X, Offset.Y + gapCalculator.LastGap);

                if (currentBottom.Y > Offset.Y)
                {
                    Offset = new Point(Offset.X, currentBottom.Y);
                }
            }
            SectionBounds.Offset = Offset;
            return(convertedSection);
        }