Example #1
0
        public override string setValue(string val, string steering)
        {
            String[] parameters = val.Split(";".ToCharArray());
            if (parameters.Length == 3)
            {
                String rowStr = parameters[0];
                String colStr = parameters[1];
                int    visibleRowIndex, visibleColIndex;

                String value    = parameters[2];
                bool   hasValue = false;
                if (!String.IsNullOrEmpty(value))
                {
                    if (!value.Trim().StartsWith("{") && !value.Trim().EndsWith("}"))
                    {
                        hasValue = true;
                    }
                    else
                    {
                        value = value.ToLower().Substring(value.IndexOf('{') + 1);
                        value = value.Substring(0, value.IndexOf('}'));
                        if (value.EndsWith("click"))
                        {
                            steering = value;
                            value    = String.Empty;
                        }
                    }
                }
                if (int.TryParse(rowStr, out visibleRowIndex) && int.TryParse(colStr, out visibleColIndex))
                {
                    // first we have to find the real indexes for rows and cols
                    if (flexGrid.Name.ToLower().Equals("splitgrid"))
                    {
                        visibleRowIndex--;
                    }
                    int realRowIndex = wrapper.GetRealRowIndex(visibleRowIndex);
                    int realColIndex = wrapper.GetRealColIndex(--visibleColIndex);

                    if (!hasValue)
                    {
                        // it is a mouseSteering
                        if (!String.IsNullOrEmpty(value))
                        {
                            // on drag or drop we always use the first col for a doubleClick
                            String expandCollapseValue = wrapper.GetHierarchieColValue(realRowIndex);
                            if (expandCollapseValue != null)
                            {
                                String errorMsg = "Unbekanntes Handling: {" + value + "}";
                                switch (expandCollapseValue.Trim().ToLower())
                                {
                                case "+":
                                    if (value == "expand")
                                    {
                                        realColIndex = 0;
                                    }
                                    else if (value == "collapse")
                                    {
                                        return(ReturnOK);
                                    }
                                    else
                                    {
                                        return(errorMsg);
                                    }
                                    break;

                                case "-":
                                    if (value == "collapse")
                                    {
                                        realColIndex = 0;
                                    }
                                    else if (value == "expand")
                                    {
                                        return(ReturnOK);
                                    }
                                    else
                                    {
                                        return(errorMsg);
                                    }
                                    break;

                                case "":
                                    return(ReturnOK);
                                }
                                steering = value;
                            }
                            else
                            {
                                return("Keine Spalte für Expand und Collapse gefunden");
                            }
                        }
                        Rectangle rect = wrapper.GetSteeringRectangle(realRowIndex, realColIndex, steering);
                        if (!rect.IsEmpty)
                        {
                            if (rect.Width > 0 && rect.Height > 0)
                            {
                                if (HandleSteering(rect, steering))
                                {
                                    if (steering.ToLower() == "doubleclick")
                                    {
                                        return(ReturnCheckOKRectangle(rect));
                                    }
                                    else
                                    {
                                        return(ReturnOK);
                                    }
                                }
                                else
                                {
                                    return("Unbekanntes Steering: >" + steering + "<");
                                }
                            }
                            else
                            {
                                return("Kein Rechteck zum Klicken vorhanden, Zelle ist unsichtbar");
                            }
                        }
                        return("Kein Rechteck zum Klicken vorhanden");
                    }
                    else
                    {
                        return(wrapper.SetValue(realRowIndex, realColIndex, value));
                    }
                }
            }

            // Wenn keine Zeile oder keine Spalte im TestStep eingetragen wurde:
            // Wir ignorieren alles, was aus dem TestStep kommt
            // und droppen auf die Zeile 0 und die Spalte 1
            if (steering.ToLower() == "drop")
            {
                // Ermittle rect mit Zeile 0, Spalte 1:
                Rectangle rect = wrapper.GetSteeringRectangle(0, 1, steering);
                if (HandleSteering(rect, steering))
                {
                    return(ReturnOK);
                }
            }
            // da nichts mit SetValue in C1FlexGrid funktioniert hat:
            return("Fehler im SetValue von C1FlexGrid");
        }