public override void InitializeEditingControl(int rowIndex, object initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle) { // Set the value of the editing control to the current cell value. base.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle); Reportman.Reporting.Variant nvalue = (Variant)GetColumnValue("VALUE", rowIndex); ObjectInspectorCellType ntype = (ObjectInspectorCellType)GetColumnValue("TYPEENUM", rowIndex); if (ntype == ObjectInspectorCellType.Image) { nvalue = (Variant)GetColumnValue("VALUEBIN", rowIndex); } if (DataGridView.EditingControl is DataGridViewComboBoxEditingControl) { ComboBoxPicker = DataGridView.EditingControl as DataGridViewComboBoxEditingControl; Strings list = (Strings)GetColumnValue("VALUELIST", rowIndex); ComboBoxPicker.Items.Clear(); foreach (string s in list) { ComboBoxPicker.Items.Add(s); } if (ntype == ObjectInspectorCellType.DropDown) { ComboBoxPicker.DropDownStyle = ComboBoxStyle.DropDown; ComboBoxPicker.Text = nvalue.ToString(); } else { ComboBoxPicker.DropDownStyle = ComboBoxStyle.DropDownList; if (!(nvalue.IsNull)) { int index = -1; if (nvalue.IsString()) { index = ComboBoxPicker.Items.IndexOf(nvalue.ToString()); } else { index = nvalue; } if ((index < ComboBoxPicker.Items.Count) && (index >= 0)) { ComboBoxPicker.SelectedIndex = index; } else { ComboBoxPicker.SelectedIndex = -1; } } else { ComboBoxPicker.SelectedIndex = -1; } } } else if (DataGridView.EditingControl is DataGridViewTextBoxEditingControl) { TextBoxPicker = DataGridView.EditingControl as DataGridViewTextBoxEditingControl; switch (ntype) { case ObjectInspectorCellType.FontStyle: TextBoxPicker.ReadOnly = true; TextBoxPicker.BackColor = SystemColors.Info; TextBoxPicker.ForeColor = SystemColors.InfoText; TextBoxPicker.Click += ClickFontStyleEvent; TextBoxPicker.Text = GraphicUtils.StringFontStyleFromInteger((int)nvalue); break; default: TextBoxPicker.Text = nvalue.ToString(); break; } } else if (DataGridView.EditingControl is PanelColorPicker) { ColorPickerc = DataGridView.EditingControl as PanelColorPicker; if (nvalue.IsNull) { ColorPickerc.TextDisplayed = false; ColorPickerc.Color = Color.White; } else { ColorPickerc.TextDisplayed = true; ColorPickerc.Color = GraphicUtils.ColorFromInteger(nvalue); } } else if (DataGridView.EditingControl is PanelImagePicker) { ImagePickerc = DataGridView.EditingControl as PanelImagePicker; ImagePickerc.xrow = ((DataRowView)DataGridView.Rows[rowIndex].DataBoundItem).Row; if (nvalue.IsNull) { ImagePickerc.MemStream = new System.IO.MemoryStream(); } else { ImagePickerc.MemStream = nvalue.GetStream(); } } else if (DataGridView.EditingControl is CheckBoxPickerControl) { CheckBoxPicker = DataGridView.EditingControl as CheckBoxPickerControl; if (nvalue.IsNull) { CheckBoxPicker.CheckState = CheckState.Indeterminate; } else { CheckBoxPicker.Checked = (bool)nvalue; } } else if (DataGridView.EditingControl is EllipsisEditingControl) { EllipsisPicker = DataGridView.EditingControl as EllipsisEditingControl; EllipsisPicker.Text = nvalue.ToString(); switch (ntype) { case ObjectInspectorCellType.FontName: EllipsisPicker.ButtonClick += ClickFontNameEvent; break; } } else if (DataGridView.EditingControl is NumericUpDownPickerControl) { NumericPicker = DataGridView.EditingControl as NumericUpDownPickerControl; switch (ntype) { case ObjectInspectorCellType.Decimal: NumericPicker.DataType = TextBoxDataType.Numeric; break; case ObjectInspectorCellType.Integer: NumericPicker.DataType = TextBoxDataType.Integer; break; } if (nvalue.IsNull) { NumericPicker.Text = ""; } else { switch (ntype) { case ObjectInspectorCellType.Decimal: NumericPicker.Text = ((decimal)nvalue).ToString("##0.0000"); break; case ObjectInspectorCellType.Integer: NumericPicker.Text = nvalue.ToString(); break; } } } }
public override object ParseFormattedValue(object formattedValue, DataGridViewCellStyle cellStyle, System.ComponentModel.TypeConverter formattedValueTypeConverter, System.ComponentModel.TypeConverter valueTypeConverter) { object aresult = null; ObjectInspectorCellType celltype = (ObjectInspectorCellType)GetColumnValue("TYPEENUM"); switch (celltype) { case ObjectInspectorCellType.DropDownList: case ObjectInspectorCellType.DropDown: if (formattedValue.ToString().Length == 0) { aresult = DBNull.Value; } else { Strings list = (Strings)GetColumnValue("VALUELIST"); int index = list.IndexOf(formattedValue.ToString()); if (index < 0) { index = 0; } aresult = index; } break; case ObjectInspectorCellType.Text: case ObjectInspectorCellType.Expression: aresult = formattedValue.ToString(); break; case ObjectInspectorCellType.Color: if (formattedValue.ToString().Length == 0) { aresult = DBNull.Value; } else { aresult = GraphicUtils.IntegerFromColor((Color)formattedValue); } break; case ObjectInspectorCellType.Image: if (formattedValue is Variant) { Variant imvar = (Variant)formattedValue; if (imvar.VarType == VariantType.Binary) { System.IO.MemoryStream nstream = ((Variant)formattedValue).GetStream(); aresult = StringUtil.GetSizeAsString(nstream.Length); } else { aresult = formattedValue; } } else { aresult = ""; } break; case ObjectInspectorCellType.FontName: aresult = formattedValue.ToString(); break; case ObjectInspectorCellType.FontStyle: if (formattedValue.ToString().Length == 0) { aresult = DBNull.Value; } else { aresult = GraphicUtils.IntegerFromStringFontStyle(formattedValue.ToString()); } break; case ObjectInspectorCellType.Decimal: if (formattedValue.ToString().Length == 0) { aresult = DBNull.Value; } else { aresult = System.Convert.ToDecimal(formattedValue); } break; case ObjectInspectorCellType.Boolean: if (formattedValue.ToString().Length == 0) { aresult = DBNull.Value; } else { aresult = System.Convert.ToBoolean(formattedValue); } break; case ObjectInspectorCellType.Integer: if (formattedValue.ToString().Length == 0) { aresult = DBNull.Value; } else { aresult = (int)Math.Round(System.Convert.ToDecimal(formattedValue)); } break; } if (aresult == null) { aresult = base.ParseFormattedValue(formattedValue, cellStyle, formattedValueTypeConverter, valueTypeConverter); } return(aresult); }
protected override void Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates elementState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts) { // formattedValue = null; bool painted = false; Variant nvalue = (Variant)GetColumnValue("VALUE", rowIndex); if (!nvalue.IsNull) { ObjectInspectorCellType celltype = (ObjectInspectorCellType)GetColumnValue("TYPEENUM", rowIndex); if (celltype == ObjectInspectorCellType.Image) { nvalue = (Variant)GetColumnValue("VALUEBIN", rowIndex); } switch (celltype) { case ObjectInspectorCellType.DropDownList: case ObjectInspectorCellType.DropDown: Strings list = (Strings)GetColumnValue("VALUELIST", rowIndex); int index = -1; if (nvalue.IsString()) { index = list.IndexOf(nvalue); } else { index = nvalue; } if (index < list.Count) { if (index >= 0) { formattedValue = list[index]; } else { formattedValue = ""; } } break; case ObjectInspectorCellType.Text: break; case ObjectInspectorCellType.Decimal: Decimal dvalue = nvalue; formattedValue = dvalue.ToString("##,##0.000"); break; case ObjectInspectorCellType.Integer: Decimal ivalue = nvalue; formattedValue = ivalue.ToString("##,##0"); break; case ObjectInspectorCellType.Color: Color c = GraphicUtils.ColorFromInteger(nvalue); formattedValue = c.Name; cellStyle.BackColor = c; cellStyle.ForeColor = GraphicUtils.GetInvertedBlackWhite(c); break; case ObjectInspectorCellType.Image: System.IO.MemoryStream memstream = nvalue.GetStream(); formattedValue = StringUtil.GetSizeAsString(memstream.Length); break; case ObjectInspectorCellType.FontStyle: formattedValue = GraphicUtils.StringFontStyleFromInteger(nvalue); cellStyle.BackColor = SystemColors.Info; cellStyle.ForeColor = SystemColors.InfoText; break; case ObjectInspectorCellType.Boolean: bool boolvalue = (bool)nvalue; ButtonState nstate; if (boolvalue) { nstate = ButtonState.Checked; } else { nstate = ButtonState.Normal; } base.Paint(graphics, clipBounds, cellBounds, rowIndex, elementState, "", "", "", cellStyle, advancedBorderStyle, paintParts); // Make square cell Bounds // int checkwidth=(int)Math.Round((double)cellStyle.Font.Size*(double)96/(double)72); int checkwidth = 13; int x1 = cellBounds.Left; int y1 = cellBounds.Top; int width1 = cellBounds.Width; int height1 = cellBounds.Height; if (height1 > width1) { y1 = height1 - (checkwidth / 2); height1 = width1; } else { x1 = x1 + width1 / 2 - (checkwidth / 2); y1 = y1 + (height1 - checkwidth) / 2; width1 = height1; } Rectangle nbounds = new Rectangle(x1, y1, checkwidth, checkwidth); ControlPaint.DrawCheckBox(graphics, nbounds, nstate); painted = true; break; } } if (!painted) { base.Paint(graphics, clipBounds, cellBounds, rowIndex, elementState, value, formattedValue, errorText, cellStyle, advancedBorderStyle, paintParts); } /* Rectangle ColorBoxRect = new Rectangle(); * RectangleF TextBoxRect = new RectangleF(); * GetDisplayLayout(cellBounds, ref ColorBoxRect, ref TextBoxRect); * * //// Draw the cell background, if specified. * if ((paintParts & DataGridViewPaintParts.Background) == * DataGridViewPaintParts.Background) * { * SolidBrush cellBackground; * if (value != null && value.GetType() == typeof(Color)) * { * cellBackground = new SolidBrush((Color)value); * } * else * { * cellBackground = new SolidBrush(cellStyle.BackColor); * } * graphics.FillRectangle(cellBackground, ColorBoxRect); * graphics.DrawRectangle(Pens.Black, ColorBoxRect); * Color lclcolor = (Color)value; * graphics.DrawString(lclcolor.Name.ToString(), cellStyle.Font, System.Drawing.Brushes.Black, TextBoxRect); * * cellBackground.Dispose(); * }*/ }