예제 #1
0
        //------------------------------------------------------------
        /// <summary>
        /// Récupère la valeur d'un paramètre
        /// </summary>
        /// <param name="strParametre"></param>
        /// <returns></returns>
        /// <remarks>
        /// Chaque fenêtre peut posséder des paramètres.
        /// La valeur par défaut du paramètre peut être défini via une formule,
        /// cependant, en appellant "SetParameterValue" sur le C2iWnd, la valeur
        /// par défaut peut être remplacée par une valeur spécifique.<BR></BR>
        /// Si une fenêtre ne possède pas un paramètre, elle remonte sur les
        /// fenêtre parentes pour tenter de trouver la valeur du paramètre
        /// </remarks>
        public object GetParameter(string strParametre)
        {
            C2iWndFenetre wndFenetre = m_controleWnd != null ? m_controleWnd.WndAssociee as C2iWndFenetre : null;

            if (wndFenetre != null)
            {
                object val = wndFenetre.GetValeurForceeParametre(strParametre);
                if (val != null)
                {
                    return(val);
                }
                strParametre = strParametre.ToUpper();
                foreach (CFormuleNommee f in wndFenetre.Parameters)
                {
                    if (f.Libelle.ToUpper() == strParametre && f.Formule != null)
                    {
                        CContexteEvaluationExpression ctx = new CContexteEvaluationExpression(m_controleWnd.EditedElement);
                        CResultAErreur result             = f.Formule.Eval(ctx);
                        if (result)
                        {
                            return(result.Data);
                        }
                    }
                }
            }

            CEncaspuleurControleWndForFormules ctrl = WndContainer as CEncaspuleurControleWndForFormules;

            if (ctrl != null)
            {
                return(ctrl.GetParameter(strParametre));
            }
            return(null);
        }
예제 #2
0
 //------------------------------------------------------------
 public IWndAChildNomme  GetChildFromName(string strName)
 {
     if (m_controleWnd != null)
     {
         foreach (IControleWndFor2iWnd ctrl in m_controleWnd.Childs)
         {
             if (ctrl.WndAssociee != null && ctrl.WndAssociee.Name.ToUpper() == strName.ToUpper())
             {
                 return(new CEncaspuleurControleWndForFormules(ctrl));
             }
         }
         foreach (IControleWndFor2iWnd ctrl in m_controleWnd.Childs)
         {
             IWndAChildNomme trouve = new CEncaspuleurControleWndForFormules(ctrl).GetChildFromName(strName);
             if (trouve != null)
             {
                 return(trouve);
             }
         }
     }
     return(null);
 }