Menú contextual

Hola. He creado un menú contextual con varias opciones, cada una de las cuales está asociada a una función. Me gustaría que alguna de las opciones solo se encuentren habilitadas cuando se cumplen ciertas condiciones en el formulario. ¿Es esto posible?
Como ejemplo les doy el caso de las opciones cortar, copiar y pegar. En general cortar y copiar siempre se encuentran habilitadas pero pegar solo lo está si previamente fue cortado o copiado algún objeto.
Espero haber sido claro.
Muchas gracias de antemano.
Respuesta
1
Aúpa,
Lo que puedes hacer, es utilizar varios menús contextuales que incluyan las opciones para cada situación que deseas contemplar.
Para ello, puedes usar la propiedad BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar) del formulario.
Bastaría con incluir una llamada a esta función en el momento que quieres comprobar si se da determinada condición, por ejemplo, al modificar un campo, o al activar el registro actual.
Los pasos a seguir serían:
0. Crear los dos menús contextuales, cada uno con las diferentes opciones.
1. Seleccionar el evento del formulario o de algún control de este donde quieres realizar la comprobación y el cambio de menú.
2. Generar un procedimiento en código de Visual Basic para ese evento.
4. Dentro del código del procedimiento, lo primero que tendrás que hacer es comprobar si se cumplen la condición que quieres. Si se cumple la condición, basta con incluir una llamada al menú contextual que quieres activar.
Ejemplo:
El siguiente procedimiento se activa cuando se accede a un registro cualquiera del formulario actual (procedimiento Al_Activar_Registro o Form_Current)
Comprueba si el control tipo checkBox (Casilla de Verificación) está activado. Si lo está, activa el menú MiMenuNontext1, y si no, activa el MiMenuNontext2
Private Sub Form_Current()
if CasillaVerificacion1 = true then
Me.ShortcutMenuBar = "MiMenuNontext1"
else
Me.ShortcutMenuBar = "MiMenuNontext2"
end if
End Sub
También puedes utilizar la propiedad ShortcutMenuBar para ver que menú contextual está activado en un momento dado.
Espero que esto te sirva, si necesitas cualquier aclaración, no dudes en pedirla, o si no controlas Visual Basic y necesitas más ayuda.
Un abrazo,
Javi
Excelente, era lo que necesitaba.
Te hago una pregunta más. Quiero que uno de los items del menú contextual me de el resultado de una consulta. Te explico con el ejemplo : tengo un formulario en donde cada registro es un producto y cada producto tiene varios artículos asociados. Me gustaría que en el menú contextual se mostraran los artículos del producto activo.
Muchas Gracias por tu respuesta.
Aúpa,
Me alegro que mi anterior respuesta te haya servido. Vamos con tu nueva cuestión.
No sé si he entendido bien tu pregunta. Si lo que planteas es visualizar en el propio menú el resultado de la consulta: Que yo sepa, esto no es posible hacerlo.
Ahora bien; si desde el menú contextual quieres mostrar el resultado de la consulta, a continuación te explico cómo hacerlo:
En primer lugar habrá que crear la consulta que deseas:
Supongo que en el formulario tienes un campo que es la clave del producto (voy a suponer que el formulario se llama MiFormualrio, y que el campo donde tienes la clave del producto se llama MiCampo). Bien, vamos allá:
1. Crea una consulta (vamos a llamarle Mi consulta) con los campos de los artículos que desees mostrar.
2. En esta consulta añade el campo clave del Producto (supongo que tienes creada una relación entre Productos y Artículos, o que en la tabla de artículos tienes la clave del producto).
3. Prueba la consulta. Debería mostrar todos los productos, y para cada uno de ellos, todos los artículos relacionados. ¿No?
4. Ahora hay que filtrar la consulta para un Producto dado. En el campo de la consulta que contiene la clave del producto, introduce el siguiente criterio:
Formularios![MiFormualrio]![MiCampo]
Donde:
* MiFormulario es el nombre del formulario que al principio hemos citado
* MiCampo es el nombre del campo del formualrio que contiene la clave del producto.
Este criterio va a hacer que al ejecutar la consulta vaya al formulario, coja el valor de MiCampo y calcule la consulta para ese producto.
5. Abre el formulario MiFormulario y Prueba que la consulta funciona. Prueba que realmente muestra los artículos del producto que en cada momento tienes activo en el formulario. Guarda la consulta.
Ahora ya podemos ir al menú contextual para añadirle la opción que deseabas:
1. Edita el Menú Contextual.
2. En la pestaña de Comandos, verás que hay una opción que es "Todas las Consultas". Esta opción te muestra todas las consultas que tienes definidas en tu Base de Datos. Selecciona la nueva consulta que acabas de crear, y añádela sin más a tu menú contextual. Con esto ya tienes creado el Item que buscas.
De esta manera, cada vez que desde el formulario selecciones esa opción del menú contextual te aparecerá la consulta para el producto actual.
Espero que sea esto lo que querías, y que resuelva tu cuestión.
Cualquier duda o pega, no dudes en consultármela.
Un abrazo, y que tengas un buen año nuevo.
Javi
Muchas gracias pot tus respuestas. En cuanto a lo último lo que quería saber era justamente lo que me dijiste que no crees que se pueda. Igual creo que no es tan necesario. Muchas Gracias nuevamente

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas