571 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			571 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.ComponentModel;
 | |
| using System.Data.SqlTypes;
 | |
| using System.Drawing;
 | |
| using System.Windows.Forms;
 | |
| using DevComponents.DotNetBar.SuperGrid.Style;
 | |
| using DevComponents.Editors;
 | |
| 
 | |
| namespace DevComponents.DotNetBar.SuperGrid
 | |
| {
 | |
|     ///<summary>
 | |
|     /// GridIntegerInputEditControl
 | |
|     ///</summary>
 | |
|     [ToolboxItem(false)]
 | |
|     public class GridIntegerInputEditControl : IntegerInput, IGridCellEditControl
 | |
|     {
 | |
|         #region Private variables
 | |
| 
 | |
|         private GridCell _Cell;
 | |
|         private EditorPanel _EditorPanel;
 | |
|         private Bitmap _EditorCellBitmap;
 | |
| 
 | |
|         private bool _ValueChanged;
 | |
|         private bool _SuspendUpdate;
 | |
| 
 | |
|         private StretchBehavior _StretchBehavior = StretchBehavior.None;
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         ///<summary>
 | |
|         /// GridIntegerInputEditControl
 | |
|         ///</summary>
 | |
|         public GridIntegerInputEditControl()
 | |
|         {
 | |
|             ShowUpDown = true;
 | |
|         }
 | |
| 
 | |
|         #region OnValueChanged
 | |
| 
 | |
|         /// <summary>
 | |
|         /// OnValueChanged
 | |
|         /// </summary>
 | |
|         /// <param name="e"></param>
 | |
|         protected override void OnValueChanged(EventArgs e)
 | |
|         {
 | |
|             if (_Cell != null && _SuspendUpdate == false)
 | |
|                 _Cell.EditorValueChanged(this);
 | |
| 
 | |
|             base.OnValueChanged(e);
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region GetValue
 | |
| 
 | |
|         ///<summary>
 | |
|         /// GetValue
 | |
|         ///</summary>
 | |
|         ///<param name="value"></param>
 | |
|         ///<returns></returns>
 | |
|         public virtual int GetValue(object value)
 | |
|         {
 | |
|             GridPanel panel = _Cell.GridPanel;
 | |
| 
 | |
|             if (value == null ||
 | |
|                 (panel.NullValue == NullValue.DBNull && value == DBNull.Value))
 | |
|             {
 | |
|                 return (0);
 | |
|             }
 | |
| 
 | |
|             if (value is SqlInt16)
 | |
|             {
 | |
|                 SqlInt16 sdt = (SqlInt16) value;
 | |
| 
 | |
|                 if (sdt.IsNull == true)
 | |
|                     return (0);
 | |
| 
 | |
|                 return (sdt.Value);
 | |
|             }
 | |
| 
 | |
|             if (value is SqlInt32)
 | |
|             {
 | |
|                 SqlInt32 sdt = (SqlInt32)value;
 | |
| 
 | |
|                 if (sdt.IsNull == true)
 | |
|                     return (0);
 | |
| 
 | |
|                 return (sdt.Value);
 | |
|             }
 | |
|             
 | |
|             if (_Cell.IsValueExpression == true)
 | |
|                 value = _Cell.GetExpValue((string)value);
 | |
| 
 | |
|             return (Convert.ToInt32(value));
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region IGridCellEditControl Members
 | |
| 
 | |
|         #region Public properties
 | |
| 
 | |
|         #region CanInterrupt
 | |
| 
 | |
|         /// <summary>
 | |
|         /// CanInterrupt
 | |
|         /// </summary>
 | |
|         public bool CanInterrupt
 | |
|         {
 | |
|             get { return (true); }
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region CellEditMode
 | |
| 
 | |
|         /// <summary>
 | |
|         /// CellEditMode
 | |
|         /// </summary>
 | |
|         public CellEditMode CellEditMode
 | |
|         {
 | |
|             get { return (CellEditMode.Modal); }
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region EditorCell
 | |
| 
 | |
|         /// <summary>
 | |
|         /// EditorCell
 | |
|         /// </summary>
 | |
|         public GridCell EditorCell
 | |
|         {
 | |
|             get { return (_Cell); }
 | |
|             set { _Cell = value; }
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region EditorCellBitmap
 | |
| 
 | |
|         ///<summary>
 | |
|         /// EditorCellBitmap
 | |
|         ///</summary>
 | |
|         public Bitmap EditorCellBitmap
 | |
|         {
 | |
|             get { return (_EditorCellBitmap); }
 | |
| 
 | |
|             set
 | |
|             {
 | |
|                 if (_EditorCellBitmap != null)
 | |
|                     _EditorCellBitmap.Dispose();
 | |
| 
 | |
|                 _EditorCellBitmap = value;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region EditorFormattedValue
 | |
| 
 | |
|         ///<summary>
 | |
|         /// EditorFormattedValue
 | |
|         ///</summary>
 | |
|         public virtual string EditorFormattedValue
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 if (_Cell != null && _Cell.IsValueNull == true)
 | |
|                     return (_Cell.NullString);
 | |
| 
 | |
|                 return (Text);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region EditorPanel
 | |
| 
 | |
|         /// <summary>
 | |
|         /// EditorPanel
 | |
|         /// </summary>
 | |
|         public EditorPanel EditorPanel
 | |
|         {
 | |
|             get { return (_EditorPanel); }
 | |
|             set { _EditorPanel = value; }
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region EditorValue
 | |
| 
 | |
|         /// <summary>
 | |
|         /// EditorValue
 | |
|         /// </summary>
 | |
|         public virtual object EditorValue
 | |
|         {
 | |
|             get { return (Value); }
 | |
|             set { Value = GetValue(value); }
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region EditorValueChanged
 | |
| 
 | |
|         /// <summary>
 | |
|         /// EditorValueChanged
 | |
|         /// </summary>
 | |
|         public virtual bool EditorValueChanged
 | |
|         {
 | |
|             get { return (_ValueChanged); }
 | |
| 
 | |
|             set
 | |
|             {
 | |
|                 if (_ValueChanged != value)
 | |
|                 {
 | |
|                     _ValueChanged = value;
 | |
| 
 | |
|                     if (value == true)
 | |
|                         _Cell.SetEditorDirty(this);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region EditorValueType
 | |
| 
 | |
|         ///<summary>
 | |
|         /// EditorValueType
 | |
|         ///</summary>
 | |
|         public virtual Type EditorValueType
 | |
|         {
 | |
|             get { return (typeof(int)); }
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region StretchBehavior
 | |
| 
 | |
|         /// <summary>
 | |
|         /// StretchBehavior
 | |
|         /// </summary>
 | |
|         public virtual StretchBehavior StretchBehavior
 | |
|         {
 | |
|             get { return (_StretchBehavior); }
 | |
|             set { _StretchBehavior = value; }
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region SuspendUpdate
 | |
| 
 | |
|         /// <summary>
 | |
|         /// SuspendUpdate
 | |
|         /// </summary>
 | |
|         public bool SuspendUpdate
 | |
|         {
 | |
|             get { return (_SuspendUpdate); }
 | |
|             set { _SuspendUpdate = value; }
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region ValueChangeBehavior
 | |
| 
 | |
|         /// <summary>
 | |
|         /// ValueChangeBehavior
 | |
|         /// </summary>
 | |
|         public virtual ValueChangeBehavior ValueChangeBehavior
 | |
|         {
 | |
|             get { return (ValueChangeBehavior.InvalidateRender); }
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region InitializeContext
 | |
| 
 | |
|         ///<summary>
 | |
|         /// InitializeContext
 | |
|         ///</summary>
 | |
|         ///<param name="cell"></param>
 | |
|         ///<param name="style"></param>
 | |
|         public virtual void InitializeContext(GridCell cell, CellVisualStyle style)
 | |
|         {
 | |
|             _Cell = cell;
 | |
| 
 | |
|             if (style != null)
 | |
|             {
 | |
|                 Enabled = (_Cell.ReadOnly == false);
 | |
|                 Font = style.Font;
 | |
|                 ForeColor = style.TextColor;
 | |
|             }
 | |
| 
 | |
|             Value = GetValue(cell.Value);
 | |
| 
 | |
|             _ValueChanged = false;
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region GetProposedSize
 | |
| 
 | |
|         ///<summary>
 | |
|         /// GetProposedSize
 | |
|         ///</summary>
 | |
|         ///<param name="g"></param>
 | |
|         ///<param name="cell"></param>
 | |
|         ///<param name="style"></param>
 | |
|         ///<param name="constraintSize"></param>
 | |
|         ///<returns></returns>
 | |
|         public virtual Size GetProposedSize(Graphics g,
 | |
|             GridCell cell, CellVisualStyle style, Size constraintSize)
 | |
|         {
 | |
|             Size size = GetPreferredSize(constraintSize);
 | |
| 
 | |
|             return (size);
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region Edit support
 | |
| 
 | |
|         #region BeginEdit
 | |
| 
 | |
|         /// <summary>
 | |
|         /// BeginEdit
 | |
|         /// </summary>
 | |
|         /// <param name="selectAll"></param>
 | |
|         /// <returns></returns>
 | |
|         public virtual bool BeginEdit(bool selectAll)
 | |
|         {
 | |
|             if (FreeTextEntryMode == true)
 | |
|             {
 | |
|                 TextBox box = GetFreeTextBox() as TextBox;
 | |
| 
 | |
|                 if (box != null)
 | |
|                 {
 | |
|                     if (selectAll == true)
 | |
|                         box.SelectAll();
 | |
|                 }
 | |
|             }
 | |
|             
 | |
|             return (false);
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region EndEdit
 | |
| 
 | |
|         /// <summary>
 | |
|         /// EndEdit
 | |
|         /// </summary>
 | |
|         /// <returns></returns>
 | |
|         public virtual bool EndEdit()
 | |
|         {
 | |
|             CloseDropDown();
 | |
| 
 | |
|             return (false);
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region CancelEdit
 | |
| 
 | |
|         /// <summary>
 | |
|         /// CancelEdit
 | |
|         /// </summary>
 | |
|         /// <returns></returns>
 | |
|         public virtual bool CancelEdit()
 | |
|         {
 | |
|             CloseDropDown();
 | |
| 
 | |
|             return (false);
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region CellRender
 | |
| 
 | |
|         /// <summary>
 | |
|         /// CellRender
 | |
|         /// </summary>
 | |
|         /// <param name="g"></param>
 | |
|         public virtual void CellRender(Graphics g)
 | |
|         {
 | |
|             _Cell.CellRender(this, g);
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region Keyboard support
 | |
| 
 | |
|         #region CellKeyDown
 | |
| 
 | |
|         ///<summary>
 | |
|         /// CellKeyDown
 | |
|         ///</summary>
 | |
|         public virtual void CellKeyDown(KeyEventArgs e)
 | |
|         {
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region WantsInputKey
 | |
| 
 | |
|         /// <summary>
 | |
|         /// WantsInputKey
 | |
|         /// </summary>
 | |
|         /// <param name="key"></param>
 | |
|         /// <param name="gridWantsKey"></param>
 | |
|         /// <returns></returns>
 | |
|         public virtual bool WantsInputKey(Keys key, bool gridWantsKey)
 | |
|         {
 | |
|             if ((key & Keys.KeyCode) == Keys.Tab)
 | |
|             {
 | |
|                 ApplyFreeTextValue();
 | |
| 
 | |
|                 return (false);
 | |
|             }
 | |
| 
 | |
|             if (IsCalculatorDisplayed == true)
 | |
|                 return (true);
 | |
| 
 | |
|             switch (key & Keys.KeyCode)
 | |
|             {
 | |
|                 case Keys.Left:
 | |
|                 case Keys.Right:
 | |
|                 case Keys.Home:
 | |
|                 case Keys.End:
 | |
|                 case Keys.Up:
 | |
|                 case Keys.Down:
 | |
|                     return (true);
 | |
| 
 | |
|                 case Keys.Enter:
 | |
|                     ApplyFreeTextValue();
 | |
|                     return (gridWantsKey == false);
 | |
| 
 | |
|                 default:
 | |
|                     return (gridWantsKey == false);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region Mouse support
 | |
| 
 | |
|         #region OnCellMouseMove
 | |
| 
 | |
|         ///<summary>
 | |
|         /// OnCellMouseMove
 | |
|         ///</summary>
 | |
|         ///<param name="e"></param>
 | |
|         public virtual void OnCellMouseMove(MouseEventArgs e)
 | |
|         {
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region OnCellMouseEnter
 | |
| 
 | |
|         ///<summary>
 | |
|         /// OnCellMouseEnter
 | |
|         ///</summary>
 | |
|         ///<param name="e"></param>
 | |
|         public virtual void OnCellMouseEnter(EventArgs e)
 | |
|         {
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region OnCellMouseLeave
 | |
| 
 | |
|         ///<summary>
 | |
|         /// OnCellMouseLeave
 | |
|         ///</summary>
 | |
|         ///<param name="e"></param>
 | |
|         public virtual void OnCellMouseLeave(EventArgs e)
 | |
|         {
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region OnCellMouseUp
 | |
| 
 | |
|         ///<summary>
 | |
|         /// OnCellMouseUp
 | |
|         ///</summary>
 | |
|         ///<param name="e"></param>
 | |
|         public virtual void OnCellMouseUp(MouseEventArgs e)
 | |
|         {
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region OnCellMouseDown
 | |
| 
 | |
|         ///<summary>
 | |
|         /// OnCellMouseDown
 | |
|         ///</summary>
 | |
|         ///<param name="e"></param>
 | |
|         public virtual void OnCellMouseDown(MouseEventArgs e)
 | |
|         {
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region IGridCellEditorFocus members
 | |
| 
 | |
|         #region FocusEditor
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gives focus to the editor
 | |
|         /// </summary>
 | |
|         public void FocusEditor()
 | |
|         {
 | |
|             if (IsEditorFocused == false)
 | |
|             {
 | |
|                 if (FreeTextEntryMode == true)
 | |
|                 {
 | |
|                     TextBox box = GetFreeTextBox() as TextBox;
 | |
| 
 | |
|                     if (box != null)
 | |
|                         box.Focus();
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     Focus();
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region IsEditorFocused
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets whether editor has the focus
 | |
|         /// </summary>
 | |
|         public bool IsEditorFocused
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 if (FreeTextEntryMode == true)
 | |
|                 {
 | |
|                     TextBox box = GetFreeTextBox() as TextBox;
 | |
| 
 | |
|                     if (box != null)
 | |
|                         return (box.Focused);
 | |
|                 }
 | |
| 
 | |
|                 return (Focused);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #endregion
 | |
|     }
 | |
| }
 |