Esempio n. 1
0
        //---------------------------------------------------------------------------
        private CFormEditionStandard NewCFormEdition(CObjetDonneeAIdNumeriqueAuto objet, CListeObjetsDonnees liste)
        {
            if (m_strProprieteObjetAEditer.Trim() != "")
            {
                objet = (CObjetDonneeAIdNumeriqueAuto)CInterpreteurTextePropriete.GetValue(objet, m_strProprieteObjetAEditer);
                liste = liste.GetDependances(m_strProprieteObjetAEditer);
            }
            CFormEditionStandard frm = null;

            // YK 20/02/09 : On utilise ici le nouveau CFormFinder
            if (m_referenceForm == null)
            {
                m_referenceForm = CFormFinder.GetRefFormToEdit(m_typeObjet);
            }
            if (m_referenceForm != null)
            {
                frm = (CFormEditionStandard)m_referenceForm.GetForm(objet, liste);
            }
            if (frm != null)
            {
                if (AfterCreateFormEdition != null)
                {
                    AfterCreateFormEdition(this, frm);
                }
                frm.AfterSuppression            += new ObjetDonneeEventHandler(OnSuppressionDansFormEdition);
                frm.AfterValideModification     += new ObjetDonneeEventHandler(OnValidationDansFormEdition);
                frm.AfterAnnulationModification += new ObjetDonneeEventHandler(OnAnnulationDansFormEdition);
            }
            return(frm);
        }
Esempio n. 2
0
        /// //////////////////////////////////////////////
        private void Refill(IEnumerable liste)
        {
            if (m_bIsFilling)
            {
                return;
            }

            m_bIsFilling = true;
            try
            {
                this.SuspendDrawing();
                BeginUpdate();
                object oldValue = SelectedValue;
                DataSource = null;

                if (liste == null)
                {
                    EndUpdate();
                    m_bIsFilling = false;
                    return;
                }

                ArrayList lst = new ArrayList();
                if (NullAutorise)
                {
                    lst.Add(new CBinome(DBNull.Value, TextNull));
                }
                foreach (object obj in liste)
                {
                    object objRetour  = obj;
                    object valeurProp = CInterpreteurTextePropriete.GetValue(obj, ProprieteAffichee);
                    lst.Add(new CBinome(objRetour, valeurProp != null? valeurProp.ToString():""));
                }
                if (m_bTrier)
                {
                    lst.Sort();
                }
                ValueMember   = "ReturnValue";
                DisplayMember = "DisplayValue";
                DataSource    = lst;
                ValueMember   = "ReturnValue";
                DisplayMember = "DisplayValue";
                EndUpdate();

                object lastSelection = m_lastObjetSelectionne;
                SelectedValue = oldValue;
                if (SelectedValue == null)
                {
                    SelectedValue = lastSelection;
                }
            }
            finally
            {
                m_bIsFilling = false;
                this.ResumeDrawing();
            }
        }
Esempio n. 3
0
        /// //////////////////////////////////////////////////
        private void CFormOrdonnerEntites_Load(object sender, System.EventArgs e)
        {
            ArrayList lst = new ArrayList(m_listeObjets);

            lst.Sort(new CObjetTrieur(m_strProprieteOrdre));
            m_wndListeEntites.Items.Clear();
            foreach (object obj in lst)
            {
                ListViewItem item = new ListViewItem(CInterpreteurTextePropriete.GetValue(obj, m_strProprieteToDisplay).ToString());
                item.Tag = obj;
                m_wndListeEntites.Items.Add(item);
            }
        }
Esempio n. 4
0
 public int Compare(object x, object y)
 {
     try
     {
         int nVal1 = (int)(CInterpreteurTextePropriete.GetValue(x, m_strPropOrdre));
         int nVal2 = (int)(CInterpreteurTextePropriete.GetValue(y, m_strPropOrdre));
         return(nVal1.CompareTo(nVal2));
     }
     catch
     {
     }
     return(0);
 }
