private String SetValueWithEditor(int row, int col, String value) { MethodInfo setDataMethod = flexGrid.GetType().GetMethod("SetData", new Type[] { typeof(int), typeof(int), typeof(object) }); Object cellStyle = ReflectionHelper.ReflectionHelper.InvokeMethod(flexGrid, "GetCellStyle", new object[] { row, col }); Type dataType = null; if (cellStyle == null) { Object column = GetColumn(col); dataType = (Type)ReflectionHelper.ReflectionHelper.GetProperty(column, "DataType"); } else { dataType = (Type)ReflectionHelper.ReflectionHelper.GetProperty(cellStyle, "DataType");; } if (dataType == typeof(bool)) { if (value.ToLower() == "x" || value.ToLower() == "true" || value.ToLower() == "wahr" || value.ToLower().StartsWith("check")) { ReflectionHelper.ReflectionHelper.InvokeMethod(flexGrid, "SetData", new object[] { row, col, true }); return(OperatorGenericCtrl.ReturnOK); } if (value.ToLower() == " " || value.ToLower() == "false" || value.ToLower() == "falsch" || value.ToLower().StartsWith("uncheck")) { ReflectionHelper.ReflectionHelper.InvokeMethod(flexGrid, "SetData", new object[] { row, col, false }); return(OperatorGenericCtrl.ReturnOK); } return("Der Wert >" + value + "< kann nicht auf eine CheckBox-Zelle gesetzt werden"); } else { Control editor = ReflectionHelper.ReflectionHelper.GetProperty(flexGrid, "Editor") as Control; if (editor != null) { paramAction paramAction = new paramAction(); paramAction.PtHwnd = editor.Handle; TricentisWindowFormCtrls.Operator op = new TricentisWindowFormCtrls.Operator(paramAction); OperatorGenericCtrl genericCtrl = op.getOperatorControl(paramAction); if (genericCtrl != null) { genericCtrl.setValue(value, ""); return(OperatorGenericCtrl.ReturnOK); } } } // default solution if no editor was found ReflectionHelper.ReflectionHelper.InvokeMethod(flexGrid, "SetData", new object[] { row, col, value }); return(OperatorGenericCtrl.ReturnOK); //return "Fehler beim Editieren der Zelle des FlexGrid. Kann Zellen vom Typ >" + dataType.Name + "< nicht editieren"; }
public OperatorGenericCtrl getCustomControl(paramAction pa) { Control ctrl = Control.FromHandle(pa.PtHwnd); if (ctrl != null) { if (ctrl is MdiClient) { return(new MdiClientControl(ctrl)); } // Find Reflection Controls Type currType = ctrl.GetType(); do { Logger.Instance.Log(this, "Searching Custom Control for " + currType.FullName); switch (currType.FullName) { case "lbase.ppj.common.Controls.clsTriCheck": return(new TriCheckControl(ctrl)); case "PPJ.Runtime.Windows.C1RibbonBarEx": case "C1.Win.C1Ribbon.C1Ribbon": return(new C1Ribbon(ctrl)); //case "PPJ.Runtime.Windows.C1RibbonBarEx": // return new C1RibbonBarEx(ctrl); case "C1.Win.C1FlexGrid.C1FlexGrid": return(new C1FlexGrid(ctrl)); default: Logger.Instance.Log(this, "No Control found for " + currType.FullName); break; } currType = currType.BaseType; } while (currType != null && currType != typeof(Control)); } return(null); }