Exemplo n.º 1
0
        private void FillListeChamps()
        {
            m_panelFormules.SuspendDrawing();
            foreach (Control ctrl in m_panelFormules.Controls)
            {
                if (ctrl is CEditeurFormuleNommee)
                {
                    ctrl.Visible = false;
                    m_reserveEditeurs.Add(ctrl);
                }
            }
            ArrayList lst = new ArrayList();

            if (m_cmbTypeEntite.SelectedValue is Type && m_cmbTypeEntite.SelectedValue != typeof(DBNull))
            {
                Type tp = (Type)m_cmbTypeEntite.SelectedValue;
                foreach (PropertyInfo info in tp.GetProperties())
                {
                    if (info.GetSetMethod() != null)
                    {
                        object[] attrs = info.GetCustomAttributes(typeof(DynamicFieldAttribute), true);
                        if (attrs.Length > 0)
                        {
                            DynamicFieldAttribute attr    = (DynamicFieldAttribute)attrs[0];
                            CFormuleForPropriete  formule = new CFormuleForPropriete(info.Name, attr.NomConvivial);
                            formule.Formule = ActionCreerEntite.GetFormuleForPropriete(info.Name);
                            lst.Add(formule);
                        }
                    }
                }
            }
            lst.Sort();
            m_listeExpressions = lst;
            int nY = 0;

            foreach (CFormuleForPropriete formule in lst)
            {
                CEditeurFormuleNommee editeur = null;
                if (m_reserveEditeurs.Count > 0)
                {
                    editeur = (CEditeurFormuleNommee)m_reserveEditeurs[0];
                    m_reserveEditeurs.Remove(editeur);
                }
                else
                {
                    editeur        = new CEditeurFormuleNommee();
                    editeur.Parent = m_panelFormules;
                }
                editeur.Visible            = true;
                editeur.Width              = m_panelFormules.ClientRectangle.Width;
                editeur.Location           = new Point(0, nY);
                formule.Editeur            = editeur;
                editeur.TextFormule.Enter += new EventHandler(OnEnterZoneFormule);
                editeur.Init(m_wndAideFormule.FournisseurProprietes, m_wndAideFormule.ObjetInterroge);
                editeur.Libelle  = formule.NomConvivial;
                editeur.TabIndex = nY;
                nY += editeur.Size.Height + 1;
                editeur.Formule = formule.Formule;
            }
            m_panelFormules.ResumeDrawing();
        }