Esempio n. 5
0
        //------------------------------------------------------------
        public CResultAErreur GetValue(object objet, string strPropriete)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                object valeur = CInterpreteurTextePropriete.GetValue(objet, strPropriete);
                result.Data = valeur;
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }
Esempio n. 6
0
        /// ///////////////////////////////////////////////////////
        /// <summary>
        /// Valide les modifications apportées à la valeur de la source
        /// </summary>
        protected override bool Commit(
            CurrencyManager dataSource,
            int rowNum
            )
        {
            if (m_control == null || !m_bEnEdition)
            {
                return(true);
            }
            if (this.DataGridTableStyle.DataGrid.ReadOnly)
            {
                m_control.Hide();
                return(true);
            }
            if (this.DataGridTableStyle.DataGrid.DataSource == null)
            {
                return(true);
            }

            object valeur = CInterpreteurTextePropriete.GetValue(m_control, m_strProprieteControl);

            try
            {
                SetColumnValueAtRow(dataSource, rowNum, valeur);
            }
            catch (Exception e)
            {
                Console.WriteLine("\n\n\n**************************\nOn ne devrait pas passer là : C2iDataGridColumnStyleAControle : Erreur CommitEdit\n*****************************");
                Console.WriteLine(e.ToString());
                if (dataSource.Position != rowNum)
                {
                    dataSource.Refresh();
                    dataSource.Position = rowNum;
                    try
                    {
                        SetColumnValueAtRow(dataSource, rowNum, valeur);
                    }
                    catch
                    {
                        throw new Exception("Y a plus rien a faire !!!");
                    }
                }
            }
            m_control.Hide();
            m_bEnEdition = false;
            return(true);
        }
 //------------------------------------------------------------------------------
 public void OnLinkClicked(object sender, MouseEventArgs args)
 {
     if (m_bComportementLinkStandard)
     {
         object obj;
         obj = (CObjetDonneeAIdNumerique)this.ElementSelectionne;
         if (LinkProperty != "")
         {
             obj = CInterpreteurTextePropriete.GetValue(obj, LinkProperty);
         }
         if (m_typeFormEditionStandard != null && this.ElementSelectionne != null)
         {
             CFormEditionStandard form = (CFormEditionStandard)Activator.CreateInstance(m_typeFormEditionStandard,
                                                                                        new object[] { obj });
             CSc2iWin32DataNavigation.Navigateur.AffichePage(form);
         }
     }
 }
 //-------------------------------------------------------------------
 private void CopyListToHashtable()
 {
     m_hashtableObjets.Clear();
     if (m_listeRelationsSelectionnees.Count < 1)
     {
         return;
     }
     foreach (CObjetDonnee rel in m_listeRelationsSelectionnees)
     {
         object obj = CInterpreteurTextePropriete.GetValue(rel, m_strProprieteRetournantObjetSecondaire);
         m_hashtableObjets[obj] = rel;
         if (OnAssocieData != null)
         {
             object data = null;
             OnAssocieData((CObjetDonnee)obj, rel, ref data);
             m_tableDataAssocie[obj] = data;
         }
     }
 }
        /// <summary>
        /// Vérifie si les éléments utilisant ce paramétrage vérifient bien ses modifications
        /// </summary>
        /// <returns></returns>
        public CResultAErreur IsModifValide()
        {
            CResultAErreur result  = CResultAErreur.True;
            string         strProp = ((IObjetASystemeDeCoordonnee)ObjetASystemeDeCoordonnees).ProprieteVersObjetsAFilsACoordonneesUtilisantLeParametrage;
            List <IObjetAFilsACoordonnees> lstToTest = new List <IObjetAFilsACoordonnees>();

            if (strProp != "")
            {
                object val = CInterpreteurTextePropriete.GetValue(ObjetASystemeDeCoordonnees, strProp);
                if (val == null)
                {
                    return(result);
                }
                if (val is IObjetAFilsACoordonnees)
                {
                    lstToTest.Add((IObjetAFilsACoordonnees)val);
                }
                else
                if (val is IEnumerable)
                {
                    foreach (IObjetAFilsACoordonnees obj in (IEnumerable)val)
                    {
                        lstToTest.Add(obj);
                    }
                }
            }
            else
            if (ObjetASystemeDeCoordonnees is IObjetAFilsACoordonnees)
            {
                lstToTest.Add((IObjetAFilsACoordonnees)ObjetASystemeDeCoordonnees);
            }
            string strLib = this.ObjetASystemeDeCoordonnees.DescriptionElement;

            foreach (IObjetAFilsACoordonnees obj in lstToTest)
            {
                result = obj.VerifieCoordonneesFils();
                if (!result)
                {
                    return(result);
                }
            }
            return(result);
        }
        //------------------------------------------------------------------------------
        private void RemplirFromParent(object sender, EventArgs e)
        {
            if (DesignMode || SelectionneurParent.IsUpdating())
            {
                return;
            }
            CObjetDonnee obj = m_selectionneurParent.ElementSelectionne;

            if (obj == null)
            {
                //this.NullAutorise = true;
                this.SelectedValue = null;
                this.Enabled       = false;
                return;
            }
            //this.NullAutorise = false;
            this.Enabled = true;
            if (m_lastObjetSelectionneDansParent != obj)
            {
                this.ListDonnees   = (IEnumerable)CInterpreteurTextePropriete.GetValue(obj, m_strPropParentListeObjets);
                this.SelectedValue = null;
            }
            m_lastObjetSelectionneDansParent = obj;
        }
        /// <summary>
        /// ////////////////////////////////////////////////////////////
        /// </summary>
        /// <param name="nodes"></param>
        /// <param name="objetParent"></param>
        /// <param name="nNbSousNiveauToFill"></param>
        protected virtual void FillNodes(TreeNode nodeParent, CObjetDonneeAIdNumeriqueAuto objetParent)
        {
            TreeNodeCollection nodes = null;

            if (nodeParent == null)
            {
                nodes = Nodes;
            }
            else
            {
                if (((CInfoNode)nodeParent.Tag).AreChildsLoaded)
                {
                    return;
                }
                nodes = nodeParent.Nodes;
                ((CInfoNode)nodeParent.Tag).AreChildsLoaded = true;
            }
            nodes.Clear();
            CListeObjetsDonnees listeFils = null;

            if (objetParent == null)
            {
                CContexteDonnee contexte = CSc2iWin32DataClient.ContexteCourant;
                if (m_objetRoot != null)
                {
                    contexte = m_objetRoot.ContexteDonnee;
                }
                listeFils = new CListeObjetsDonnees(contexte, m_typeObjets);
                if (m_objetRoot != null)
                {
                    listeFils.Filtre = new CFiltreData(m_objetRoot.GetChampId() + "=@1", m_objetRoot.Id);
                }
                else
                {
                    listeFils.Filtre = CFiltreData.GetAndFiltre(m_filtreRacine, new CFiltreData(m_strChampParent + " is null"));
                }
            }
            else
            {
                listeFils = (CListeObjetsDonnees)CInterpreteurTextePropriete.GetValue(objetParent, m_strProprieteListeFils);
                if (!m_bAutoriserFilsDesAutorises || !IsInFiltre(objetParent))
                {
                    listeFils.Filtre = CFiltreData.GetAndFiltre(listeFils.Filtre, m_filtreRacine);
                }
            }
            foreach (CObjetDonneeAIdNumeriqueAuto objetFils in listeFils)
            {
                bool bVoir = IsVisible(objetFils);

                /*if ( m_tableCodesVisibles != null && objetFils is IObjetHierarchiqueACodeHierarchique )
                 *      bVoir = m_tableCodesVisibles.Contains(((IObjetHierarchiqueACodeHierarchique)objetFils).CodeSystemeComplet);*/
                if (m_bAutoriserFilsDesAutorises && !bVoir)
                {
                    if (objetParent != null && IsInFiltre(objetParent))
                    {
                        if (objetFils is IObjetHierarchiqueACodeHierarchique && m_tableCodesVisibles != null)
                        {
                            m_tableCodesVisibles.Add(((IObjetHierarchiqueACodeHierarchique)objetFils).CodeSystemeComplet, true);
                        }
                        bVoir = true;
                    }
                }
                if (bVoir)
                {
                    TreeNode node = new TreeNode();
                    FillNode(node, objetFils);

                    nodes.Add(node);
                    node.Nodes.Add(new TreeNode("__"));                    //Noeud bidon
                    if (!IsInFiltre(objetFils))
                    {
                        node.ForeColor = ForeColorNonSelectionnable;
                        node.Expand();
                    }
                }
            }
        }
