public bool FetchDataFromCellsMisys(object objCommand, ref object objResult, ref object objError)
        {
            Logger.logBegin("FetchDataFromCellsMisys");

            const string cnst_CONDITION = "CONDITION:";
            string strCommand = objCommand == null ?  null : objCommand.ToString();
            try
            {

                if (string.IsNullOrEmpty(strCommand))
                {
                    throw new Exception("objCommand should not be NULL or empty");
                }

                /** check Command **/
                /*  ' format :
                    '   ROWS_LIMIT:0:0;Code/Name
                    '   ALLROWS;ColumnsName
                    '   CONDITION:COLUMN=A;ColumnName;NOSUB, Example: CONDITION:0=@FO_test;Income;NOSUB
                    '       NOSUB means don't get all sub information, other wise get all sub expanded rows
                 * */
                if (!TigerMarsUtil.RegularTest("^CONDITION:", strCommand))
                {
                    throw new Exception(string.Format("No supported Command, [{0}]", strCommand));
                }
                //objReflect.GetMember<object>(objDataSrcTmp,"")

                if (TigerMarsUtil.RegularTest("^" + cnst_CONDITION, strCommand))
                {
                    #region CONDITION MODE
                    //CONDITION:COLUMN=A;ColumnName;NOSUB, Example: CONDITION:0=@FO_test;Income;NOSUB
                    if (!TigerMarsUtil.RegularTest(@"CONDITION:\S+=\S{1,};\b\w+\b(;NOSUB){0,1}", strCommand))
                    {
                        objError = string.Format("RC should match CONDITION:\\b\\w+\\b=\\w+;\\b\\w+\\b(;NOSUB), Command:{0}", strCommand);
                        Logger.Error("FetchDataFromCellsMisys", (string)objError);
                        return false;
                    }

                    string strCmdNoHeader = strCommand.Replace(cnst_CONDITION, "");
                    string[] arrTargetField = strCmdNoHeader.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
                    string strTargetField = arrTargetField[1];
                    string[] arrCondition = arrTargetField[0].Split(new string[] { "=" }, StringSplitOptions.RemoveEmptyEntries);

                    TreeList objTr = (TreeList)base.SourceControl;

                    CustomTreeList objCTrlst = (CustomTreeList)objTr;
                    object objDataSrcTmp = objCTrlst.DataSource;
                    ReflectorForCSharp objReflect = new ReflectorForCSharp();
                    CSMPortfolio objPortC = null;
                    CSMPosition objPortCsub = null ;
                    //object objPortfolio = objReflect.GetMember<object>(objDataSrcTmp, "Portfolio");
                    //CSMPortfolio objPortC = (CSMPortfolio)objPortfolio;
                    //double dIncome = objPortC.GetIncome();
                    object tmpData = objReflect.GetMember<object>(objTr, "Data");
                    UnboundData unData = (UnboundData)tmpData;
                    VirtualDataRow objVDataRow = null;
                    bool isFind = false;
                    string strHeadName = "";
                    int iLevel = -1;
                    double dDat = 0.00;
                    string strResult = "", strTmp="";
                    for (int i = 0; i < unData.DataList.Count; i++)
                    {
                        objVDataRow = (VirtualDataRow)unData.DataList[i];
                        objPortC = (CSMPortfolio)(objReflect.GetMember<object>(objVDataRow.VirtualNode, "Portfolio"));
                        iLevel = objPortC.GetLevel();
                        if ((iLevel<=1)&&(isFind))
                        {
                            break;
                        }
                        strHeadName = objPortC.GetName()==null?"":objPortC.GetName().ToString();
                        if (!isFind)
                        {
                            /** Only the root level can be taken as comparison node **/
                            if (iLevel != 1) continue;
                            if (!TigerMarsUtil.RegularTest(arrCondition[1], strHeadName)) continue;
                            else
                                isFind = true;
                        }

                        switch(strTargetField.ToUpper())
                        {
                            case "INCOME":
                                dDat = objPortC.GetIncome()*1000;
                                strTmp = dDat.ToString("0.");
                                break;
                            case "NAV":
                                dDat = objPortC.GetNetAssetValue() * 1000;
                                strTmp = dDat.ToString("0.");
                                break;
                            case "RESULT":
                                dDat = objPortC.GetResult() * 1000;
                                strTmp = dDat.ToString("0.");
                                break;
                            case "REALIZED":
                                dDat = objPortC.GetRealised() * 1000;
                                strTmp = dDat.ToString("0.");
                                break;
                            case "BALANCE":
                                dDat = objPortC.GetBalance() * 1000;
                                strTmp = dDat.ToString("0.");
                                break;
                            default:
                                throw new Exception(string.Format("Not supported field :[{0}]", strTargetField));
                        }
                        if (string.IsNullOrEmpty(strResult))
                        {
                            strResult = string.Format("[{0}{1}]", strHeadName,FormatStrWithTab(0,strTmp));
                        }
                        else
                        {
                            strResult = string.Format("{0}\n\r{1}",strResult, string.Format("[{0}{1}]", strHeadName, FormatStrWithTab(0, strTmp)));
                        }

                        for (int j = 0; j < objVDataRow.Children.Count; j++)
                        {
                            //objVDataRow.Children[j];
                            objPortCsub = (CSMPosition)objReflect.GetMember<object>(objVDataRow.Children[j], "Position");
                            strHeadName = objVDataRow.Children[j].ToString();
                            if (objPortCsub == null) continue;
                            switch (strTargetField.ToUpper())
                            {
                                case "INCOME":
                                    dDat = objPortCsub.GetIncome() * 1000;
                                    strTmp = dDat.ToString("0.");
                                    break;
                                case "NAV":
                                    dDat = objPortCsub.GetNetAssetValue() * 1000;
                                    strTmp = dDat.ToString("0.");
                                    break;
                                case "RESULT":
                                    dDat = objPortCsub.GetResult() * 1000;
                                    strTmp = dDat.ToString("0.");
                                    break;
                                case "REALIZED":
                                    dDat = objPortCsub.GetRealised() * 1000;
                                    strTmp = dDat.ToString("0.");
                                    break;
                                case "BALANCE":
                                    dDat = objPortCsub.GetBalance() * 1000;
                                    strTmp = dDat.ToString("0.");
                                    break;
                                default:
                                    throw new Exception(string.Format("Not supported field :[{0}]", strTargetField));
                            }
                            strResult = string.Format("{0}\n\r{1}", strResult, string.Format("[{0}    {1}]", strHeadName, FormatStrWithTab(0, strTmp)));
                        }
                        break;
                    }
                    objResult = strResult;
                    return true;
                    #endregion //CONDTION MODE
                }

                objError = string.Format("Unsupported Command formatter:[{0}]", strCommand);
                return false;
            }
            catch (Exception e)
            {
                objError = e.Message;
                Logger.Error("FetchDataFromCellsMisys", string.Format("Errors come across. Exception:[{0}]", e.Message), e);
                return false;
            }
            finally
            {
                Logger.logEnd("FetchDataFromCellsMisys");
            }
        }
        public bool FetchDataFromCellsMisys(object objCommand, ref object objResult, ref object objError)
        {
            Logger.logBegin("FetchDataFromCellsMisys");

            const string cnst_CONDITION = "CONDITION:";
            string       strCommand     = objCommand == null ?  null : objCommand.ToString();

            try
            {
                if (string.IsNullOrEmpty(strCommand))
                {
                    throw new Exception("objCommand should not be NULL or empty");
                }

                /** check Command **/

                /*  ' format :
                 *  '   ROWS_LIMIT:0:0;Code/Name
                 *  '   ALLROWS;ColumnsName
                 *  '   CONDITION:COLUMN=A;ColumnName;NOSUB, Example: CONDITION:0=@FO_test;Income;NOSUB
                 *  '       NOSUB means don't get all sub information, other wise get all sub expanded rows
                 * */
                if (!TigerMarsUtil.RegularTest("^CONDITION:", strCommand))
                {
                    throw new Exception(string.Format("No supported Command, [{0}]", strCommand));
                }
                //objReflect.GetMember<object>(objDataSrcTmp,"")

                if (TigerMarsUtil.RegularTest("^" + cnst_CONDITION, strCommand))
                {
                    #region CONDITION MODE
                    //CONDITION:COLUMN=A;ColumnName;NOSUB, Example: CONDITION:0=@FO_test;Income;NOSUB
                    if (!TigerMarsUtil.RegularTest(@"CONDITION:\S+=\S{1,};\b\w+\b(;NOSUB){0,1}", strCommand))
                    {
                        objError = string.Format("RC should match CONDITION:\\b\\w+\\b=\\w+;\\b\\w+\\b(;NOSUB), Command:{0}", strCommand);
                        Logger.Error("FetchDataFromCellsMisys", (string)objError);
                        return(false);
                    }

                    string   strCmdNoHeader = strCommand.Replace(cnst_CONDITION, "");
                    string[] arrTargetField = strCmdNoHeader.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
                    string   strTargetField = arrTargetField[1];
                    string[] arrCondition   = arrTargetField[0].Split(new string[] { "=" }, StringSplitOptions.RemoveEmptyEntries);

                    TreeList objTr = (TreeList)base.SourceControl;

                    CustomTreeList     objCTrlst     = (CustomTreeList)objTr;
                    object             objDataSrcTmp = objCTrlst.DataSource;
                    ReflectorForCSharp objReflect    = new ReflectorForCSharp();
                    CSMPortfolio       objPortC      = null;
                    CSMPosition        objPortCsub   = null;
                    //object objPortfolio = objReflect.GetMember<object>(objDataSrcTmp, "Portfolio");
                    //CSMPortfolio objPortC = (CSMPortfolio)objPortfolio;
                    //double dIncome = objPortC.GetIncome();
                    object         tmpData = objReflect.GetMember <object>(objTr, "Data");
                    UnboundData    unData = (UnboundData)tmpData;
                    VirtualDataRow objVDataRow = null;
                    bool           isFind = false;
                    string         strHeadName = "";
                    int            iLevel = -1;
                    double         dDat = 0.00;
                    string         strResult = "", strTmp = "";
                    for (int i = 0; i < unData.DataList.Count; i++)
                    {
                        objVDataRow = (VirtualDataRow)unData.DataList[i];
                        objPortC    = (CSMPortfolio)(objReflect.GetMember <object>(objVDataRow.VirtualNode, "Portfolio"));
                        iLevel      = objPortC.GetLevel();
                        if ((iLevel <= 1) && (isFind))
                        {
                            break;
                        }
                        strHeadName = objPortC.GetName() == null?"":objPortC.GetName().ToString();
                        if (!isFind)
                        {
                            /** Only the root level can be taken as comparison node **/
                            if (iLevel != 1)
                            {
                                continue;
                            }
                            if (!TigerMarsUtil.RegularTest(arrCondition[1], strHeadName))
                            {
                                continue;
                            }
                            else
                            {
                                isFind = true;
                            }
                        }

                        switch (strTargetField.ToUpper())
                        {
                        case "INCOME":
                            dDat   = objPortC.GetIncome() * 1000;
                            strTmp = dDat.ToString("0.");
                            break;

                        case "NAV":
                            dDat   = objPortC.GetNetAssetValue() * 1000;
                            strTmp = dDat.ToString("0.");
                            break;

                        case "RESULT":
                            dDat   = objPortC.GetResult() * 1000;
                            strTmp = dDat.ToString("0.");
                            break;

                        case "REALIZED":
                            dDat   = objPortC.GetRealised() * 1000;
                            strTmp = dDat.ToString("0.");
                            break;

                        case "BALANCE":
                            dDat   = objPortC.GetBalance() * 1000;
                            strTmp = dDat.ToString("0.");
                            break;

                        default:
                            throw new Exception(string.Format("Not supported field :[{0}]", strTargetField));
                        }
                        if (string.IsNullOrEmpty(strResult))
                        {
                            strResult = string.Format("[{0}{1}]", strHeadName, FormatStrWithTab(0, strTmp));
                        }
                        else
                        {
                            strResult = string.Format("{0}\n\r{1}", strResult, string.Format("[{0}{1}]", strHeadName, FormatStrWithTab(0, strTmp)));
                        }

                        for (int j = 0; j < objVDataRow.Children.Count; j++)
                        {
                            //objVDataRow.Children[j];
                            objPortCsub = (CSMPosition)objReflect.GetMember <object>(objVDataRow.Children[j], "Position");
                            strHeadName = objVDataRow.Children[j].ToString();
                            if (objPortCsub == null)
                            {
                                continue;
                            }
                            switch (strTargetField.ToUpper())
                            {
                            case "INCOME":
                                dDat   = objPortCsub.GetIncome() * 1000;
                                strTmp = dDat.ToString("0.");
                                break;

                            case "NAV":
                                dDat   = objPortCsub.GetNetAssetValue() * 1000;
                                strTmp = dDat.ToString("0.");
                                break;

                            case "RESULT":
                                dDat   = objPortCsub.GetResult() * 1000;
                                strTmp = dDat.ToString("0.");
                                break;

                            case "REALIZED":
                                dDat   = objPortCsub.GetRealised() * 1000;
                                strTmp = dDat.ToString("0.");
                                break;

                            case "BALANCE":
                                dDat   = objPortCsub.GetBalance() * 1000;
                                strTmp = dDat.ToString("0.");
                                break;

                            default:
                                throw new Exception(string.Format("Not supported field :[{0}]", strTargetField));
                            }
                            strResult = string.Format("{0}\n\r{1}", strResult, string.Format("[{0}    {1}]", strHeadName, FormatStrWithTab(0, strTmp)));
                        }
                        break;
                    }
                    objResult = strResult;
                    return(true);

                    #endregion //CONDTION MODE
                }

                objError = string.Format("Unsupported Command formatter:[{0}]", strCommand);
                return(false);
            }
            catch (Exception e)
            {
                objError = e.Message;
                Logger.Error("FetchDataFromCellsMisys", string.Format("Errors come across. Exception:[{0}]", e.Message), e);
                return(false);
            }
            finally
            {
                Logger.logEnd("FetchDataFromCellsMisys");
            }
        }
        /*		/// <summary>
        /// To change Window messages filter, implement this method.
        /// The default implementation is to get only the
        /// Control's window messages.
        /// </summary>
        public override WND_MsgFilter GetWndMessageFilter()
        {
            return WND_MsgFilter.WND_MSGS;
        }

        /// <summary>
        /// To catch window messages, implement this method.
        /// This method is called only if the CustomServer is running
        /// in the QuickTest context.
        /// </summary>
        public override RecordStatus OnMessage(ref Message tMsg)
        {
            // TODO:  Add OnMessage implementation.
            return RecordStatus.RECORD_HANDLED;
        }
        */
        /*		public void OnMouseDown(object sender, System.Windows.Forms.MouseEventArgs  e)
        {
            // This example shows how to create a script line in QuickTest
            // when a MouseDown event is encountered during recording.
            if(e.Button == System.Windows.Forms.MouseButtons.Left)
            {
                RecordFunction( "CustomMouseDown", RecordingMode.RECORD_SEND_LINE, e.X, e.Y);
            }
        }
        */
        /*		public void CustomMouseDown(int X, int Y)
        {
            MouseClick(X, Y, MOUSE_BUTTON.LEFT_MOUSE_BUTTON);
        }
        */
        //private bool FindNodeBySettings(TreeListNode objOneItem, int iDepths, int iCurrentLevel, string[] arrSearchItems, int iColumnId)
        //{
        //    Logger.logBegin("FindNodeBySettings");
        //    if (objOneItem == null)
        //    {
        //        Logger.Error("FindNodeBySettings", "Sub-nodes are null");
        //        return false;
        //    }
        //    TreeListNode objTmp = null ;
        //    while ((objTmp = objOneItem.NextNode) != null)
        //    {
        //        if (TigerMarsUtil.RegularTest(arrSearchItems[iCurrentLevel], objTmp.GetValue(iColumnId).ToString()))
        //        {
        //            Logger.Info("FindNodeBySettings", string.Format("find matched value :[{0}], Level:[{1}]", objTmp.GetValue(iColumnId).ToString(), iCurrentLevel));
        //            iCurrentLevel += 1;
        //            if (iCurrentLevel == iDepths) return true;
        //            if (objTmp.HasChildren) return FindNodeBySettings(objTmp.Nodes
        //        }
        //    }
        //    Logger.logEnd("FindNodeBySettings");
        //    return false;
        //}

        #endregion Other

        #if _sophis7_

        private bool FindNodeBySettings_Sophis(Sophis.Util.GUI.CustomTreeList objTreeList, int iDepths, int iCurrentDep, string[] arrNodeSearchItems, ref TreeListNode objCurrentNode, int iColumn)
        {
            Logger.logBegin("FindNodeBySettings_Sophis");
            ReflectorForCSharp objReflector = new ReflectorForCSharp();
            try
            {
                TreeListData objData = objReflector.GetMember<TreeListData>(objTreeList, "Data");
                if (objData == null)
                {
                    Logger.Info("FindNodeBySettings_Sophis", "Can't get Data from object instance via reflection.");
                    return false;
                }
                if (objData.DataList == null)
                {
                    Logger.Info("FindNodeBySettings_Sophis", "DataList is null");
                    return false;
                }
                /** +		virtualDataHelper	{Sophis.Util.GUI.CustomTLVDH}	DevExpress.XtraTreeList.TreeList.TreeListVirtualDataHelper {Sophis.Util.GUI.CustomTLVDH}
                 * -		objData.DataHelper	{DevExpress.XtraTreeList.Data.TreeListDataHelper}	DevExpress.XtraTreeList.Data.TreeListDataHelper

                object o = objData.GetValue(0, 0);
                string strCellDis = objTreeList.Nodes[0].GetDisplayText(objTreeList.Columns[0]) ;
                object or = objData.GetDataRow(objTreeList.Nodes[0].Id);
                strCellDis = objData.GetDisplayText(objTreeList.Nodes[0].Id, objTreeList.Columns[0].AbsoluteIndex, objTreeList.Nodes[0]);
                object oc = objReflector.GetMember<object>(objTreeList, "CurrencyManager");
                object ov = objReflector.CallPrivateMethod<object>(objTreeList, "GetNodeValue", new object[] {objTreeList.Nodes[0],objTreeList.Columns[0] });
                object objHelper0 = objReflector.GetMember<object>(objTreeList, "VirtualDataHelper");
                object objHelper2 = objReflector.GetPrivateProperty<object>(objTreeList, "VirtualDataHelper");
                TreeList.TreeListVirtualDataHelper objDataHelper = (TreeList.TreeListVirtualDataHelper)(objHelper0) ;
                object objCellData = objDataHelper.GetCellDataViaEvent(((VirtualDataRow)objData.DataList[0]).Node, objTreeList.Columns[0]);
                objCellData = objDataHelper.GetCellDataViaEvent(objTreeList.Nodes[0], objTreeList.Columns[0]);
                objCellData = objDataHelper.GetCellDataViaInterface(((VirtualDataRow)objData.DataList[0]).Node, objTreeList.Columns[0], null);
                objCellData = objDataHelper.GetCellDataViaInterface(objTreeList.Nodes[0], objTreeList.Columns[0], null);
                object value = typeof(TreeListVirtualData).GetField("virtualNodeToDataRowCache", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue(objData);
                 *  **/
                //DevExpress.XtraTreeList.TreeList.TreeListVirtualDataHelper objHelper1 = objReflector.GetPrivateProperty<DevExpress.XtraTreeList.TreeList.TreeListVirtualDataHelper>(objTreeList, "virtualDataHelper");
                 //GetCellDataViaEvent
                for (int i = 0; i < objData.DataList.Count; i++)
                {
                    object objRawItem = objData.DataList[i];
                    if (!(objRawItem is VirtualDataRow))
                    {
                        /** I don't know what it could be **/
                        continue;
                    }
                    VirtualDataRow objRow = (VirtualDataRow)objRawItem;

                    if (objRow.VirtualNode == null) continue;
                    string strCaption = objRow.VirtualNode.ToString();
                    if (TigerMarsUtil.RegularTest(arrNodeSearchItems[iCurrentDep], strCaption))
                    {
                        /** find **/
                        Logger.Info("FindNodeBySettings_Sophis",string.Format("Find Level [{0}] node information [{1}], with node value is:[{2}]", iCurrentDep, arrNodeSearchItems[iCurrentDep],strCaption));
                        if (iCurrentDep == iDepths - 1)
                        {
                            objCurrentNode = objTreeList.Nodes[i];
                            objTreeList.FocusedNode = objTreeList.Nodes[i];
                        }
                        return true;
                    }
                }
                return false;
            }
            catch (Exception e)
            {
                Logger.Error("FindNodeBySettings_Sophis",string.Format("Exceptions when trying to get data via Reflection. Exception:[{0}]", e.Message),e);
                return false;
            }
        }
        private bool FindNodeBySettings_Sophis(Sophis.Util.GUI.CustomTreeList objTreeList, int iDepths, int iCurrentDep, string[] arrNodeSearchItems, ref TreeListNode objCurrentNode, int iColumn)
        {
            Logger.logBegin("FindNodeBySettings_Sophis");
            ReflectorForCSharp objReflector = new ReflectorForCSharp();

            try
            {
                TreeListData objData = objReflector.GetMember <TreeListData>(objTreeList, "Data");
                if (objData == null)
                {
                    Logger.Info("FindNodeBySettings_Sophis", "Can't get Data from object instance via reflection.");
                    return(false);
                }
                if (objData.DataList == null)
                {
                    Logger.Info("FindNodeBySettings_Sophis", "DataList is null");
                    return(false);
                }

                /** +		virtualDataHelper	{Sophis.Util.GUI.CustomTLVDH}	DevExpress.XtraTreeList.TreeList.TreeListVirtualDataHelper {Sophis.Util.GUI.CustomTLVDH}
                 * -		objData.DataHelper	{DevExpress.XtraTreeList.Data.TreeListDataHelper}	DevExpress.XtraTreeList.Data.TreeListDataHelper
                 *
                 *
                 * object o = objData.GetValue(0, 0);
                 * string strCellDis = objTreeList.Nodes[0].GetDisplayText(objTreeList.Columns[0]) ;
                 * object or = objData.GetDataRow(objTreeList.Nodes[0].Id);
                 * strCellDis = objData.GetDisplayText(objTreeList.Nodes[0].Id, objTreeList.Columns[0].AbsoluteIndex, objTreeList.Nodes[0]);
                 * object oc = objReflector.GetMember<object>(objTreeList, "CurrencyManager");
                 * object ov = objReflector.CallPrivateMethod<object>(objTreeList, "GetNodeValue", new object[] {objTreeList.Nodes[0],objTreeList.Columns[0] });
                 * object objHelper0 = objReflector.GetMember<object>(objTreeList, "VirtualDataHelper");
                 * object objHelper2 = objReflector.GetPrivateProperty<object>(objTreeList, "VirtualDataHelper");
                 * TreeList.TreeListVirtualDataHelper objDataHelper = (TreeList.TreeListVirtualDataHelper)(objHelper0) ;
                 * object objCellData = objDataHelper.GetCellDataViaEvent(((VirtualDataRow)objData.DataList[0]).Node, objTreeList.Columns[0]);
                 * objCellData = objDataHelper.GetCellDataViaEvent(objTreeList.Nodes[0], objTreeList.Columns[0]);
                 * objCellData = objDataHelper.GetCellDataViaInterface(((VirtualDataRow)objData.DataList[0]).Node, objTreeList.Columns[0], null);
                 * objCellData = objDataHelper.GetCellDataViaInterface(objTreeList.Nodes[0], objTreeList.Columns[0], null);
                 * object value = typeof(TreeListVirtualData).GetField("virtualNodeToDataRowCache", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue(objData);
                 *  **/
                //DevExpress.XtraTreeList.TreeList.TreeListVirtualDataHelper objHelper1 = objReflector.GetPrivateProperty<DevExpress.XtraTreeList.TreeList.TreeListVirtualDataHelper>(objTreeList, "virtualDataHelper");
                //GetCellDataViaEvent
                for (int i = 0; i < objData.DataList.Count; i++)
                {
                    object objRawItem = objData.DataList[i];
                    if (!(objRawItem is VirtualDataRow))
                    {
                        /** I don't know what it could be **/
                        continue;
                    }
                    VirtualDataRow objRow = (VirtualDataRow)objRawItem;

                    if (objRow.VirtualNode == null)
                    {
                        continue;
                    }
                    string strCaption = objRow.VirtualNode.ToString();
                    if (TigerMarsUtil.RegularTest(arrNodeSearchItems[iCurrentDep], strCaption))
                    {
                        /** find **/
                        Logger.Info("FindNodeBySettings_Sophis", string.Format("Find Level [{0}] node information [{1}], with node value is:[{2}]", iCurrentDep, arrNodeSearchItems[iCurrentDep], strCaption));
                        if (iCurrentDep == iDepths - 1)
                        {
                            objCurrentNode          = objTreeList.Nodes[i];
                            objTreeList.FocusedNode = objTreeList.Nodes[i];
                        }
                        return(true);
                    }
                }
                return(false);
            }
            catch (Exception e)
            {
                Logger.Error("FindNodeBySettings_Sophis", string.Format("Exceptions when trying to get data via Reflection. Exception:[{0}]", e.Message), e);
                return(false);
            }
        }