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 :
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);
}
}
}