Een menu-item met code deactiveren of verwijderen uit het menu

0000002383     -      27-08-2017

Deze code laat zien hoe u kan reageren op de veranderingen in het Mercator Majuro menu. Hij is gebouwd op basis van een Main customizer die een MercatorUi.ICustomizers.ExecAction implementeert. Het wordt geactiveerd als de actie MenuCreated is gebruikt.

In ons voorbeeld zullen we de benaming van de tweede sequentie deactiveren en veranderen die voorkomt in “Verkoop / Leveringen".

Het principe van de code is om

  • Eerst zich vast te maken aan de bovenste elementen om het “Verkoop" element te vinden
  • Vervolgens in dit element het sub-element “Leveringen” te vinden
  • Te werken binnen de sub-elementen van “Leveringen” aan het gewenste element.

De code is als volgt:

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

 

Om het menu-item te verwijderen volstaat het om de 2 lijnen die werken op me2.SubItems[1] te verwisselen met

Zoom
me2.SubItems.RemoveAt(1);