El uso de las Cintas de Opciones (Ribbon) y VBA (Visual Basic for Application). RibbonAndVBA
En este artículo se va a tratar a un nivel básico de las Cintas de Opciones (Ribbon) y su uso con VBA.
Ribbon a nivel de base de datos.
Si uno está acostumbrado a usar Barras de Herramientas Personalizadas deberá de cambiar el “chip” bueno jejeej cambiar no, olvidarse totalmente de ese concepto para entrar a un nuevo mundo del Ribbon que “supera” a las Barras pero que incomoda al tener que aprender varios conceptos nuevos y los siguientes son alguno de ellos,
- El Ribbon va asociado a un formulario o informe o a la aplicación.
- El Ribbon que esté asociado a un formulario sólo está activo cuando dicho formulario al estar abierto no sea emergente y esté visible, cualquier cambio de valor de estas dos últimas propiedades hace que el Ribbon desaparezca.
En caso de asociar el Ribbon a la base de datos este estará en cache mientras dure la sesión de la aplicación pudiendo ser sustituido por otra al abrir un formulario o informe volviendo a ser visible al cerrar los objetos comentados.Usando la interface de Access se puede establecer el Ribbon del siguiente modo,
- Botón Office | Opciones de Access | Base de datos actual | Opciones de barra de herramientas y de la cinta de opciones | Nombre de banda de opciones:
![]()
Con código de VBA usando la propiedad “CustomRibbonID” del objeto Database.
- CodeDb.Properties("CustomRibbonID") = "rbbInicio"
O para crearla,
- CodeDb.Properties.Append CodeDb.CreateProperty("CustomRibbonID", dbText, "rbbInicio")
En todos los casos hace falta reiniciar la base de datos para hacer visible el Ribbon.
Ribbon a nivel de objetos formulario (form) o informe (report).
Sencillo, sencillo, no hay más que rascar de lo que se indica aquí y de modo parecido a la sección anterior hay un método visual y otro a través de código VBA.Usando el método visual y en modo edición de un form o report,
- Hacer visible la Hoja de propiedades (Alt + Entrar) | Solapa: Otras | Nombre de banda de opción.
Con código de VBA usando la propiedad “RibbonName” del objeto Form o Report.
- Me.Properties("RibbonName") = "rbbNombreRibbon"
Ribbon, planteamiento de uso.
A la conclusión que he llegado trasteando con esta nuevo bicho de Access 2007 es sencilla pero para llegar a ella me he tenido que pelear unas cuantas horas con él, en realidad es como se aprende y ¡¡salen un montón de notas!!.Para obtener una aplicación con Ribbon hace falta los siguiente,
- Usar un Ribbon (rbbPrincipal) a nivel de base de datos, tal como se ha comentado en la sección anterior Ribbon a nivel de base de datos.
- Usar Ribbon independientes para los formularios e informes (rbbFormA, rbbFormB, rbbSub1FormA, rbbSub2FormA, rbbReportA, etc.) que se irán activando y desactivando conforme el objeto tome el foco, tal como se comenta en la sección Ribbon a nivel de formulario (form) o informe (report).
Así de sencillo, no hay más.
Si uno es observador y está familiarizado con las convenciones de nombre podrá comprobar en los nombres de ejemplo de las Cintas de Opciones, como también se indica Sub de subformulario. Si dentro de un formulario existen uno o más subformularios estos también tienen (como formulario que es) la propiedad RibbonName para activar un Ribbon, al activar subFormA se dispara el Ribbon rbbSub1FormA, al tomar el foco subFormB el anterior desaparece y queda activo rbbSub1FormB, ¡genial! Como efecto visual es muy bueno y atractivo.
Ribbon ejemplo práctico.
Vayamos a visualizar lo comentado hasta ahora, descargar el ejemplo propuesto al final del artículo llamado test.RibbonAndVBA en Attachment.
Al abrir la base de datos se inicia con un formulario inicial de presentación, al pulsar el botón Aceptar se presenta un nuevo form llamado frmTest con dos grandes botones y un tercero para cerrarlo.
Antes de continuar hay que indicar que previo a abrirse los formularios se activa la Cinta de Opciones llamada rbbPrincipal y es la única visible en estos momentos.Volvemos a frmTest y pulsamos el primer botón grande, “Activar Cinta de Opciones …” y se puede apreciar como ha desaparecido rbbPrincipal y se ha hecho visible rbbAyuda.
Ribbon y sus particularidades.
Continuando con la base de datos de test nos encontramos con dos formularios el z01_frmEmergente y z02_frmInvisible que sirven para observar dos particularidades imaginables por su nombre.
- z01_frmEmergente es un formulario con su propiedad emergente a True, al activar la cinta de opciones rbbAyuda y tras clicar el botón se observa que esta cinta aparece y desaparece inmediatamente por lo que no se aconseja usar este tipo de formularios si debe de usarse una cinta.
-
z02_frmInvisible es visible al abrirlo, activamos la cinta rbbAyuda usando el botón y a continuación clicamos Cambiar el estado de este formulario en invisible, voila, desaparece el form y la cinta. Es comprensible ya que el formulario pierde el foco y por tanto vuelve el Ribbon principal.
McPegasus, 30/04/2008