Esempio n. 1
0
        protected override void OnPaint(PaintEventArgs e)
        {
            GridSubPanelType panelType = ContainerType;

            if (panelType == GridSubPanelType.Hidden)
            {
                return;
            }

            base.OnPaint(e);

            using (DevAge.Drawing.GraphicsCache graphics = new DevAge.Drawing.GraphicsCache(e.Graphics, e.ClipRectangle))
            {
                if (panelType == GridSubPanelType.TopLeft)
                {
                    m_GridContainer.OnTopLeftPanelPaint(graphics);
                }
                else if (panelType == GridSubPanelType.Left)
                {
                    m_GridContainer.OnLeftPanelPaint(graphics);
                }
                else if (panelType == GridSubPanelType.Top)
                {
                    m_GridContainer.OnTopPanelPaint(graphics);
                }
                else //scrollable
                {
                    m_GridContainer.OnScrollablePanelPaint(graphics);
                }
            }

            ////Use this code to test panels
            //e.Graphics.DrawEllipse(Pens.Black, ClientRectangle);
            //e.Graphics.DrawString(ContainerType.ToString(), Font, Brushes.Black, ClientRectangle);
        }
Esempio n. 2
0
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);

//#warning temporaneo per testare i panels
//			GridSubPanelType l_Type = ContainerType;
//			if (l_Type == GridSubPanelType.TopLeft)
//				e.Graphics.FillRectangle(new SolidBrush(Color.Yellow),e.ClipRectangle);
//			else if (l_Type == GridSubPanelType.Left)
//				e.Graphics.FillRectangle(new SolidBrush(Color.Red),e.ClipRectangle);
//			else if (l_Type == GridSubPanelType.Top)
//				e.Graphics.FillRectangle(new SolidBrush(Color.Green),e.ClipRectangle);
//			else
//				e.Graphics.FillRectangle(new SolidBrush(Color.Black),e.ClipRectangle);
//			ControlPaint.DrawBorder(e.Graphics, DisplayRectangle,Color.Blue,ButtonBorderStyle.Solid);

            GridSubPanelType l_Type = ContainerType;

            if (l_Type == GridSubPanelType.TopLeft)
            {
                m_GridContainer.OnTopLeftPanelPaint(e);
            }
            else if (l_Type == GridSubPanelType.Left)
            {
                m_GridContainer.OnLeftPanelPaint(e);
            }
            else if (l_Type == GridSubPanelType.Top)
            {
                m_GridContainer.OnTopPanelPaint(e);
            }
            else             //scrollable
            {
                m_GridContainer.OnScrollablePanelPaint(e);
            }
        }
