/// ///////////////////////////////////////////////// public override CResultAErreur AnalyseChaine(string strChaine) { CResultAErreur result = base.AnalyseChaine(strChaine); if (result) { C2iExpression expression = (C2iExpression)result.Data; if (expression != null) { expression.SetTypeObjetInterroge( m_contexteAnalyse.ObjetAnalyse, m_contexteAnalyse); } //Vérifie que tous les champs ont un type de donnée connu //(ce qui indique que les champs sont connus) foreach (C2iExpressionChamp expChamp in expression.ExtractExpressionsType(typeof(C2iExpressionChamp))) { if (expChamp.DefinitionPropriete == null) { result.EmpileErreur(I.T("One field of formula doesn't exist|141")); } else if (expChamp.TypeDonnee == null) { if (m_contexteAnalyse != null && m_contexteAnalyse.GetVariable(expChamp.DefinitionPropriete.NomPropriete) == null) { result.EmpileErreur(I.T("The @1 field doesn't exist|107", expChamp.DefinitionPropriete.Nom)); } else { expChamp.DefinitionPropriete = m_contexteAnalyse.GetVariable(expChamp.DefinitionPropriete.NomPropriete); } } } result = expression.VerifieParametres(); if (!result) { return(result); } result.Data = expression; } return(result); }
//-------------------------------------------------- /// <summary> /// crée les éléments graphiques d'une formule /// </summary> /// <param name="formule"></param> public void InitFromFormule(C2iExpression formule) { m_listeRepresentations.Clear(); m_listeVariables.Clear(); if (formule == null) { return; } ArrayList lst = formule.ExtractExpressionsType(typeof(C2iExpressionVariable)); foreach (C2iExpressionVariable variable in lst) { if (variable.Parametres.Count > 0) { C2iExpressionChamp champ = variable.Parametres[0] as C2iExpressionChamp; if (champ != null) { CDefinitionProprieteDynamiqueVariableFormule def = champ.DefinitionPropriete as CDefinitionProprieteDynamiqueVariableFormule; if (def != null) { m_listeVariables.Add(def); } } } } C2iExpressionBegin begin = formule as C2iExpressionBegin; m_strIdStartPoint = ""; int nX = 100; int nY = 20; if (begin != null) { CRepresentationExpressionGraphique previous = null; foreach (C2iExpression action in begin.Parametres) { if (!(action is C2iExpressionVariable)) { CRepresentationExpressionGraphique rep = new CRepresentationExpressionGraphique(); rep.Position = new Point(nX, nY); AddChild(rep); rep.Parent = this; rep.Formule = action; nY = rep.RectangleAbsolu.Bottom; foreach (CRepresentationExpressionGraphique repTmp in m_listeRepresentations) { if (repTmp.RectangleAbsolu.Bottom > nY) { nY = rep.RectangleAbsolu.Bottom; } } nY += 20; if (previous == null) { StartPoint = rep; } else { previous.Next = rep; } previous = rep; } } } else { CRepresentationExpressionGraphique rep = new CRepresentationExpressionGraphique(); rep.Position = new Point(nX, nY); AddChild(rep); rep.Parent = this; rep.Formule = formule; StartPoint = rep; } }