コード例 #1
0
        //---------------------------------------------------------------------
        protected override void MyCreateControle(CCreateur2iFormulaireV2 createur, C2iWnd wnd, Control parent, IFournisseurProprietesDynamiques fournisseur)
        {
            C2iWndListeSpeedStandard listeStd = wnd as C2iWndListeSpeedStandard;

            if (listeStd == null)
            {
                return;
            }
            CCreateur2iFormulaireV2.AffecteProprietesCommunes(wnd, m_panelListeSpeedStd);
            m_fournisseurProprietes = fournisseur;
            m_panelListeSpeedStd.BoutonAjouterVisible                    = listeStd.HasAddButton;
            m_panelListeSpeedStd.BoutonSupprimerVisible                  = listeStd.HasDeleteButton;
            m_panelListeSpeedStd.BoutonModifierVisible                   = listeStd.HasDetailButton;
            m_panelListeSpeedStd.BoutonFiltrerVisible                    = listeStd.HasFilterButton;
            m_panelListeSpeedStd.AllowCustomisation                      = listeStd.UserCustomizable;
            m_panelListeSpeedStd.OnChangeSelection                      += new EventHandler(m_panelListeSpeedStd_OnChangeSelection);
            m_panelListeSpeedStd.AffectationsPourNouveauxElements        = listeStd.Affectations;
            m_panelListeSpeedStd.ObjetReferencePourAffectationsInitiales = EditedElement;
            if (listeStd.AlternativeEditedElement != null)
            {
                m_panelListeSpeedStd.TraiterModificationElement = TraiterEditionPanel;
            }
            // Initialisation des colonnes
            foreach (C2iWndListeSpeedStandard.CColonneListeSpeedStd col in WndListeStandard.Columns)
            {
                if (col.InfoChampDynamique != null)
                {
                    m_panelListeSpeedStd.AddColonne(col.Titre, col.InfoChampDynamique.NomPropriete, col.Width);
                }
                //string strCle = "";
                //string strProp = "";
                //if (!CDefinitionProprieteDynamique.DecomposeNomProprieteUnique(col.InfoChampDynamique.NomPropriete, ref strCle, ref strProp))
                //    strProp = col.InfoChampDynamique.Nom;
                //if(col.InfoChampDynamique != null)
                //    m_panelListeSpeedStd.AddColonne(col.Titre, strProp, col.Width);
            }
            // Initialise le filtre
            if (WndListeStandard.Filter != null)
            {
                CDbKey dbKeyFiltreStandard  = WndListeStandard.Filter.DbKey;
                CFiltreDynamiqueInDb filtre = new CFiltreDynamiqueInDb(CSc2iWin32DataClient.ContexteCourant);
                if (filtre.ReadIfExists(dbKeyFiltreStandard))
                {
                    m_panelListeSpeedStd.FiltrePrefere = filtre.Filtre;
                }
            }
            // Initialise le nom du controle pour le registre des colonnes
            string strNom = "CustomListeSpeedStandard_";

            if (WndListeStandard.SourceFormula != null)
            {
                strNom += WndListeStandard.SourceFormula.TypeDonnee.TypeDotNetNatif.ToString();
            }
            m_panelListeSpeedStd.Name = strNom;

            m_panelListeSpeedStd.UseCheckBoxes = WndListeStandard.UseCheckBoxes;


            parent.Controls.Add(m_panelListeSpeedStd);
        }
コード例 #2
0
        public C2iWndListeSpeedStandard.CPointeurFiltreDynamiqueInDb EditeFiltre(Type typeElement, IServiceProvider provider, object value)
        {
            m_typeElement = typeElement;

            // Uses the IWindowsFormsEditorService to display a
            // drop-down UI in the Properties window.
            IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));

            if (edSvc != null)
            {
                m_typeElement = typeElement;
                m_service     = edSvc;
                // Initialise le dernier filtre sélectionné
                CFiltreDynamiqueInDb filtre = new CFiltreDynamiqueInDb(CSc2iWin32DataClient.ContexteCourant);
                C2iWndListeSpeedStandard.CPointeurFiltreDynamiqueInDb ptrFilter = value as C2iWndListeSpeedStandard.CPointeurFiltreDynamiqueInDb;
                if (ptrFilter != null)
                {
                    if (filtre.ReadIfExists(ptrFilter.DbKey))
                    {
                        Filtre = filtre;
                    }
                }

                // Affiche le controle dans une fenêtre déroulante
                edSvc.DropDownControl(this);

                filtre = Filtre;
                if (filtre != null)
                {
                    if (ptrFilter == null)
                    {
                        ptrFilter = new C2iWndListeSpeedStandard.CPointeurFiltreDynamiqueInDb();
                    }
                    ptrFilter.DbKey   = filtre.DbKey;
                    ptrFilter.Libelle = filtre.Libelle;
                    return(ptrFilter);
                }
            }

            return(new C2iWndListeSpeedStandard.CPointeurFiltreDynamiqueInDb());
        }
