j.a.estevan
Si no eres parte de la solución, eres parte del problema
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;
}
{
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;
}
{
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.

En qué clase encuentro el Método showContextMenu ??? Por otra parte, cuando ejecuto el PB, si aprieto el botón derecho en cualquier de los campos, se traba todo el AX, crees que ese código me ayude a evitarlo? Gracias!
Atreju
11 de junio de 2011
00:25