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

Désactiver ou retirer un point de menu par code dans le menu

0000002383     -      27/08/2017

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 :

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.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 

Zoom
me2.SubItems.RemoveAt(1);