コード例 #1
0
        //----------------------------------
        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);
        }
コード例 #2
0
        //------------------------------------
        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);
                    }
                }
            }
        }
コード例 #3
0
        /// //////////////////////////////////////////////////
        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);
        }