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
El método se encuentra disponible normalmente en los formularios.
La funcionalidad del PB es particular ya que no hay un formulario directamente sino que se construye dinámicamente en cada ejecución (por eso es tan lento). Esta funcionalidad se puede conseguir en el PB pero resulta mucho mas complejo que en un formulario normal.
Saludos.
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!