Popupmenu y Formulario MDI

Hola
Tengo un formulario MDI de una aplicación, con varios formularios MDIchild.
En algunos de ellos utilizo en los listview un popupmenu. Cuando los uso el menu del formulario MDI desaparece.
Posiblemente tenga una propiedad que no la tenga correctamente.
Alguien puede ayudarme.
Saludos.
Jalmendro

1 respuesta

Respuesta
1
¿El popUpMenu... dónde lo tienes definido? ¿En el Child?
Si es así, quítalo del form Child y ponlo en el MDI, agrupado en una raíz con varios submenus... y la raíz la pones NO visible. Algo así:

MiMenu (visible = false)
....Guardar (visible = true)
....Imprimir (visible = true)
....Exportar (visible = true)
Escribes los eventos del menu en el MDI, claro.
Luego, cuando lo tengas que llamar desde cualquier formChild:
      PopupMenu frmMDI. Guardar
     PopupMenu frmMDI. Imprimir
    Etc...
Muy bueno. No lo pensé.
De este manera, si los eventos están en el MDI, y desde los formularios formChild pretendo actualizar una tabla (por ejemplo), debo pasarle al formulario MDI un parámetro con el nombre de la tabla...¿?
Saludos.
Jalmendro
Lo que te he explicado es para el tema de la desaparición del menu..
Lógicamente, si desde un formChild quieres llamar a un popUpMenu, y que este menu (que esta en el MDI) haga algo, pues si, tendrás que pasarle parámetros.
Private sub mnuActializa_Click(NuevosParametros as ......)
También existe la posibilidad de que te declares en un módulo varias variables PUBLICAS, y así poder utilizarlas desde varios sitios. Por ejm:
'******** Modulo: GENERAL
public sub iEmpleado as integer
'******** Form Child (meto el código de empleado en un textbox y le doy al boton drcho
Private sub TextBox_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single)
       

        If Button = vbRightButton Then
               iEmpleado = TextBox.Text
               PopupMenu MDI.mnuActualiza
        End If

end sub
'********* Form MDI (utilizo la variable global iEmpleado para actualizar la fecha del empleado)
Private sub mnuActializa_Click()
     Conexion.Execute "UPDATE Empleados SET Fecha='" & date() & " WHERE idEmpleado=" & iEmpleado
     iEmpleado=0

End Sub
Es una solución.
Solo que si tienes varios procesos en los que ocurra esto, serian muchas variables publicas hy muchos condicionantes.
Posiblemente haya otra solución. Se verá.
Gracias
jalmendro

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas