Ce code montre comment intervenir en modification sur le menu de Mercator Majuro. Il est construit sur base d'un customizer Main qui implémente l'interface MercatorUi.ICustomizers.ExecAction. Il se déclenche si l'action est MenuCreated.
Dans notre exemple, nous allons désactiver et changer le libellé de la seconde séquence apparaissant dans "Ventes / Livraison".
Le principe du code est de
- d'abord boucler dans les éléments supérieur du menu pour trouver l'élément "Ventes"
- ensuite dans cet élément, trouver le sous-élément "Livraison"
- au sein des sous-éléments de "Livraison", agir sur l'élément souhaité.
Le code est le suivant :
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.MenuCreated)
{
string ventes = MercatorUi._Divers.Iif_langue(MercatorUi.Globals.Langue, "Sales", "Verkopen", "Ventes");
string livraisons = MercatorController.xFunctions.xLibTypeDoc("V", 2, MercatorUi.Globals.Langue);
foreach (MercatorUi._BaseClasses.MenuElement me1 in Globals.StarterMainForm.Mainmenu.Items)
{
if (me1.Text == ventes)
{
foreach(MercatorUi._BaseClasses.MenuElement me2 in me1.SubItems)
{
if (me2.Text == livraisons)
{
if (me2.SubItems.Count >= 2)
{
me2.SubItems[1].Enabled = false;
me2.SubItems[1].Text += " pas d'accès par ce menu";
}
break;
}
}
break;
}
}
}
}
}
}
Pour retirer le point de menu, il suffit de remplace les 2 lignes agissant sur me2.SubItems[1] par
me2.SubItems.RemoveAt(1);