//-------------------------------------------------------------------
        public override CResultAErreur VerifieDonnees(CObjetDonnee objet)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                CParametrageNiveau parametrageNiveau = (CParametrageNiveau)objet;

                /*if ( parametrageNiveau.Libelle == "")
                 *      result.EmpileErreur(I.T("The label of level setting cannot be empty|188"));
                 */
                /*if(!parametrageNiveau.CanEdit)
                 *      result.EmpileErreur(I.T( "Coordinate setting currently used by objects : impossible to carry out the operation|190"));
                 */
                //Verification si la taille + le premier indice ne dépasse pas le format de numérotation
                if (parametrageNiveau.DernierIndice > parametrageNiveau.FormatNumerotation.IndexMax)
                {
                    result.EmpileErreur(I.T("The first reference @1 and size @2 allow to reach @3, but  the numbering format @4 is limited to @5|191", parametrageNiveau.PremiereReference, parametrageNiveau.Taille.ToString(), parametrageNiveau.DerniereReference, parametrageNiveau.FormatNumerotation.Libelle, parametrageNiveau.FormatNumerotation.ReferenceMax));
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }
        //-------------------------------------------------------------------
        public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee contexte)
        {
            CResultAErreur result = base.TraitementAvantSauvegarde(contexte);

            if (!result)
            {
                return(result);
            }
            DataTable table = contexte.Tables[GetNomTable()];

            if (table == null)
            {
                return(result);
            }
            ArrayList lst = new ArrayList(table.Rows);

            foreach (DataRow row in lst)
            {
                if (row.RowState == DataRowState.Modified)
                {
                    CParametrageNiveau parametrage = new CParametrageNiveau(row);
                    parametrage.ParametrageSystemeCoordonnees.ForceChangementSyncSession();
                }
            }
            return(result);
        }
        /// <summary>
        /// Verifie si la coordonnée existe syntaxiquement parlant
        /// </summary>
        /// <param name="strCoordonnee">Coordonnée à vérifier</param>
        /// <returns></returns>
        public CResultAErreur VerifieCoordonnee(string strCoordonnee)
        {
            CResultAErreur result = CResultAErreur.True;

            if (strCoordonnee == null || strCoordonnee == "")
            {
                result.EmpileErreur(I.T("The coordinate cannot be empty|184"));
            }
            else
            {
                string[] strNiveaux = strCoordonnee.Split(CSystemeCoordonnees.c_separateurNumerotations);

                if (strNiveaux.Length > RelationParametragesNiveau.Count)
                {
                    result.EmpileErreur(I.T("Too many levels in the coordinate|251"));
                    return(result);
                }

                CParametrageNiveau[] parametragesNiveaux = ParametragesNiveauxOrdonnees;

                //On va remonter niveau par niveau
                for (int i = strNiveaux.Length; i > 0; i--)
                {
                    CResultAErreur resulttmp = CResultAErreur.True;
                    string         Niv       = strNiveaux[i - 1];

                    CParametrageNiveau parametrageNiv = parametragesNiveaux[i - 1];

                    //Vérification syntaxique de la partie de coordonnée
                    resulttmp = parametrageNiv.RelationSysCoor_FormatNum.VerifieReference(Niv);

                    //Vérification sur la plage paramétrée
                    if (resulttmp.Result)
                    {
                        resulttmp = parametrageNiv.ReferencePossible(Niv);
                    }

                    if (!resulttmp.Result)
                    {
                        result.Erreur += resulttmp.Erreur;
                        result.Result  = false;
                    }
                }
            }
            return(result);
        }