HOWTO: AX – Modificar el menu contextual de un objeto

Al hacer “click derecho” sobre un objeto en Dynamics Axapta se ejecuta el metodo showContextMenu, el cual como siempre, podemos sobrecargar. Esta es la pinta que tiene inicialmente:

public int showContextMenu(int MenuHandle)
{
   int ret;

   ret = super(MenuHandle);

   return ret;
}

Es como la mayoría de métodos sobrecargados. Vamos a sustituirlo por este otro código:

int showContextMenu(int MenuHandle)
{
   int         ret;
   PopupMenu   menu;
   int         menuItem;
   ;

   // Crea un nuevo menú utilizando el manejador recibido por parámetros
   menu = PopupMenu::create(MenuHandle, this.hWnd());

   // Añade un nuevo Menu Item al menú recién creado
   menuItem = menu.insertItem("Mi nuevo menú");

   // Abre el menú
   ret = menu.draw();

   // Comprueba el Menu Item que se ha pulsado
   if (ret == menuItem)
   {
       // Si es el mío, pongo código aqui

       Box::info('Pon tu código aquí!');

       return 0;
   }

   // Si ha pulsado alguno que no es el mío, se lo devuelvo al estándar
   return ret;
}

Como se puede ver en el ejemplo, podemos añadir por código un nuevo MenuItem al menu contextual y a la vez, capturar la pulsación del mismo para poder ejecutar nuestro propio código de respuesta.

Descarga