//---------------------------------- private C2iExpression GetFormuleValeur(object valeur) { C2iExpression formule = null; if (valeur is CObjetDonneeAIdNumerique) { formule = new C2iExpressionGetEntite(); formule.Parametres.Add(new C2iExpressionConstante(valeur.GetType().ToString())); formule.Parametres.Add(new C2iExpressionConstante(((CObjetDonneeAIdNumerique)valeur).Id)); } else if (valeur == null) { formule = new C2iExpressionNull(); } else { if (valeur is CDateTimeEx) { valeur = ((CDateTimeEx)valeur).DateTimeValue; } if (C2iExpressionConstante.CanManage(valeur)) { formule = new C2iExpressionConstante(valeur); } } return(formule); }
//------------------------------------ private void m_chkVisible_CheckedChanged(object sender, EventArgs e) { C2iExpressionGraphique rep = m_expressionGraphique.RepresentationRacine; if (!m_bIsInitializing) { if (m_chkVisible.Checked) { if (rep == null) { m_chkVisible.Checked = false; return; } if (rep != null) { CRepresentationExpressionGraphique exp = null; if (exp == null) { C2iExpression formule = m_txtFormule.Formule; if (formule == null) { formule = new C2iExpressionNull(); } exp = new CRepresentationExpressionGraphique(); rep.AddChild(exp); exp.Parent = rep; Point pt = m_expressionGraphique.Position; pt.Offset(2 * m_expressionGraphique.Size.Width, m_nNumParametre * (m_expressionGraphique.Size.Height + 10)); exp.Position = pt; exp.Formule = formule; } m_expressionGraphique.SetExterne(m_nNumParametre, exp); UpdateWindow(); if (OnChangeDessin != null) { OnChangeDessin(this, null); } } } else { //Not checked CRepresentationExpressionGraphique ext = m_expressionGraphique.GetExterne(m_nNumParametre); if (ext != null) { m_expressionGraphique.SetExterne(m_nNumParametre, null); } UpdateWindow(); if (OnChangeDessin != null) { OnChangeDessin(this, null); } } } }
/// ////////////////////////////////////////////////// public override CResultAErreur GetComposantExpression(CFiltreDynamique filtre) { CResultAErreur result = CResultAErreur.True; //Vérifie que l'expression condition est OK CContexteEvaluationExpression contexteEvaluation = new CContexteEvaluationExpression(filtre); result = ConditionApplication.Eval(contexteEvaluation); if (!result) { result.EmpileErreur(I.T("Error while evaluation of @1|143", ConditionApplication.GetString())); return(result); } if ((result.Data is bool && !((bool)result.Data)) || result.Data.ToString() == "0") { result.Data = null; return(result); } result = ExpressionValeur.Eval(contexteEvaluation); object valeur = result.Data; C2iExpression expChamp = new C2iExpressionChamp(Champ); C2iExpression expOp = null; C2iExpression expRacine = null; switch (IdOperateur) { case CComposantFiltreOperateur.c_IdOperateurEgal: expOp = new C2iExpressionEgal(); expRacine = expOp; break; case CComposantFiltreOperateur.c_IdOperateurContains: expOp = new C2iExpressionContient(); expRacine = expOp; break; case CComposantFiltreOperateur.c_IdOperateurDifferent: expOp = new C2iExpressionDifferent(); expRacine = expOp; break; case CComposantFiltreOperateur.c_IdOperateurIn: expOp = new C2iExpressionDans(); expRacine = expOp; break; case CComposantFiltreOperateur.c_IdOperateurInf: expOp = new C2iExpressionInferieur(); expRacine = expOp; break; case CComposantFiltreOperateur.c_IdOperateurInfEgal: expOp = new C2iExpressionInferieurOuEgal(); expRacine = expOp; break; case CComposantFiltreOperateur.c_IdOperateurLike: expOp = new C2iExpressionMatchRegex(); if (valeur != null) { valeur = GetRegExFromLike(valeur.ToString()); } expRacine = expOp; break; case CComposantFiltreOperateur.c_IdOperateurNotIn: expRacine = new C2iExpressionNon(); expOp = new C2iExpressionDans(); expRacine.Parametres.Add(expOp); break; case CComposantFiltreOperateur.c_IdOperateurNotLike: expRacine = new C2iExpressionNon(); expOp = new C2iExpressionMatchRegex(); if (valeur != null) { valeur = GetRegExFromLike(valeur.ToString()); } expRacine.Parametres.Add(expOp); break; case CComposantFiltreOperateur.c_IdOperateurSup: expOp = new C2iExpressionSuperieur(); expRacine = expOp; break; case CComposantFiltreOperateur.c_IdOperateurSuperieurOuEgal: expOp = new C2iExpressionSuperieurOuEgal(); expRacine = expOp; break; case CComposantFiltreOperateur.c_IdOperateurWithout: expRacine = new C2iExpressionNon(); expOp = new C2iExpressionContient(); expRacine.Parametres.Add(expOp); break; default: result.EmpileErreur(I.T("Can not use this operator in filter|20011")); return(result); } if (valeur is IList || valeur is Array) { C2iExpressionListe lst = new C2iExpressionListe(); foreach (object val in (IEnumerable)valeur) { lst.Parametres.Add(new C2iExpressionConstante(val)); } valeur = lst; } else { valeur = new C2iExpressionConstante(valeur); } if (expChamp.TypeDonnee.IsArrayOfTypeNatif) { //Recherche dans des données filles (tableau) C2iExpressionSelectFirst expSelFirst = new C2iExpressionSelectFirst(); expSelFirst.Parametres.Add(expRacine); C2iExpressionObjet expObjet = new C2iExpressionObjet(); expObjet.Parametres.Add(expChamp); expObjet.Parametres.Add(expSelFirst); expChamp = new C2iExpressionThis(); C2iExpression expNull = new C2iExpressionNull(); expNull.Parametres.Add(expObjet); C2iExpression expNon = new C2iExpressionNon(); expNon.Parametres.Add(expNull); expRacine = expNon; } expOp.Parametres.Add(expChamp); expOp.Parametres.Add(valeur); result.Data = expRacine; string strExp = expRacine.GetString(); return(result); }