コード例 #1
0
 ///Applique le paramètre à un élément
 public void ApplyOnElement(C2iSymbole element, CContexteEvaluationExpression ctxEval)
 {
     foreach (KeyValuePair <string, C2iExpression> kv in m_dicFormulesParPropriete)
     {
         string        strPropriete = kv.Key;
         C2iExpression formule      = kv.Value;
         if (formule != null)
         {
             //Trouve la propriete
             PropertyInfo info = element.GetType().GetProperty(strPropriete);
             if (info != null && info.GetSetMethod() != null)
             {
                 MethodInfo     methode = info.GetSetMethod();
                 CResultAErreur result  = formule.Eval(ctxEval);
                 if (result)
                 {
                     try
                     {
                         methode.Invoke(element, new object[] { result.Data });
                     }
                     catch
                     {
                     }
                 }
             }
         }
     }
 }
コード例 #2
0
        private void InitPanelFormules()
        {
            ValidePanelFormules();
            m_lastSymbolSel = null;
            C2iSymbole objet = m_panelEditeurSymbole.ObjetSelectionne;

            m_panelFormules.SuspendDrawing();
            foreach (Control ctrl in m_panelFormules.Controls)
            {
                CControlEditFormulePropriete ctrlFormule = ctrl as CControlEditFormulePropriete;
                if (ctrl != null)
                {
                    ctrlFormule.Visible = false;
                    ctrlFormule.Clear();
                }
            }
            if (objet == null || objet.Name.Trim() == "")
            {
                m_panelFormules.ResumeDrawing();
                return;
            }
            int nControle = 0;
            CParametreRepresentationElementDeSymbole parametreElement =
                m_parametre.Parametres.FirstOrDefault(p => p.ElementName == objet.Name);

            foreach (PropertyInfo propriete in objet.GetType().GetProperties())
            {
                if (propriete.GetGetMethod() == null)
                {
                    continue;
                }
                if (propriete.PropertyType != typeof(Color) &&
                    propriete.PropertyType != typeof(int) &&
                    propriete.PropertyType != typeof(string) &&
                    propriete.PropertyType != typeof(double) &&
                    propriete.PropertyType != typeof(bool))
                {
                    continue;
                }
                //Ne prend pas le propriétés non browsable
                object[] attrs = propriete.GetCustomAttributes(typeof(BrowsableAttribute), true);
                if (attrs.Length > 0)
                {
                    BrowsableAttribute attr = (BrowsableAttribute)attrs[0];
                    if (!attr.Browsable)
                    {
                        continue;
                    }
                }
                CControlEditFormulePropriete ctrlFormule = null;
                if (nControle >= m_listeControlesFormule.Count())
                {
                    ctrlFormule = new CControlEditFormulePropriete();
                    m_panelFormules.Controls.Add(ctrlFormule);
                    ctrlFormule.Dock = DockStyle.Top;
                    m_listeControlesFormule.Add(ctrlFormule);
                }
                else
                {
                    ctrlFormule = m_listeControlesFormule[nControle];
                }
                nControle++;
                C2iExpression formule = null;
                if (parametreElement != null)
                {
                    formule = parametreElement[propriete.Name];
                }
                ctrlFormule.Init(m_typeElements, propriete.Name, formule);
                ctrlFormule.Visible = true;
                ctrlFormule.BringToFront();
            }
            m_panelFormules.ResumeDrawing();
            m_lastSymbolSel = objet;
        }