Esempio n. 12
0
        /// ////////////////////////////////////////////////////////
        protected override CResultAErreur MyExecute(CContexteExecutionAction contexte)
        {
            CResultAErreur result = CResultAErreur.True;

            CContexteEvaluationExpression contexteEval = new CContexteEvaluationExpression(Process);

            contexteEval.AttacheObjet(typeof(CContexteDonnee), contexte.ContexteDonnee);

            // Evalue la formule de l'entité destination
            result = ExpressionEntiteDestination.Eval(contexteEval);
            if (!result)
            {
                result.EmpileErreur(I.T("Error during @1 formula evaluation|216", ExpressionEntiteDestination.ToString()));
                return(result);
            }
            CObjetDonneeAIdNumeriqueAuto objetDestination = (CObjetDonneeAIdNumeriqueAuto)result.Data;

            // Evalue la formule de l'entité source
            result = ExpressionEntiteSource.Eval(contexteEval);
            if (!result)
            {
                result.EmpileErreur(I.T("Error during @1 formula evaluation|216", ExpressionEntiteSource.ToString()));
                return(result);
            }
            CObjetDonneeAIdNumeriqueAuto objetSource = (CObjetDonneeAIdNumeriqueAuto)result.Data;

            if (m_bCopieComplete)
            {
                //Copie toutes les propriétés, sauf les champs
                if (objetSource == null || objetDestination == null)
                {
                    return(result);
                }
                Type      tp    = objetDestination.GetType();
                DataTable table = objetDestination.Row.Table;
                if (table == null)
                {
                    return(result);
                }
                List <string> keys = new List <string>();
                foreach (DataColumn col in table.PrimaryKey)
                {
                    keys.Add(col.ColumnName);
                }
                objetDestination.ContexteDonnee.CopyRow(objetSource.Row, objetDestination.Row, keys.ToArray());
                IElementAChamps eltChampsDest   = objetDestination as IElementAChamps;
                IElementAChamps eltChampsSource = objetSource as IElementAChamps;
                if (eltChampsDest == null || eltChampsSource == null)
                {
                    return(result);
                }
                foreach (CRelationElementAChamp_ChampCustom relation in eltChampsSource.RelationsChampsCustom)
                {
                    eltChampsDest.SetValeurChamp(relation.ChampCustom, relation.Valeur);
                }
            }
            else
            {
                // Faire la copie de l'objet
                for (int i = 0; i < m_lstProprietesDynamiquesACopier.Length; i++)
                {
                    CDefinitionProprieteDynamique definitionPropriete = m_lstProprietesDynamiquesACopier[i];

                    // Si c'est un champs custom
                    if (definitionPropriete is CDefinitionProprieteDynamiqueChampCustom)
                    {
                        if (!(objetSource is IElementAChamps))
                        {
                            result.EmpileErreur(I.T("@1 : Incorrect custom field of source object|298", definitionPropriete.Nom));
                            return(result);
                        }
                        if (!(objetDestination is IElementAChamps))
                        {
                            result.EmpileErreur(I.T("@1 : Incorrect custom field of destination object|299", definitionPropriete.Nom));
                            return(result);
                        }
                        // Get la valeur du champ custom de l'objet source
                        object valeurChamp = ((IElementAChamps)objetSource).GetValeurChamp(((CDefinitionProprieteDynamiqueChampCustom)definitionPropriete).DbKeyChamp.StringValue);
                        // Set la valeur du champ custom de l'objet destination
                        result = ((IElementAChamps)objetDestination).SetValeurChamp(
                            ((CDefinitionProprieteDynamiqueChampCustom)definitionPropriete).DbKeyChamp.StringValue,
                            valeurChamp);
                    }
                    // Si c'est un champ normal de la base
                    else
                    {
                        string strProp = definitionPropriete.NomProprieteSansCleTypeChamp;
                        // Get la valeur de propriété de l'objet source
                        object valeurProp = CInterpreteurTextePropriete.GetValue(objetSource, strProp);
                        // Set la valeut de propriété de l'objet destination

                        if (!CInterpreteurTextePropriete.SetValue(objetDestination, strProp, valeurProp))
                        {
                            result.EmpileErreur(I.T("Property @1 : Failed to set the value|300", strProp));
                            return(result);
                        }
                    }
                }
            }

            return(result);
        }
