Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Lier un déroulant à une option ajoutée dans Outils / Options

0000002440     -      23/08/2016

Ce paramétrage montre comment lier un déroulant à une option ajoutée dans "Outils / Options".

Au préalable, cette option est ajoutée dans la table OPTIONS via cette requête : 

insert into options (type,valeur, stem,libelle_f)
values ('CLOT_CAISS','Jour', 'PARAMS','Mode clôture caisse')
 
(Requête valable uniquement en Majuro. En Aruba, l'option doit être ajoutée dans Params.dbf.)
 
Le customizer repris ci-dessous exploite l'évènement NodeCreating de la fenêtre des options MercatorUi.Forms.Param.ParamOptionsForm.
 
Dans l'EventArgs de cet évènement, on peut spécifier :
  • MinMaxInt : pour permettre la saisie d'un entier dans l'intervalle délimité par Min et Max
  • MinMaxDouble : pour permettre la saisie d'un double dans l'intervalle délimité par Min et Max
  • ComboItems : pour afficher un déroulant. Les éléments de ce déroulant doivent être simplement séparés par une virgule.

Notes :

  • une seule de ces propriétés sera prise en compte
  • il n'est pas possible de changer le mode d'affichage standard des options pour lesquelles Mercator détermine lui-même l'interface de saisie

Le code de ce customizer s'établit comme suit :

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;


namespace Main
{
    public class Customizer : MercatorUi.ICustomizers.IExec
    {

        public void Main(MercatorUi.ICustomizers.ExecAction Action)
        {
            if (Action == MercatorUi.ICustomizers.ExecAction.DossierOpen)
            {
                Globals.Main.BaseFormCreating += new MercatorUi.Main.BaseFormCreatingEventHandler(Main_BaseFormCreating);
            }
            else if (Action == MercatorUi.ICustomizers.ExecAction.DossierClose)
            {
                Globals.Main.BaseFormCreating -= new MercatorUi.Main.BaseFormCreatingEventHandler(Main_BaseFormCreating);
            }
        }

        void Main_BaseFormCreating(object sender, MercatorUi.Main.BaseFormCreatingEventArgs e)
        {
            if (e.Form is MercatorUi.Forms.Param.ParamOptionsForm)
            {
                MercatorUi.Forms.Param.ParamOptionsForm paramOptionsForm = (MercatorUi.Forms.Param.ParamOptionsForm)e.Form;
                paramOptionsForm.AddingNode += new MercatorUi.Forms.Param.ParamOptionsForm.AddingNodeEventHandler(paramOptionsForm_AddingNode);
                paramOptionsForm.Disposed += new EventHandler(paramOptionsForm_Disposed);
            }
        }
        
        void paramOptionsForm_AddingNode(object sender, MercatorUi.Forms.Param.ParamOptionsForm.AddingNodeEventArgs e)
        {
            if (e.Id == "CLOT_CAISS")
            {
                e.ComboItems = "Jour,Semaine";
            }
        }

        void paramOptionsForm_Disposed(object sender, EventArgs e)
        {
            MercatorUi.Forms.Param.ParamOptionsForm paramOptionsForm = (MercatorUi.Forms.Param.ParamOptionsForm)sender;
            paramOptionsForm.AddingNode -= new MercatorUi.Forms.Param.ParamOptionsForm.AddingNodeEventHandler(paramOptionsForm_AddingNode);
            paramOptionsForm.Disposed -= new EventHandler(paramOptionsForm_Disposed);
        }

    }
}