Cambiar el color del control que recibe el foco en formularios en OpenOffice
Esta sencilla macro te permite cambiar el color del control que recibe el foco en un formulario de OpenOffice.
El primer paso será crear la macro en un módulo del documento, lo que garantiza la portabilidad si el documento junto con el formulario se envía a otro equipo.
Constará de dos subrutinas, que reciben como argumento el control que recibe el foco. Para configurar los colores hemos utilizado la función RGB que permite definir cualquier color a partir del valor de sus componentes Rojo, Verde y Azul.
El código a implementar será el siguiente:Option Explicit
Sub RecibeFoco( Control As Object )
On Error Resume Next
Control.Source.getModel.Border = 0
Control.Source.getModel.BackgroundColor = RGB(255,130,75)
End Sub
Sub PierdeFoco( Control As Object )
On Error Resume Next
Control.Source.getModel.Border = 1
Control.Source.getModel.BackgroundColor = RGB(200,200,200)
End Sub
Una vez implementado el código, editaremos el formulario en modo diseño.
Haciendo clic con el botón secundario encima del control (1), seleccionaremos desde su menú contextual la opción Campo de control... (2), mostrándose el diálogo Propiedades: Campo formateado. Haremos clic sobre la pestaña Acontecimientos (3), y haremos clic sobre el botón con 3 puntos del evento Recepción de foco (4).
Se mostrará el diálogo Acción asignada. Seleccionaremos de nuevo el evento Recepción de foco (5) y haremos clic sobre el botón Macro... (6).
Se mostrará el diálogo Selector de macro. Recorre el arbol de la Biblioteca de macros abriendo el módulo correspondiente a tu documento (7) y donde previamente implementaste el código. En Nombre de macro, selecciona RecibeFoco (8). Haz clic sobre el botón Aceptar.
Repite este último paso para el evento Al perder el foco, asignando la macro PierdeFoco.
El diálogo Acción asignada quedará como muestra la imagen. Haz clic sobre el botón Aceptar.
El diálogo Propiedades: Campo formateado se mostrará como ves en la imagen. Repite el proceso para cada uno de los controles del formulario.
Como puedes ver en la siguiente imagen, al editar el formulario, el control que ha perdido el foco toma el color gris que hemos definido en PierdeFoco, mientras que el control que recibe el foco toma el color definido en RecibeFoco. Los controles no editados siguen presentando el color original del formulario.