Пример #1
0
        internal void Remove(IMultiHeader c)
        {
            if (!Contains(c))
            {
                return;
            }

            InnerList.Remove(c);
        }
Пример #2
0
 public int IndexOf(IMultiHeader c)
 {
     if (!Contains(c))
     {
         return(-1);
     }
     else
     {
         return(InnerList.IndexOf(c));
     }
 }
Пример #3
0
 public void Add(int level, IMultiHeader mh)
 {
     if (_innerhash.Contains(level))
     {
         _innerhash[level] = mh;
     }
     else
     {
         _innerhash.Add(level, mh);
     }
 }
Пример #4
0
        internal void AddAt(IMultiHeader c, IMultiHeader beforeMultiHeader)
        {
            if (!Contains(beforeMultiHeader))
            {
                return;
            }

            if (Contains(c))
            {
                return;
            }

            AddAt(c, IndexOf(beforeMultiHeader));
        }
Пример #5
0
        internal void AddAt(IMultiHeader c, int index)
        {
            if (index < 0 || index > InnerList.Count - 1)
            {
                return;
            }

            if (Contains(c))
            {
                return;
            }

            InnerList.Insert(index, c);
        }
        public override void UpdateView(ExControlView i_View)
        {
            if (i_View == null)
            {
                return;
            }

            IMultiHeader mainView = i_View as IMultiHeader;

            if (this.Headers != null)
            {
                mainView.HeadersData = this.Headers.Copy();
            }
        }
Пример #7
0
 private void IMultiHeaderFrom(XmlElement xe, IMultiHeader receiver)
 {
     if (xe.HasAttribute("SortSource"))
     {
         DataSource ds = _report.DataSources[xe.GetAttribute("SortSource")];
         if (ds != null)
         {
             receiver.SortSource = ds;
         }
         else
         {
             receiver.SortSource = new DataSource("EmptyColumn");
         }
     }
 }
Пример #8
0
 internal int Add(IMultiHeader c)
 {
     if (Contains(c))
     {
         return(IndexOf(c));
     }
     for (int i = 0; i < Count; i++)
     {
         if ((c as Cell).Y < (this[i] as Cell).Y)
         {
             AddAt(c, i);
             return(i);
         }
     }
     return(InnerList.Add(c));
 }
        private void BtnCopy_Click(object sender, System.EventArgs e)
        {
            if (this.Headers.SelCount <= 0)
            {
                MessageBox.Show("Please select the cell in the table below");
                return;
            }

            ArrayList formats = new ArrayList();

            IMultiHeader mainView = _ExControlView as IMultiHeader;

            ArrayList prnHeaders = mainView.GetPrnHeader(out formats);

            this.Headers.CopyHeaderFromField(prnHeaders);

            paintAllCells();
        }
        public override void SetView(ExControlView i_View)
        {
            this.Headers.txtEdit = this.txtCell;

            if (i_View == null || !(i_View is IMultiHeader))
            {
                return;
            }

            _ExControlView = i_View;

            IMultiHeader mainView = i_View as IMultiHeader;

            if (i_View.PrintingTable == null)
            {
                return;
            }

            int colcount = i_View.PrintingTable.GetColumns();

            colcount = colcount <= 0?0:colcount;

            if (mainView.HeadersData == null)
            {
                this.Headers = new HeadersData(0, colcount);
            }
            else
            {
                this.Headers = mainView.HeadersData.Copy();

                int count = colcount - this.Headers.ColCount;

                for (int i = 0; i < count; i++)
                {
                    this.Headers.AddCol();
                }
                for (int i = count; i < 0; i++)
                {
                    this.Headers.RemoveCol();
                }
            }

            this.LayoutHeaders();
        }
        private void paintAllCells()
        {
            int BoundHeight      = this.palpaint.Height;
            int MaxSelAreaHeight = (BoundHeight - 30) / 2;

            Rectangle gridlineArea = new Rectangle(15, 15, 0, 0);

            int rectWidth = this.palpaint.Width - 30;

            Rectangle rect = new Rectangle(15, 15, rectWidth, BoundHeight - 30);

            int SelAreaHeight = this.Headers.RowCount * lblHeight;

            SelAreaHeight = SelAreaHeight <= MaxSelAreaHeight?SelAreaHeight:MaxSelAreaHeight;

            palpaint.Controls.Clear();

            if (Headers != null && Headers.RowCount > 0 && Headers.ColCount > 0)
            {
                lblHeight = SelAreaHeight / this.Headers.RowCount;
                Rectangle SelArea = new Rectangle(rect.X, rect.Y, rect.Width, SelAreaHeight);

                #region Modify codes at 2008-11-6 9:22:26@Simon

                IMultiHeader mainView = _ExControlView as IMultiHeader;

                Headers.PaintCells(palpaint, SelArea, mainView);
                #endregion                        //End Modify

                rect.Y      = rect.Y + SelAreaHeight;
                rect.Height = rect.Height - SelAreaHeight;

                int SelAreaWidth = (int)(rect.Width / this.Headers.ColCount) * this.Headers.ColCount;
                rect.Width   = SelAreaWidth;
                gridlineArea = new Rectangle(15, 15, SelAreaWidth, SelAreaHeight);
            }
            this.PaintTable(palpaint, rect, gridlineArea);
        }
Пример #12
0
 public bool Contains(IMultiHeader c)
 {
     return(InnerList.Contains(c));
 }
Пример #13
0
        public void PaintCells(Control Ctrl, Rectangle rect, IMultiHeader HeaderView)
        {
            ArrayList formats = new ArrayList();

            HeaderView.GetPrnHeader(out formats);

            this._HeaderContainer = Ctrl;
            if (this.ColCount <= 0)
            {
                return;
            }
            int lblWidth  = rect.Width / this.ColCount;
            int lblHeight = rect.Height / this.RowCount;

            this._SelCells.Clear();
            this._CurCell = null;
            #region add Controls
            for (int i = 0; i < this.RowCount; i++)
            {
                int lblLocX = rect.X;
                int lblLocY = rect.Y + i * lblHeight;
                for (int j = 0; j < GetRow(i).ColCount; j++)
                {
                    HeaderCell hc = GetCell(i, j);

                    Rectangle LabelRect = new Rectangle(lblLocX, lblLocY, lblWidth, lblHeight);

                    LabelInfo info = new LabelInfo();
                    info.RowIndex = i;
                    string Lbltext = hc.Text;

                    info.MergedColMax = info.MergedColMin = j;

                    string LblName = string.Format("{0}", i * ColCount + j);
                    if (hc.MergerdCount > 0)
                    {
                        LabelRect.Width = hc.MergerdCount * lblWidth;
                        j += hc.MergerdCount - 1;
                        info.MergedColMax = j;
                    }

                    #region Modify codes at 2008-11-5 15:16:51@Simon
                    if (this.ColsToMerge.Contains(j) && (HeaderView.HaveHeader || i > 0))
                    {
                        lblLocX += LabelRect.Width;
                        continue;
                    }
                    #endregion                            //End Modify

                    info.LblLoc  = LabelRect.Location;
                    info.LblSize = LabelRect.Size;
                    Label lblcell = new Label();
                    lblcell.Name      = LblName;
                    lblcell.Text      = Lbltext;
                    lblcell.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;

                    lblcell.BackColor = Control.DefaultBackColor;

                    if (i == 0 && !HeaderView.HaveHeader && j < formats.Count)
                    {
                        StringFormatFlags strflags = (StringFormatFlags)formats[j];                        //Added this code at 2008-11-5 8:53:15@Simon

                        if ((strflags & StringFormatFlags.DirectionVertical) == StringFormatFlags.DirectionVertical)
                        {
                            lblcell.Paint += new PaintEventHandler(DrawLabelVertical);
                        }
                    }


                    info.DefaultBackColor = lblcell.BackColor;

                    lblcell.Tag = info;

                    if (this.GridLine)
                    {
                        lblcell.BorderStyle = BorderStyle.FixedSingle;
                        lblcell.Location    = LabelRect.Location;
                        if (this.ColsToMerge.Contains(j))
                        {
                            lblcell.Size = new Size(lblWidth, rect.Height);
                            Ctrl.Controls.Add(lblcell);
                            lblLocX += LabelRect.Width;
                            continue;
                        }
                        else
                        {
                            lblcell.Size = LabelRect.Size;
                        }
                    }
                    else
                    {
                        lblcell.BorderStyle = BorderStyle.None;
                        lblcell.Location    = new Point(LabelRect.X + 1, LabelRect.Y + 1);
                        if (this.ColsToMerge.Contains(j))
                        {
                            lblcell.Size = new Size(LabelRect.Width - 2, rect.Height - 2);
                            lblLocX     += LabelRect.Width;
                            Ctrl.Controls.Add(lblcell);
                            continue;
                        }
                        else
                        {
                            lblcell.Size = new Size(LabelRect.Width - 2, LabelRect.Height - 2);
                        }
                    }



                    lblLocX += LabelRect.Width;

                    lblcell.Click += new System.EventHandler(MyClick);
                    Ctrl.Controls.Add(lblcell);
                }
            }
            #endregion
        }