コード例 #3
0
 //----------------------------------------------------------------------------
 private void m_lnkOptionsFiltre_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
 {
     if (m_actionEditee != null)
     {
         CFiltreDynamiqueInDb filtre = new CFiltreDynamiqueInDb(CContexteDonneeSysteme.GetInstance());
         if (filtre.ReadIfExists(m_actionEditee.IdFiltreDynamiqueAUtiliser))
         {
             CFiltreDynamique filtreDyn = filtre.Filtre;
             if (filtreDyn != null)
             {
                 List <CFormuleNommee> lst = new List <CFormuleNommee>();
                 foreach (IVariableDynamique variable in filtreDyn.ListeVariables)
                 {
                     CFormuleNommee formule = new CFormuleNommee(variable.Nom, null);
                     formule.Id = variable.IdVariable;
                     foreach (CFormuleNommee formuleEx in m_actionEditee.ValeursVariablesFiltre)
                     {
                         if (formuleEx.Id == variable.IdVariable)
                         {
                             formule.Formule = formuleEx.Formule;
                         }
                     }
                     lst.Add(formule);
                 }
                 CFormuleNommee[] formules = lst.ToArray();
                 if (CFormEditeListeFormulesNommees.EditeFormules(ref formules, m_objetPourSousProprietes))
                 {
                     lst = new List <CFormuleNommee>();
                     foreach (CFormuleNommee formule in formules)
                     {
                         if (formule.Formule != null)
                         {
                             lst.Add(formule);
                         }
                     }
                     m_actionEditee.ValeursVariablesFiltre = lst.ToArray();
                 }
             }
         }
     }
 }
コード例 #4
0
        /// //////////////////////////////////////////////////////////////////
        protected static CResultAErreur ExecuteActionListe(CActionSur2iLinkAfficherListe action, object objetCible)
        {
            CResultAErreur   result = CResultAErreur.True;
            CFiltreDynamique filtre = action.Filtre;

            if (filtre == null || filtre.TypeElements == null)
            {
                result.EmpileErreur(I.T("Link parameter error : filter is null|30077"));
                return(result);
            }

            if (objetCible != null)
            {
                CObjetPourSousProprietes objetPourSousProp = null;
                objetPourSousProp = new CObjetPourSousProprietes(objetCible);
                IVariableDynamique variable = CActionSur2iLinkAfficherListe.AssureVariableElementCible(filtre, objetPourSousProp);

                /*if ( variable.TypeDonnee.TypeDotNetNatif != objetCible.GetType() )
                 * {
                 *      result.EmpileErreur(I.T("Expected type in the filter does not correspond to object type|30078"));
                 *      return result;
                 * }*/
                if (variable != null)
                {
                    filtre.SetValeurChamp(variable.IdVariable, objetCible);
                }
            }
            result = filtre.GetFiltreData();
            if (!result)
            {
                result.EmpileErreur(I.T("Filter error|30079"));
                return(result);
            }
            CFiltreData filtreData = (CFiltreData)result.Data;
            Type        tp         = CFormFinder.GetTypeFormToList(filtre.TypeElements);

            try
            {
                if (tp != null || tp.IsSubclassOf(typeof(CFormListeStandard)))
                {
                    CFormListeStandard            form    = ( CFormListeStandard )Activator.CreateInstance(tp, new object[0]);
                    CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(objetCible);
                    ctxEval.AttacheObjet(typeof(CContexteDonnee), CSc2iWin32DataClient.ContexteCourant);
                    if (action.FormuleContexte != null)
                    {
                        result = action.FormuleContexte.Eval(ctxEval);
                        if (!result)
                        {
                            result.EmpileErreur(I.T("Form context evaluation error|30080"));
                            return(result);
                        }
                        if (result.Data != null)
                        {
                            form.ContexteUtilisation = result.Data.ToString();
                        }
                    }
                    if (action.FormuleTitre != null)
                    {
                        result = action.FormuleTitre.Eval(ctxEval);
                        if (!result)
                        {
                            result.EmpileErreur(I.T("Form title evaluation error|30081"));
                            return(result);
                        }
                        if (result.Data != null)
                        {
                            form.TitreForce = result.Data.ToString();
                        }
                    }
                    form.FiltreDeBase = filtreData;
                    form.AffectationsPourNouveauxElements        = action.Affectations;
                    form.ObjetReferencePourAffectationsInitiales = objetCible;

                    form.BoutonAjouterVisible   = action.ShowBoutonAjouter;
                    form.BoutonModifierVisible  = action.ShowBoutonDetail;
                    form.BoutonSupprimerVisible = action.ShowBoutonSupprimer;
                    if (action.IdFiltreDynamiqueAUtiliser >= 0)
                    {
                        CFiltreDynamiqueInDb filtretoUse = new CFiltreDynamiqueInDb(CContexteDonneeSysteme.GetInstance());
                        if (filtretoUse.ReadIfExists(action.IdFiltreDynamiqueAUtiliser))
                        {
                            CFiltreDynamique filtreDyn = filtretoUse.Filtre;
                            if (filtreDyn != null)
                            {
                                CContexteEvaluationExpression ctx = new CContexteEvaluationExpression(objetCible);
                                foreach (CFormuleNommee formule in action.ValeursVariablesFiltre)
                                {
                                    if (formule.Formule != null)
                                    {
                                        CResultAErreur res = formule.Formule.Eval(ctx);
                                        if (res)
                                        {
                                            try
                                            {
                                                string strId = formule.Id;
                                                filtreDyn.SetValeurChamp(strId, res.Data);
                                            }
                                            catch { }
                                        }
                                    }
                                }
                                form.FiltrePrefere = filtreDyn;
                            }
                        }
                    }
                    if (action.ActionSurDetail != null)
                    {
                        CExecuteurActionSurPanelListeSpeedStandard executeur = new CExecuteurActionSurPanelListeSpeedStandard(action.ActionSurDetail, form);
                        form.SetModifierElementDelegate(new CPanelListeSpeedStandard.ModifierElementDelegate(executeur.ExecuteAction));
                    }
                    CTimosApp.Navigateur.AffichePage(form);
                }
                else
                {
                    result.EmpileErreur(I.T("Not avaliable|30082"));
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }