/// ////////////////////////////////////////// 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); }
//----------------------------------------------- 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); }
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); } }