Пример #14
0
 public SuperLabel(IMultiHeader mh) : base(mh as Rect)
 {
     _keeppos = true;
 }
        private void PaintTable(Panel paintControl, Rectangle rect, Rectangle gridlineArea)
        {
            Label drawlabel;

            if (_ExControlView == null || _ExControlView.PrintingTable == null)
            {
                drawlabel             = new Label();
                drawlabel.Bounds      = rect;
                drawlabel.Text        = "There isn't any report data here!";
                drawlabel.BorderStyle = BorderStyle.FixedSingle;
                drawlabel.TextAlign   = System.Drawing.ContentAlignment.MiddleCenter;
                drawlabel.Name        = "cell";
                paintControl.Controls.Add(drawlabel);
                lblHeight = 30;
                return;
            }
            WebbTable table = _ExControlView.PrintingTable;

            if (table == null || table.GetColumns() <= 0 || table.GetRows() <= 0)
            {
                drawlabel             = new Label();
                drawlabel.Bounds      = rect;
                drawlabel.Text        = "No Data!";
                drawlabel.BorderStyle = BorderStyle.FixedSingle;
                drawlabel.TextAlign   = System.Drawing.ContentAlignment.MiddleCenter;
                drawlabel.Name        = "cell";
                paintControl.Controls.Add(drawlabel);
                lblHeight = 30;
                return;
            }


            ArrayList prnHeaders = new ArrayList();
            ArrayList formats    = new ArrayList();

            IMultiHeader mainView = _ExControlView as IMultiHeader;

            prnHeaders = mainView.GetPrnHeader(out formats);


            int tempHeight = 0;

            if (mainView.HaveHeader)              //Modified at 2008-10-20 11:24:01@Simon
            {
                int lblWidth = rect.Width / prnHeaders.Count;

                ArrayList lblhigharr = new ArrayList();                //Added this code at 2008-11-5 9:33:39@Simon

                bool b_ver = false;

                Bitmap bmpmemory = new Bitmap(rect.Width, rect.Height);                //Added this code at 2008-11-7 17:23:35@Simon

                Graphics g0 = Graphics.FromImage(bmpmemory);                           //Added this code at 2008-11-7 17:23:31@Simon

                drawlabel = new Label();

                MergedHeader = false;

                for (int i = 0; i < prnHeaders.Count; i++)
                {
                    string text = (string)prnHeaders[i];

                    tempHeight = lblHeight;

                    Rectangle lblrect = new Rectangle(rect.X + i * lblWidth, rect.Y, lblWidth, tempHeight);

                    if (text == "\n")
                    {
                        drawlabel.Width += lblrect.Width;

                        MergedHeader = true;
                        continue;
                    }

                    StringFormatFlags strflags = (StringFormatFlags)formats[i];                    //Added this code at 2008-11-5 8:53:15@Simon

                    drawlabel = new Label();

                    if (Headers.ColsToMerge.Contains(i))
                    {
                        drawlabel.Name = "cell0|" + text;
                    }
                    else
                    {
                        drawlabel.Name = "cell1|" + text;
                    }
                    drawlabel.Tag = strflags;

                    #region Modify codes at 2008-11-5 16:02:24@Simon
                    if (this.Headers.GridLine)
                    {
                        drawlabel.BorderStyle = BorderStyle.FixedSingle;
                        if (Headers.ColsToMerge.Contains(i))
                        {
                            drawlabel.Location = new Point(lblrect.X, gridlineArea.Y);
                            drawlabel.Size     = new Size(lblrect.Width, lblrect.Height + gridlineArea.Height);
                        }
                        else
                        {
                            drawlabel.Bounds = lblrect;
                        }
                    }
                    else
                    {
                        drawlabel.BorderStyle = BorderStyle.None;
                        if (Headers.ColsToMerge.Contains(i))
                        {
                            drawlabel.Location = new Point(lblrect.X + 1, gridlineArea.Y + 1);
                            drawlabel.Size     = new Size(lblrect.Width - 2, lblrect.Height + gridlineArea.Height - 2);
                        }
                        else
                        {
                            drawlabel.Location = new Point(lblrect.X + 1, lblrect.Y + 1);
                            drawlabel.Size     = new Size(lblrect.Width - 2, lblrect.Height - 2);
                        }
                    }
                    #endregion                            //End Modify

                    drawlabel.Paint    += new PaintEventHandler(DrawLabelPaint);
                    drawlabel.BackColor = Control.DefaultBackColor;
                    drawlabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
                    paintControl.Controls.Add(drawlabel);

                    #region add codes at 2008-11-5 9:44:30@Simon

                    lblhigharr.Add(drawlabel);
                    if (strflags == StringFormatFlags.DirectionVertical)
                    {
                        this.TestMaxlblheight(g0, drawlabel.Font, text);
                        if (!Headers.ColsToMerge.Contains(i) || Headers.RowCount == 0)
                        {
                            b_ver = true;
                        }
                    }

                    #endregion                            //End Modify
                }

                #region Modify codes at 2008-11-5 9:54:22@Simon
                MaxlblHeight = Math.Min(rect.Height - 10, MaxlblHeight);
                if (b_ver && MaxlblHeight > 0)
                {
                    tempHeight = MaxlblHeight;
                    foreach (object objtext in lblhigharr)
                    {
                        if ((objtext as Label).Name.Substring(4, 1) == "0")
                        {
                            (objtext as Label).Height = this.Headers.GridLine?gridlineArea.Height + MaxlblHeight:gridlineArea.Height + MaxlblHeight - 2;
                        }
                        else
                        {
                            (objtext as Label).Height = this.Headers.GridLine?MaxlblHeight:MaxlblHeight - 2;
                        }
                    }
                }
                MaxlblHeight = 0;
                g0.Dispose();
                bmpmemory.Dispose();
                #endregion                        //End Modify

                rect.Y              += tempHeight;
                rect.Width           = lblWidth * prnHeaders.Count;
                rect.Height         -= tempHeight;
                gridlineArea.Height += tempHeight;
                if (gridlineArea.Width <= 0)
                {
                    gridlineArea.X     = rect.X;
                    gridlineArea.Width = rect.Width;
                }
            }
            if (!this.Headers.GridLine)
            {
                drawlabel             = new Label();
                drawlabel.Bounds      = gridlineArea;
                drawlabel.Text        = "";
                drawlabel.TextAlign   = System.Drawing.ContentAlignment.MiddleCenter;
                drawlabel.BorderStyle = BorderStyle.FixedSingle;
                drawlabel.BackColor   = Control.DefaultBackColor;
                drawlabel.Name        = "cell";
                paintControl.Controls.Add(drawlabel);
                drawlabel.SendToBack();
            }
            drawlabel             = new Label();
            drawlabel.Bounds      = rect;
            drawlabel.Text        = "Table Data";
            drawlabel.TextAlign   = System.Drawing.ContentAlignment.MiddleCenter;
            drawlabel.BorderStyle = BorderStyle.FixedSingle;
            drawlabel.Name        = "cell";
            paintControl.Controls.Add(drawlabel);
            lblHeight = 30;
        }