Пример #1
0
        /// //////////////////////////////////////////
        private CResultAErreur GetSourceEtChampFinal(C2iExpression expression, CContexteEvaluationExpression ctx, ref object source, ref C2iExpressionChamp expressionChamp)
        {
            CResultAErreur result = CResultAErreur.True;

            expressionChamp = expression as C2iExpressionChamp;
            if (expressionChamp != null)
            {
                return(result);
            }
            C2iExpressionObjet expObjet = expression as C2iExpressionObjet;

            if (expObjet == null)
            {
                result.EmpileErreur(I.T("Impossible to affect a value to @1|133", expression.GetString()));
            }
            result = expObjet.Parametres2i[0].Eval(ctx);
            if (!result || result == null)
            {
                return(result);
            }
            ctx.PushObjetSource(result.Data, false);
            source = result.Data;
            result = GetSourceEtChampFinal(expObjet.Parametres2i[1], ctx, ref source, ref expressionChamp);
            ctx.PopObjetSource(false);
            return(result);
        }
Пример #2
0
        //-----------------------------------------------
        public CRepresentationExpressionGraphique FindFormule(C2iExpression formule)
        {
            if (formule == null)
            {
                return(null);
            }
            string strSearch = formule.GetString().ToUpper().Trim();

            foreach (CRepresentationExpressionGraphique r in m_listeRepresentations)
            {
                if (r.Formule != null && r.Formule.GetString().ToUpper().Trim() == strSearch)
                {
                    return(r);
                }
            }
            return(null);
        }
        /// ///////////////////////////////////////////////////////////
        public override CResultAErreur VerifieParametres()
        {
            CResultAErreur result = CResultAErreur.True;

            if (m_definitionMethode != null)
            {
                if (ObjetPourAnalyseSourceConnu == null)
                {
                    return(result);
                }
                CInfoMethodeDynamique            info       = new CInfoMethodeDynamique(ObjetPourAnalyseSourceConnu.TypeResultatExpression.TypeDotNetNatif, DefinitionMethode.NomProprieteSansCleTypeChamp);
                CInfoParametreMethodeDynamique[] parametres = info.InfosParametres;
                if (parametres.Length != Parametres.Count)
                {
                    result.EmpileErreur(I.T("The number parameters @1 method is incorrect|121", DefinitionMethode.NomProprieteSansCleTypeChamp));
                    return(result);
                }
                int nParam = 0;
                foreach (CInfoParametreMethodeDynamique defPar in parametres)
                {
                    C2iExpression expression = Parametres2i[nParam];
                    if (expression != null && expression.TypeDonnee == null)
                    {
                        result.EmpileErreur(I.T("the @1 parameter is invalide in method @2|20125",
                                                expression.GetString(),
                                                DefinitionMethode.NomProprieteSansCleTypeChamp));
                    }
                    else if (expression == null ||
                             expression.GetType() != typeof(C2iExpressionNull) &&
                             !expression.TypeDonnee.CanConvertTo(new CTypeResultatExpression(defPar.TypeParametre, false)))
                    {
                        result.EmpileErreur(I.T("The @1 method parameters doesn't correspond|122", DefinitionMethode.NomProprieteSansCleTypeChamp));
                        break;
                    }
                    nParam++;
                }
            }
            else if (DefinitionFonction != null)
            {
                IEnumerable <CParametreFonctionDynamique> parametres = DefinitionFonction.ParametresDeLaFonction;
                if (parametres.Count() != Parametres.Count)
                {
                    result.EmpileErreur(I.T("The number parameters @1 method is incorrect|121", DefinitionFonction.NomProprieteSansCleTypeChamp));
                    return(result);
                }
                int nParam = 0;
                foreach (CParametreFonctionDynamique defPar in parametres)
                {
                    C2iExpression expression = Parametres2i[nParam];
                    if (expression != null && expression.TypeDonnee == null)
                    {
                        result.EmpileErreur(I.T("the @1 parameter is invalide in method @2|20125",
                                                expression.GetString(),
                                                defPar.Nom));
                    }
                    else if (expression == null ||
                             expression.GetType() != typeof(C2iExpressionNull) &&
                             !expression.TypeDonnee.CanConvertTo(defPar.TypeResultatExpression))
                    {
                        result.EmpileErreur(I.T("The @1 method parameters doesn't correspond|122", DefinitionFonction.NomProprieteSansCleTypeChamp));
                        break;
                    }
                    nParam++;
                }
            }
            else if (m_strNomMethode.Length > 0)
            {
                result.EmpileErreur(I.T("Unknown method @1|20126", m_strNomMethode));
            }
            else
            {
                result.EmpileErreur(I.T("Unknown method @1|20126", DefinitionFonction.NomProprieteSansCleTypeChamp));
            }
            return(result);
        }
Пример #4
0
        private void ShowInterfaceLienParametre(
            CRepresentationExpressionGraphique source,
            CRepresentationExpressionGraphique dest)
        {
            Dictionary <int, CMenuNumero> dicMenus = new Dictionary <int, CMenuNumero>();

            if (source == null || dest == null)
            {
                return;
            }
            if (m_menuNumeroParametre.Items.Count == 0)
            {
                //Création initiale des sous menus
                for (int n = 0; n < 20; n++)
                {
                    CMenuNumero menu = new CMenuNumero(n.ToString(), n);
                    m_menuNumeroParametre.Items.Add(menu);
                    menu.Click += new EventHandler(menuNumero_Click);
                }
            }
            foreach (ToolStripMenuItem item in m_menuNumeroParametre.Items)
            {
                CMenuNumero num = item as CMenuNumero;
                if (num != null)
                {
                    dicMenus[num.Numero] = num;
                }
            }

            C2iExpressionAnalysable expAn = dest.Formule == null ? null : dest.Formule as C2iExpressionAnalysable;

            if (expAn != null)
            {
                CInfo2iExpression info = null;
                info = expAn.GetInfos();
                CInfo2iDefinitionParametres[] infosParams = info.InfosParametres;
                for (int n = 0; n < 20; n++)
                {
                    string strNom = info.GetNomParametre(n);
                    if (strNom.Trim() == "")
                    {
                        dicMenus[n].Visible = false;
                    }
                    else
                    {
                        dicMenus[n].Visible = true;
                        dicMenus[n].Text    = strNom;
                    }
                }

                sc2i.expression.C2iExpression[] parametres = dest.Formule.Parametres2i;
                foreach (ToolStripMenuItem item in m_menuNumeroParametre.Items)
                {
                    int nPos = item.Text.IndexOf('(');
                    if (nPos > 0)
                    {
                        item.Text = item.Text.Substring(0, nPos).Trim();
                    }
                    CMenuNumero numero = item as CMenuNumero;
                    if (numero != null)
                    {
                        if (numero.Numero < parametres.Length)
                        {
                            sc2i.expression.C2iExpression exp = parametres[numero.Numero];
                            if (exp != null)
                            {
                                item.Text += " (" + exp.GetString() + ")";
                            }
                        }
                    }
                }
                m_sourceLienParametre = source;
                m_destLienParametre   = dest;
                m_menuNumeroParametre.Show(Cursor.Position);
            }
        }