Esempio n. 13
0
        /// ///////////////////////////////////////////////////////////
        public object GetValue(object objetInterroge, CDefinitionProprieteDynamique propriete)
        {
            //Récupère l'objet à interroger
            string strProp = propriete.NomPropriete;
            object valeur  = m_cache.GetValeurCache(objetInterroge, strProp);

            if (valeur != null)
            {
                return(valeur);
            }

            CContexteDonnee contexteForObjets = ContexteDonneeCache;

            if (objetInterroge is IObjetAContexteDonnee)
            {
                contexteForObjets = ((IObjetAContexteDonnee)objetInterroge).ContexteDonnee;
            }
            if (contexteForObjets == null)
            {
                contexteForObjets = ContexteDonneeCache;
            }


            object objetFinal = objetInterroge;
            int    nPos       = strProp.LastIndexOf('.');

            if (nPos > 0 && !(propriete is CDefinitionProprieteDynamiqueDonneeCumulee) &&
                !(propriete is CDefinitionProprieteDynamiqueChampCustom) &&
                !(propriete is CDefinitionProprieteDynamiqueChampCustomFils) &&
                !(propriete is CDefinitionProprieteDynamiqueFormule))
            {
                string strPropDebut;
                strPropDebut = strProp.Substring(0, nPos);
                strProp      = strProp.Substring(nPos + 1);
                objetFinal   = m_cache.GetValeurCache(objetInterroge, strPropDebut);
                if (objetFinal == null)
                {
                    objetFinal = GetValue(objetInterroge, strPropDebut);

                    /*object objetAInterroger = null;
                     * MemberInfo membre = null;
                     * CInterpreteurTexteProptVariete.GetObjetFinalEtMemberInfo ( objetInterroge, strPropDebut, ref objetAInterroger, ref membre );
                     * if ( membre != null )
                     * {
                     *      objetFinal = CInterpreteurTextePropriete.GetValue ( objetAInterroger, membre );
                     * }
                     * else
                     * {
                     *      //On n'a pas trouvé le membre, il s'agit donc d'autre chose, il faut donc décomposer
                     *      //Le champ
                     * }*/
                    //objetFinal = CInterpreteurTextePropriete.GetValue(objetInterroge, strPropDebut);
                    m_cache.StockeValeurEnCache(objetInterroge, strPropDebut, objetFinal);
                }
                if (objetFinal == null)
                {
                    return(null);
                }
                valeur = m_cache.GetValeurCache(objetFinal, strProp);
                if (valeur != null)
                {
                    return(valeur);
                }
            }


            if (propriete is CDefinitionProprieteDynamiqueChampCustom)
            {
                if (!(objetFinal is IElementAChamps))
                {
                    valeur = null;
                }

                else
                {
                    //TESTDBKEYTODO qui ne peut pas marche
                    valeur = ((IElementAChamps)objetFinal).GetValeurChamp(((CDefinitionProprieteDynamiqueChampCustom)propriete).DbKeyChamp.InternalIdNumeriqueANeJamaisUtiliserSaufDansCDbKeyAddOn.Value, System.Data.DataRowVersion.Default);

                    /*if (m_bValeurAfficheeDeChampsCustom)
                     * {
                     *      CChampCustom champ = new CChampCustom(ContexteDonneeCache);
                     *      if (champ.ReadIfExists(((CDefinitionProprieteDynamiqueChampCustom)propriete).IdChamp))
                     *      {
                     *              object valTmp = champ.DisplayFromValue(valeur);
                     *              if (valTmp != null)
                     *                      valeur = valTmp;
                     *      }
                     * }*/
                }
            }
            else if (propriete is CDefinitionProprieteDynamiqueChampCustomFils && objetInterroge is CObjetDonneeAIdNumerique)
            {
                CChampCustom champ = new CChampCustom(ContexteDonneeCache);
                if (champ.ReadIfExists(((CDefinitionProprieteDynamiqueChampCustomFils)propriete).KeyChamp))
                {
                    Type tp = champ.Role.TypeAssocie;

                    try
                    {
                        IObjetDonneeAChamps elt = (IObjetDonneeAChamps)Activator.CreateInstance(tp, new object[] { contexteForObjets });
                        CRelationElementAChamp_ChampCustom rel = elt.GetNewRelationToChamp();
                        CListeObjetsDonnees liste = new CListeObjetsDonnees(contexteForObjets, tp);
                        liste.Filtre = new CFiltreDataAvance(
                            elt.GetNomTable(),
                            rel.GetNomTable() + "." +
                            CRelationElementAChamp_ChampCustom.c_champValeurString + "=@1 and " +
                            rel.GetNomTable() + "." +
                            CRelationElementAChamp_ChampCustom.c_champValeurInt + "=@2 and " +
                            rel.GetNomTable() + "." +
                            CChampCustom.c_champId + "=@3",
                            objetInterroge.GetType().ToString(),
                            ((CObjetDonneeAIdNumerique)objetInterroge).Id,
                            champ.Id);
                        valeur = liste.ToArray(tp);
                    }
                    catch
                    {
                        valeur = null;
                    }
                }
            }
            else if (propriete is CDefinitionProprieteDynamiqueListeEntites)
            {
                CListeEntites liste = new CListeEntites(contexteForObjets);
                try
                {
                    if (liste.ReadIfExists(((CDefinitionProprieteDynamiqueListeEntites)propriete).DbKeyListeEntite))
                    {
                        CListeObjetsDonnees resultListe = liste.GetElementsLiesFor(objetInterroge);
                        if (resultListe != null)
                        {
                            valeur = resultListe.ToArray(liste.TypeElements);
                        }
                    }
                }
                catch
                {
                    valeur = null;
                }
            }


            else if (propriete is CDefinitionProprieteDynamiqueRelationTypeId)
            {
                if (!(objetFinal is CObjetDonneeAIdNumerique))
                {
                    valeur = null;
                }
                else
                {
                    CDefinitionProprieteDynamiqueRelationTypeId defRel = (CDefinitionProprieteDynamiqueRelationTypeId)propriete;
                    return(((CObjetDonneeAIdNumerique)objetFinal).GetDependancesRelationTypeId(
                               defRel.Relation.TableFille,
                               defRel.Relation.ChampType,
                               defRel.Relation.ChampId,
                               false));
                }
            }
            else if (propriete is CDefinitionProprieteDynamiqueDonneeCumulee)
            {
                if (!(objetFinal is CObjetDonneeAIdNumerique))
                {
                    valeur = null;
                }
                else
                {
                    CDefinitionProprieteDynamiqueDonneeCumulee defType = (CDefinitionProprieteDynamiqueDonneeCumulee)propriete;
                    CObjetDonneeAIdNumerique objet = (CObjetDonneeAIdNumerique)objetFinal;
                    CTypeDonneeCumulee       type  = new CTypeDonneeCumulee(contexteForObjets);
                    if (type.ReadIfExists(defType.DbKeyTypeDonnee))
                    {
                        valeur = type.GetDonneesCumuleesForObjet(objet);
                    }
                    else
                    {
                        valeur = null;
                    }
                }
            }
            else if (propriete is CDefinitionProprieteDynamiqueChampCalcule)
            {
                CChampCalcule champ = new CChampCalcule(contexteForObjets);
                if (champ.ReadIfExists(((CDefinitionProprieteDynamiqueChampCalcule)propriete).DbKeyChamp))
                {
                    valeur = champ.Calcule(objetFinal, new CFournisseurPropDynStd(true));
                }
                else
                {
                    valeur = null;
                }
            }
            else if (propriete is CDefinitionProprieteDynamiqueFormule)
            {
                CContexteEvaluationExpression contexte = new CContexteEvaluationExpression(objetInterroge);
                contexte.AttacheObjet(typeof(CContexteDonnee), contexteForObjets);
                CResultAErreur result = ((CDefinitionProprieteDynamiqueFormule)propriete).Formule.Eval(contexte);
                if (result)
                {
                    return(result.Data);
                }
            }
            else if (propriete is CDefinitionProprieteDynamiqueVariableDynamique && objetFinal is IElementAVariables)
            {
                valeur = ((IElementAVariables)objetFinal).GetValeurChamp(((CDefinitionProprieteDynamiqueVariableDynamique)propriete).IdChamp);
            }
            else
            {
                valeur = CInterpreteurTextePropriete.GetValue(objetFinal, strProp);
            }
            m_cache.StockeValeurEnCache(objetInterroge, propriete.Nom, valeur);
            if (objetFinal != objetInterroge)
            {
                m_cache.StockeValeurEnCache(objetFinal, strProp, valeur);
            }
            return(valeur);
        }
