Grid - Añadir un menú al grid

Creado por David Miralpeix, Modificado el Fri, 16 Feb 2024 a las 12:25 PM por David Miralpeix

Añade un menú al grid.
A diferencia de los menús de formulario (que se puede añadir mediante código o un registro en la tabla ahora_menus), los menús de grids sólo se pueden añadir desde código.
Para capturar el evento click del botón, debemos activar la captura de eventos del grid y programar el evento de la grid.
Definición:
CONTROLGRID.menuitemadd "Caption","Name",[Tipo As eTipo_Menu=0],[padre As string],[nuevoGrupo As Boolean=False],[checked As Boolean = False],[ResIdIcono]

Devuelve el elemento creado, o sea que lo podemos instanciar en la propia creación y asignarlo a una variable

Para volver a capturar el control, accedemos mediante la función menuItem que nos da la colección de elementos del menú:


Código VB6:

Sub show ()
     with gform.controls ("grdLineas")
         .menuitemadd "Mi nuevo menú", "pers_mnuNuevo"
         .activarscripts=true
     end with
End Sub

Sub Grid_MenuAfterExecute(aGrid,aMenuItem)
     If agrid.name = "grdLineas" Then
         If amenuitem.name = "pers_mnuNuevo" Then
             MsgBox "Hola" 
         End If
     End If
End Sub

--Ejemplo de creación de menú y acceso a las propiedades enabled
Sub Show()

     With gForm.Controls("grdLineas")
         .menuitemadd ("Caption","mnuName",0)
         .enabled = False 
     End With
 
     gcn.obj.showmsgbox gForm.Controls("grdLineas").menuitem("mnuName").name
     gForm.Controls("grdLineas").menuitem("mnuName").enabled = true
End Sub

Código C#:

public void Show()
        {
            ICntGridUsuario lGrid = (ICntGridUsuario)gForm.Controls["grdLineas"];
            lGrid.MenuItemAdd("Mi nuevo menú", "pers_mnuNuevo");
            lGrid.ActivarScripts = true;
        }


    //Para Activar este evento hay que configurar la grid. Poner en el void Initialize por ejemplo: (gForm.Controls["grdLineas"] as ICntGridUsuario).ActivarScripts = true;

    public void Grid_MenuAfterExecute(ICntGridUsuario aGrid, IAhoraTool aMenuItem)
    {
            if (aGrid.Name == "grdLineas")
            {
                if (aMenuItem.Name == "pers_mnuNuevo")
                {
                    AhoraCore.VBA.Interaction.MsgBox("Hola");
                }
            }
        }

        // Ejemplo de creación de menú y acceso a las propiedades Enabled
        public void Show()
        {
            ICntGridUsuario lGrid = (ICntGridUsuario)gForm.Controls["grdLineas"];
            lGrid.MenuItemAdd("Caption", "mnuName", ETipo_Menu.eTipo_Menu_Menu);
            lGrid.Enabled = false;

            gCn.Obj.ShowMsgBox((gForm.Controls["grdLineas"] as ICntGridUsuario).MenuItem("menuName").Name);
            lGrid.MenuItem("mnuName").Enabled = true;

        }


¿Le ha sido útil este artículo?

¡Qué bien!

Gracias por sus comentarios

¡Sentimos mucho no haber sido de ayuda!

Gracias por sus comentarios

¡Háganos saber cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
Se requiere la verificación del CAPTCHA.

Sus comentarios se han enviado

Agradecemos su esfuerzo e intentaremos corregir el artículo