예제 #1
0
 /// ////////////////////////////////////////////////////////////////
 public static IVariableDynamique AssureVariableElementCible(CFiltreDynamique filtre, CObjetPourSousProprietes objetPourSousProprietes)
 {
     if (objetPourSousProprietes.ElementAVariableInstance as IElementAVariablesDynamiquesAvecContexteDonnee == null)
     {
         foreach (IVariableDynamique variable in filtre.ListeVariables)
         {
             if (variable.Nom == c_champElementSource)
             {
                 return(variable);
             }
         }
         CVariableDynamiqueSysteme newVariable = new CVariableDynamiqueSysteme(filtre);
         newVariable.Nom = c_champElementSource;
         newVariable.SetTypeDonnee(new sc2i.expression.CTypeResultatExpression(objetPourSousProprietes.TypeAnalyse, false));
         filtre.AddVariable(newVariable);
         return(newVariable);
     }
     else
     {
         filtre.ElementAVariablesExterne = null;
         while (filtre.ListeVariables.Length > 0)
         {
             filtre.RemoveVariable(filtre.ListeVariables[0]);
         }
         filtre.ElementAVariablesExterne = objetPourSousProprietes.ElementAVariableInstance as IElementAVariablesDynamiquesAvecContexteDonnee;
         return(null);
     }
 }
예제 #2
0
        //---------------------------------------------------------------------------------------
        private IVariableDynamique AssureVariableElementCible(CFiltreDynamique filtre, Type typeElement)
        {
            IVariableDynamique variableASupprimer = null;

            foreach (IVariableDynamique variable in filtre.ListeVariables)
            {
                if (variable.Nom == c_champElementSource)
                {
                    if (variable.TypeDonnee.TypeDotNetNatif != typeElement)
                    {
                        variableASupprimer = variable;
                    }
                    else
                    {
                        return(variable);
                    }
                }
            }
            if (variableASupprimer != null)
            {
                filtre.RemoveVariable(variableASupprimer);
            }
            CVariableDynamiqueSysteme newVariable = new CVariableDynamiqueSysteme(filtre);

            newVariable.Nom = c_champElementSource;
            newVariable.SetTypeDonnee(new sc2i.expression.CTypeResultatExpression(typeElement, false));
            filtre.AddVariablePropreAuFiltre(newVariable);
            return(newVariable);
        }
예제 #3
0
        private CVariableDynamique AssureVariableParent()
        {
            if (m_filtreDynamique == null)
            {
                return(null);
            }
            foreach (CVariableDynamique variable in m_filtreDynamique.ListeVariables)
            {
                if (variable.Nom == c_strNomVariableFiltre && variable is CVariableDynamiqueSysteme)
                {
                    if (FolderParent == null || FolderParent.TypeElements == null)
                    {
                        m_filtreDynamique.RemoveVariable(variable);
                        return(null);
                    }
                    else
                    {
                        CVariableDynamiqueSystemeInstance varSys = variable as CVariableDynamiqueSystemeInstance;
                        varSys.SetInstance(FolderParent);
                        return(variable);
                    }
                }
            }

            //La variable n'existe pas
            if (FolderParent != null && FolderParent.TypeElements != null)
            {
                CVariableDynamiqueSystemeInstance variable = new CVariableDynamiqueSystemeInstance();
                variable.SetInstance(FolderParent);
                variable.Nom = c_strNomVariableFiltre;
                m_filtreDynamique.AddVariable(variable);
                return(variable);
            }
            return(null);
        }