Esempio n. 14
0
        /// ///////////////////////////////////////////////////////////
        public object GetValue(object objetInterroge, string strPropriete)
        {
            CFournisseurPropDynStd fournisseur = new CFournisseurPropDynStd(false);

            if (objetInterroge == null)
            {
                return(null);
            }
            //Est-ce une propriété simple ?(majorité des cas )
            object     objetAInterroger = null;
            MemberInfo membre           = null;

            if (CInterpreteurTextePropriete.GetObjetFinalEtMemberInfo(objetInterroge, strPropriete, ref objetAInterroger, ref membre) && membre != null)
            {
                return(CInterpreteurTextePropriete.GetValue(objetAInterroger, membre));
            }

            //Bon pas de bol, c'est autre chose, il faut donc chercher ce que c'est
            Type   tp           = objetInterroge.GetType();
            string strPropDebut = strPropriete.Split('.')[0];
            object objetPremier = CInterpreteurTextePropriete.GetValue(objetInterroge, strPropDebut);

            if (objetPremier == null)
            {
                string strIdChamp = CDefinitionProprieteDynamiqueChampCustom.GetIdPropriete(strPropDebut);
                foreach (CDefinitionProprieteDynamique def in fournisseur.GetDefinitionsChamps(tp, 0))
                {
                    if (def.NomPropriete == strPropDebut ||
                        (strIdChamp != "" && def is CDefinitionProprieteDynamiqueChampCustom) &&
                        ((CDefinitionProprieteDynamiqueChampCustom)def).DbKeyChamp == CDbKey.CreateFromStringValue(strIdChamp))
                    {
                        objetPremier = GetValue(objetInterroge, def);
                        //Si la suite est une relation de la valeur champ vers l'objet, il ne faut pas
                        //traier la suite
                        if (strPropDebut != strPropriete)
                        {
                            string strSuiteTmp = strPropriete.Substring(strPropDebut.Length + 1);
                            if (CInfoRelationComposantFiltreChampToEntite.IsRelationFromChampToEntite(strSuiteTmp))
                            {
                                //On a déjà traité ce lien par GetValeurPropriété (qui retourne la valeur
                                //et nom pas le lien vers la valeur)
                                strPropDebut += "." + strPropriete.Split('.')[1];
                            }
                        }

                        break;
                    }
                }
            }
            if (objetPremier == null)
            {
                return(null);
            }
            if (strPropDebut == strPropriete)
            {
                return(objetPremier);
            }
            string strSuite = strPropriete.Substring(strPropDebut.Length + 1);

            return(GetValue(objetPremier, strSuite));
        }
