///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 { } } } } } }
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; }