Esempio n. 3
0
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);

            using (DevAge.Drawing.GraphicsCache graphics = new DevAge.Drawing.GraphicsCache(e.Graphics, e.ClipRectangle))
            {
                GridSubPanelType l_Type = ContainerType;
                if (l_Type == GridSubPanelType.TopLeft)
                {
                    m_GridContainer.OnTopLeftPanelPaint(graphics);
                }
                else if (l_Type == GridSubPanelType.Left)
                {
                    m_GridContainer.OnLeftPanelPaint(graphics);
                }
                else if (l_Type == GridSubPanelType.Top)
                {
                    m_GridContainer.OnTopPanelPaint(graphics);
                }
                else //scrollable
                {
                    m_GridContainer.OnScrollablePanelPaint(graphics);
                }
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="gridContainer"></param>
        /// <param name="containerType"></param>
        public GridSubPanelBase(GridVirtual gridContainer, GridSubPanelType containerType)
        {
            ContainerType = containerType;
            toolTip       = new System.Windows.Forms.ToolTip();

            ToolTipText     = "";
            m_GridContainer = gridContainer;
        }
Esempio n. 5
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="gridContainer"></param>
        /// <param name="containerType"></param>
        public GridSubPanelBase(GridVirtual gridContainer, GridSubPanelType containerType)
        {

            ContainerType = containerType;
            toolTip = new System.Windows.Forms.ToolTip();

            ToolTipText = "";
            m_GridContainer = gridContainer;
        }
Esempio n. 6
0
        public GridSubPanel(GridVirtual gridContainer, GridSubPanelType containerType)
            : base(gridContainer, containerType)
        {
            AllowDrop = true;

            //to remove flicker and use custom draw
            SetStyle(ControlStyles.UserPaint, true);
            SetStyle(ControlStyles.AllPaintingInWmPaint, true);
            SetStyle(ControlStyles.DoubleBuffer, true);
            SetStyle(ControlStyles.SupportsTransparentBackColor, true);
            SetStyle(ControlStyles.ContainerControl, true);
            SetStyle(ControlStyles.Selectable, false);

            m_ControlsRepository = new ControlsRepository(this);

            TabStop = false; //The grid control is a special control and usually don't receive the focus with the Tab
        }
Esempio n. 7
0
        public GridSubPanel(GridVirtual gridContainer, GridSubPanelType containerType)
            : base(gridContainer, containerType)
        {
            AllowDrop = true;

            //to remove flicker and use custom draw
            SetStyle(ControlStyles.UserPaint, true);
            SetStyle(ControlStyles.AllPaintingInWmPaint, true);
            SetStyle(ControlStyles.DoubleBuffer, true);
            SetStyle(ControlStyles.SupportsTransparentBackColor, true);
            SetStyle(ControlStyles.ContainerControl, true);
            SetStyle(ControlStyles.Selectable, false);

            m_ControlsRepository = new ControlsRepository(this);

            TabStop = false; //The grid control is a special control and usually don't receive the focus with the Tab
        }
Esempio n. 8
0
    /// <summary>
    /// Raises the <see cref="E:System.Windows.Forms.Control.Paint"></see> event.
    /// </summary>
    /// <param name="e">A <see cref="T:System.Windows.Forms.PaintEventArgs"></see> that contains the event data.</param>
    protected override void OnPaint(PaintEventArgs e)
    {
      base.OnPaint(e);

      GridSubPanelType l_Type = ContainerType;

      switch (l_Type)
      {
        case GridSubPanelType.TopLeft:
          gridContainer.OnTopLeftPanelPaint(e);
          break;
        case GridSubPanelType.Top:
          gridContainer.OnTopPanelPaint(e);
          break;
        case GridSubPanelType.Left:
          gridContainer.OnLeftPanelPaint(e);
          break;
        default:
          gridContainer.OnScrollablePanelPaint(e);
          break;
      }
    }
Esempio n. 9
0
    /// <summary>
    /// Returns a range of cells from the specified rectangle, relative to the current grid container, using scrolling information.
    /// </summary>
    /// <param name="p_RelativeRect">A grid relative rectangle (not panel relative)</param>
    /// <returns></returns>
    public Range RangeAtDisplayRect(Rectangle p_RelativeRect)
    {
      Rectangle l_Absolute = gridContainer.RectangleRelativeToAbsolute(p_RelativeRect);
      GridSubPanelType l_Type = ContainerType;

      if (l_Type == GridSubPanelType.TopLeft)
      {
        return RangeAtAbsRect(new Rectangle(p_RelativeRect.X, p_RelativeRect.Y, l_Absolute.Width, l_Absolute.Height));
      }
      else if (l_Type == GridSubPanelType.Top)
      {
        return RangeAtAbsRect(new Rectangle(l_Absolute.X, p_RelativeRect.Y, l_Absolute.Width, l_Absolute.Height));
      }
      else if (l_Type == GridSubPanelType.Left)
      {
        return RangeAtAbsRect(new Rectangle(p_RelativeRect.X, l_Absolute.Y, l_Absolute.Width, l_Absolute.Height));
      }
      else//scrollable
      {
        return RangeAtAbsRect(l_Absolute);
      }
    }
Esempio n. 10
0
    /// <summary>
    /// Returns a range of cells from the specified absolute rectangle. Returns Empty if no valid cells are found.
    /// </summary>
    /// <param name="p_AbsoluteRect">The absolute rectangle.</param>
    /// <returns></returns>
    public Range RangeAtAbsRect(Rectangle p_AbsoluteRect)
    {
      int l_Start_R, l_Start_C, l_End_R, l_End_C;
      GridSubPanelType l_Type = ContainerType;

      Range l_tmp = gridContainer.RangeAtAbsRect(p_AbsoluteRect);
      if (l_tmp.IsEmpty())
      {
        return l_tmp;
      }
      l_Start_R = l_tmp.Start.Row;
      l_Start_C = l_tmp.Start.Column;

      l_End_R = l_tmp.End.Row;
      l_End_C = l_tmp.End.Column;

      if (l_Type == GridSubPanelType.TopLeft)
      {
        if (l_Start_R >= gridContainer.FixedRows)
        {
          l_Start_R = Position.EmptyIndex;
        }

        if (l_Start_C >= gridContainer.FixedColumns)
        {
          l_Start_C = Position.EmptyIndex;
        }

        if (l_End_R >= gridContainer.FixedRows)
        {
          l_End_R = gridContainer.FixedRows - 1;
        }

        if (l_End_C >= gridContainer.FixedColumns)
        {
          l_End_C = gridContainer.FixedColumns - 1;
        }
      }
      else if (l_Type == GridSubPanelType.Top)
      {
        if (l_Start_R >= gridContainer.FixedRows)
        {
          l_Start_R = Position.EmptyIndex;
        }

        if (l_End_R >= gridContainer.FixedRows)
        {
          l_End_R = gridContainer.FixedRows - 1;
        }

        if (l_Start_C < gridContainer.FixedColumns)
        {
          l_Start_C = gridContainer.FixedColumns;
          if (l_Start_C >= gridContainer.ColumnsCount)
          {
            l_Start_C = Position.EmptyIndex;
          }
        }
        if (l_End_C < gridContainer.FixedColumns)
        {
          l_End_C = gridContainer.FixedColumns;
          if (l_End_C >= gridContainer.ColumnsCount)
          {
            l_End_C = Position.EmptyIndex;
          }
        }
      }
      else if (l_Type == GridSubPanelType.Left)
      {
        if (l_Start_C >= gridContainer.FixedColumns)
        {
          l_Start_C = Position.EmptyIndex;
        }

        if (l_End_C >= gridContainer.FixedColumns)
        {
          l_End_C = gridContainer.FixedColumns - 1;
        }

        if (l_Start_R < gridContainer.FixedRows)
        {
          l_Start_R = gridContainer.FixedRows;
          if (l_Start_R >= gridContainer.RowsCount)
          {
            l_Start_R = Position.EmptyIndex;
          }
        }
        if (l_End_R < gridContainer.FixedRows)
        {
          l_End_R = gridContainer.FixedRows;
          if (l_End_R >= gridContainer.RowsCount)
          {
            l_End_R = Position.EmptyIndex;
          }
        }
      }

      if (l_Start_R == Position.EmptyIndex || l_Start_C == Position.EmptyIndex
        || l_End_C == Position.EmptyIndex || l_End_R == Position.EmptyIndex)
      {
        return Range.Empty;
      }

      return new Range(l_Start_R, l_Start_C, l_End_R, l_End_C);
    }
Esempio n. 11
0
    /// <summary>
    /// Returns the cell at the specified grid view relative point (the point must be relative to the grid display region not to the panel display region)
    /// </summary>
    /// <param name="p_RelativeViewPoint">Point</param>
    /// <returns></returns>
    public virtual Position PositionAtPoint(Point p_RelativeViewPoint)
    {
      int l_Row, l_Col;
      GridSubPanelType l_Type = ContainerType;

      if (l_Type == GridSubPanelType.TopLeft)
      {
        l_Row = gridContainer.Rows.RowAtPoint(p_RelativeViewPoint.Y, true);
        l_Col = gridContainer.Columns.ColumnAtPoint(p_RelativeViewPoint.X, true);
        if (l_Row >= gridContainer.FixedRows)
        {
          l_Row = Position.EmptyIndex;
        }
        if (l_Col >= gridContainer.FixedColumns)
        {
          l_Col = Position.EmptyIndex;
        }
      }
      else if (l_Type == GridSubPanelType.Top)
      {
        Point l_AbsPoint = gridContainer.PointRelativeToAbsolute(p_RelativeViewPoint);
        l_Row = gridContainer.Rows.RowAtPoint(p_RelativeViewPoint.Y, true);
        l_Col = gridContainer.Columns.ColumnAtPoint(l_AbsPoint.X, true);
        if (l_Row >= gridContainer.FixedRows)
        {
          l_Row = Position.EmptyIndex;
        }

        if (l_Col < gridContainer.FixedColumns)
        {
          l_Col = Position.EmptyIndex;
        }
      }
      else if (l_Type == GridSubPanelType.Left)
      {
        Point l_AbsPoint = gridContainer.PointRelativeToAbsolute(p_RelativeViewPoint);
        l_Row = gridContainer.Rows.RowAtPoint(l_AbsPoint.Y, true);
        l_Col = gridContainer.Columns.ColumnAtPoint(p_RelativeViewPoint.X, true);
        if (l_Col >= gridContainer.FixedColumns)
        {
          l_Col = Position.EmptyIndex;
        }

        if (l_Row < gridContainer.FixedRows)
        {
          l_Row = Position.EmptyIndex;
        }
      }
      else //scrollable
      {
        Point l_AbsPoint = gridContainer.PointRelativeToAbsolute(p_RelativeViewPoint);
        l_Row = gridContainer.Rows.RowAtPoint(l_AbsPoint.Y, true);
        l_Col = gridContainer.Columns.ColumnAtPoint(l_AbsPoint.X, true);
      }

      if (l_Row == Position.EmptyIndex || l_Col == Position.EmptyIndex)
      {
        return Position.Empty;
      }

      return new Position(l_Row, l_Col);
    }
Esempio n. 12
0
        /// <summary>
        /// Returns a range of cells from the specified absolute rectangle. Returns Empty if no valid cells are found.
        /// </summary>
        /// <param name="p_AbsoluteRect"></param>
        /// <returns></returns>
        public Range RangeAtAbsRect(Rectangle p_AbsoluteRect)
        {
            int l_Start_R, l_Start_C, l_End_R, l_End_C;
            GridSubPanelType l_Type = ContainerType;

            Range l_tmp = m_GridContainer.RangeAtAbsRect(p_AbsoluteRect);

            if (l_tmp.IsEmpty())
            {
                return(l_tmp);
            }
            l_Start_R = l_tmp.Start.Row;
            l_Start_C = l_tmp.Start.Column;

            l_End_R = l_tmp.End.Row;
            l_End_C = l_tmp.End.Column;

            if (l_Type == GridSubPanelType.TopLeft)
            {
                if (l_Start_R >= m_GridContainer.FixedRows)
                {
                    l_Start_R = Position.c_EmptyIndex;
                }

                if (l_Start_C >= m_GridContainer.FixedColumns)
                {
                    l_Start_C = Position.c_EmptyIndex;
                }

                if (l_End_R >= m_GridContainer.FixedRows)
                {
                    l_End_R = m_GridContainer.FixedRows - 1;
                }

                if (l_End_C >= m_GridContainer.FixedColumns)
                {
                    l_End_C = m_GridContainer.FixedColumns - 1;
                }
            }
            else if (l_Type == GridSubPanelType.Top)
            {
                if (l_Start_R >= m_GridContainer.FixedRows)
                {
                    l_Start_R = Position.c_EmptyIndex;
                }

                if (l_End_R >= m_GridContainer.FixedRows)
                {
                    l_End_R = m_GridContainer.FixedRows - 1;
                }

                if (l_Start_C < m_GridContainer.FixedColumns)
                {
                    l_Start_C = m_GridContainer.FixedColumns;
                    if (l_Start_C >= m_GridContainer.ColumnsCount)
                    {
                        l_Start_C = Position.c_EmptyIndex;
                    }
                }
                if (l_End_C < m_GridContainer.FixedColumns)
                {
                    l_End_C = m_GridContainer.FixedColumns;
                    if (l_End_C >= m_GridContainer.ColumnsCount)
                    {
                        l_End_C = Position.c_EmptyIndex;
                    }
                }
            }
            else if (l_Type == GridSubPanelType.Left)
            {
                if (l_Start_C >= m_GridContainer.FixedColumns)
                {
                    l_Start_C = Position.c_EmptyIndex;
                }

                if (l_End_C >= m_GridContainer.FixedColumns)
                {
                    l_End_C = m_GridContainer.FixedColumns - 1;
                }

                if (l_Start_R < m_GridContainer.FixedRows)
                {
                    l_Start_R = m_GridContainer.FixedRows;
                    if (l_Start_R >= m_GridContainer.RowsCount)
                    {
                        l_Start_R = Position.c_EmptyIndex;
                    }
                }
                if (l_End_R < m_GridContainer.FixedRows)
                {
                    l_End_R = m_GridContainer.FixedRows;
                    if (l_End_R >= m_GridContainer.RowsCount)
                    {
                        l_End_R = Position.c_EmptyIndex;
                    }
                }
            }

            //TODO nel caso di ScrollablePanel dovrei verificare di non restituire celle fisse?

            if (l_Start_R == Position.c_EmptyIndex || l_Start_C == Position.c_EmptyIndex ||
                l_End_C == Position.c_EmptyIndex || l_End_R == Position.c_EmptyIndex)
            {
                return(Range.Empty);
            }

            return(new Range(l_Start_R, l_Start_C, l_End_R, l_End_C));
        }
Esempio n. 13
0
        /// <summary>
        /// Returns the cell at the specified grid view relative point (the point must be relative to the grid display region not to the panel display region)
        /// </summary>
        /// <param name="p_RelativeViewPoint">Point</param>
        /// <returns></returns>
        public virtual Position PositionAtPoint(Point p_RelativeViewPoint)
        {
            int l_Row, l_Col;
            GridSubPanelType l_Type = ContainerType;

            if (l_Type == GridSubPanelType.TopLeft)
            {
                l_Row = m_GridContainer.Rows.RowAtPoint(p_RelativeViewPoint.Y, true);
                l_Col = m_GridContainer.Columns.ColumnAtPoint(p_RelativeViewPoint.X, true);
                if (l_Row >= m_GridContainer.FixedRows)
                {
                    l_Row = Position.c_EmptyIndex;
                }
                if (l_Col >= m_GridContainer.FixedColumns)
                {
                    l_Col = Position.c_EmptyIndex;
                }
            }
            else if (l_Type == GridSubPanelType.Top)
            {
                Point l_AbsPoint = m_GridContainer.PointRelativeToAbsolute(p_RelativeViewPoint);
                l_Row = m_GridContainer.Rows.RowAtPoint(p_RelativeViewPoint.Y, true);
                l_Col = m_GridContainer.Columns.ColumnAtPoint(l_AbsPoint.X, true);
                if (l_Row >= m_GridContainer.FixedRows)
                {
                    l_Row = Position.c_EmptyIndex;
                }

                if (l_Col < m_GridContainer.FixedColumns)
                {
                    l_Col = Position.c_EmptyIndex;
                }
            }
            else if (l_Type == GridSubPanelType.Left)
            {
                Point l_AbsPoint = m_GridContainer.PointRelativeToAbsolute(p_RelativeViewPoint);
                l_Row = m_GridContainer.Rows.RowAtPoint(l_AbsPoint.Y, true);
                l_Col = m_GridContainer.Columns.ColumnAtPoint(p_RelativeViewPoint.X, true);
                if (l_Col >= m_GridContainer.FixedColumns)
                {
                    l_Col = Position.c_EmptyIndex;
                }

                if (l_Row < m_GridContainer.FixedRows)
                {
                    l_Row = Position.c_EmptyIndex;
                }
            }
            else             //scrollable
            {
                Point l_AbsPoint = m_GridContainer.PointRelativeToAbsolute(p_RelativeViewPoint);
                l_Row = m_GridContainer.Rows.RowAtPoint(l_AbsPoint.Y, true);
                l_Col = m_GridContainer.Columns.ColumnAtPoint(l_AbsPoint.X, true);

                //TODO devo controllare che non cada nelle celle fisse?
            }

            if (l_Row == Position.c_EmptyIndex || l_Col == Position.c_EmptyIndex)
            {
                return(Position.Empty);
            }

            return(new Position(l_Row, l_Col));
        }