Esempio n. 15
0
        public CResultAErreur FillControl(Control ctrl, object obj)
        {
            CResultAErreur result          = CResultAErreur.True;
            string         strPropAffichee = "";

            try
            {
                CInfoControle info = GetInfo(ctrl, false);
                if (info != null && info.AutoUpdate && info.Field.Length > 0)
                {
                    string strProp = info.Field;
                    if (strProp.LastIndexOf(".") >= 0 && ctrl is ComboBox)
                    {
                        string strTemp = strProp;
                        strProp         = strTemp.Substring(0, strTemp.LastIndexOf("."));
                        strPropAffichee = strTemp.Substring(strTemp.LastIndexOf(".") + 1);
                    }
                    if (strProp != null && strProp != "")
                    {
                        MemberInfo methodeAppellee  = null;
                        object     objetToInterroge = null;
                        object     objValue         = CInterpreteurTextePropriete.GetValue(obj, strProp, ref objetToInterroge, ref methodeAppellee);
                        if (objValue != null)
                        {
                            if (OnRemplitControle != null)
                            {
                                OnRemplitControle(strProp, objValue);
                            }

                            if (ctrl is NumericUpDown)
                            {
                                if (objValue is int)
                                {
                                    ((NumericUpDown)ctrl).Value = new Decimal((int)objValue);
                                }
                                else if (objValue is double)
                                {
                                    ((NumericUpDown)ctrl).Value = new Decimal((double)objValue);
                                }
                                else
                                {
                                    ((NumericUpDown)ctrl).Value = (decimal)objValue;
                                }
                            }
                            else if (ctrl is C2iTextBoxNumerique)
                            {
                                if (objValue is int?)
                                {
                                    ((C2iTextBoxNumerique)ctrl).IntValue = (int?)objValue;
                                }
                                else if (objValue is double?)
                                {
                                    ((C2iTextBoxNumerique)ctrl).DoubleValue = (double?)objValue;
                                }
                                else
                                {
                                    ((C2iTextBoxNumerique)ctrl).DoubleValue = Convert.ToDouble(objValue);
                                }
                            }
                            else if (ctrl is DateTimePicker)
                            {
                                ((DateTimePicker)ctrl).Value = (DateTime)objValue;
                            }
                            else if (ctrl is CheckBox)
                            {
                                ((CheckBox)ctrl).Checked = (bool)objValue;
                            }
                            else if (ctrl is C2iComboBox)
                            {
                                ((C2iComboBox)ctrl).SelectedValue = objValue;
                            }
                            else if (ctrl is ComboBox)
                            {
                                ((ComboBox)ctrl).DisplayMember = strPropAffichee;
                                try
                                { ((ComboBox)ctrl).SelectedValue = objValue; }
                                catch
                                { ((ComboBox)ctrl).SelectedValue = System.DBNull.Value; }
                            }
                            else if (ctrl is I2iControlEditObject)
                            {
                                ((I2iControlEditObject)ctrl).ObjetEdite = objValue;
                            }
                            else if (!(ctrl is CheckBox))
                            {
                                ctrl.Text = CInterpreteurTextePropriete.GetStringValueFormatee(objValue, "", methodeAppellee);
                            }
                        }
                        else
                        {
                            if (ctrl is ComboBox)
                            {
                                ((ComboBox)ctrl).SelectedValue = System.DBNull.Value;
                            }
                            else if (!(ctrl is CheckBox))
                            {
                                ctrl.Text = "";
                            }
                        }

                        if (ctrl is C2iDateTimeExPicker)
                        {
                            ((C2iDateTimeExPicker)ctrl).Value = (CDateTimeEx)objValue;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                result.EmpileErreur(new CErreurException(e));
                result.EmpileErreur("Error while loading control @1 by @2||30046", ctrl.Name.ToString(), obj.ToString());
                return(result);
            }
            return(result);
        }
Esempio n. 16
0
        /// ////////////////////////////////////////////////////////
        protected override CResultAErreur MyExecute(CContexteExecutionAction contexte)
        {
            CResultAErreur result         = CResultAErreur.True;
            object         elementToModif = Process.GetValeurChamp(VariableAModifier.IdVariable);

            if (elementToModif is CObjetDonnee)
            {
                elementToModif = ((CObjetDonnee)elementToModif).GetObjetInContexte(contexte.ContexteDonnee);
            }
            if (elementToModif == null)
            {
                return(result);
            }

            object nouvelleValeur = null;

            if (!(ExpressionValeur is C2iExpressionNull))
            {
                //Calcule la nouvelle valeur
                CContexteEvaluationExpression contexteEval = new CContexteEvaluationExpression(Process);
                contexteEval.AttacheObjet(typeof(CContexteDonnee), contexte.ContexteDonnee);
                result = ExpressionValeur.Eval(contexteEval);
                if (!result)
                {
                    result.EmpileErreur(I.T("Error during @1 formula evaluation|216", ExpressionValeur.ToString()));
                    return(result);
                }
                nouvelleValeur = result.Data;
            }

            if (m_definitionPropriete.NomPropriete.Length > 1 &&
                m_definitionPropriete.NomPropriete[0] == CDefinitionProprieteDynamique.c_strCaractereStartCleType)
            {
                result = CInterpreteurProprieteDynamique.SetValue(elementToModif, m_definitionPropriete, nouvelleValeur);
            }
            else
            {
                //Ancienne méthode


                //Si modif de champ custom
                if (m_definitionPropriete is CDefinitionProprieteDynamiqueChampCustom)
                {
                    if (!(elementToModif is IElementAChamps))
                    {
                        result.EmpileErreur(I.T("@1 : Incorrect custom field or invalid target|217", m_definitionPropriete.Nom));
                        return(result);
                    }
                    result = ((IElementAChamps)elementToModif).SetValeurChamp(((CDefinitionProprieteDynamiqueChampCustom)m_definitionPropriete).DbKeyChamp.StringValue, nouvelleValeur);
                    return(result);
                }

                //récupère les éléments à modifier
                string[]  strProps             = m_definitionPropriete.NomPropriete.Split('.');
                ArrayList lstElementsAModifier = new ArrayList();
                lstElementsAModifier.Add(elementToModif);
                for (int nProp = 0; nProp < strProps.Length - 1; nProp++)
                {
                    string strProp = strProps[nProp];
                    string strTmp  = "";
                    CDefinitionProprieteDynamique.DecomposeNomProprieteUnique(strProp, ref strTmp, ref strProp);
                    ArrayList newListe = new ArrayList();
                    foreach (object objet in lstElementsAModifier)
                    {
                        object newToModif = CInterpreteurTextePropriete.GetValue(objet, strProp);
                        if (newToModif != null)
                        {
                            newListe.Add(newToModif);
                        }
                    }
                    lstElementsAModifier = newListe;
                }
                string     strLastProp    = strProps[strProps.Length - 1];
                MethodInfo fonctionFinale = null;


                //Modifie la valeur
                foreach (object obj in lstElementsAModifier)
                {
                    try
                    {
                        if (fonctionFinale == null)
                        {
                            object     dummy  = null;
                            MemberInfo membre = null;
                            string     strTmp = "";
                            CDefinitionProprieteDynamique.DecomposeNomProprieteUnique(strLastProp, ref strTmp, ref strLastProp);
                            CInterpreteurTextePropriete.GetObjetFinalEtMemberInfo(obj, strLastProp, ref dummy, ref membre);
                            if (membre == null || !(membre is PropertyInfo))
                            {
                                result.EmpileErreur(I.T("The @1 property cannot be find|218", strLastProp));
                                return(result);
                            }
                            fonctionFinale = ((PropertyInfo)membre).GetSetMethod(true);
                            if (fonctionFinale == null)
                            {
                                result.EmpileErreur(I.T("The @1 property is in reading only|219", strLastProp));
                                return(result);
                            }
                        }
                        fonctionFinale.Invoke(obj, new object[] { nouvelleValeur });
                    }
                    catch (Exception e)
                    {
                        result.EmpileErreur(new CErreurException(e));
                        return(result);
                    }
                }
            }
            return(result);
        }