Eventos del ratón o dispositivo apuntador en OOo Basic
|
Apache OpenOffice Basic reconoce los siguientes eventos del ratón o dispositivo apuntador:
Evento | Descripción |
---|---|
Ratón entra (Ratón dentro) |
El usuario ha movido el ratón desde fuera hacia el interior del objeto, entrando en el área del mismo. X e Y almacenan la posición de entrada del cursor. |
Mover ratón por medio del teclado |
El usuario arrastra el ratón mediante pulsaciones de una tecla |
Movimiento de ratón |
El usuario mueve el ratón sobre el objeto. X e Y almacenan la posición actual del cursor. |
Botón del ratón pulsado |
El usuario ha pulsado un botón |
Botón del ratón soltado |
El usuario ha soltado el botón pulsado |
Ratón sale (Ratón fuera) |
El usuario ha movido el ratón desde el interior del objeto hacia afuera, saliendo del área del mismo. X e Y almacenan la posición de salida del cursor. |
El evento Botón del ratón pulsado también se utiliza para notificar las solicitudes del menú contextual del control. En este caso, la propiedad PopupTrigger toma el valor TRUE.
Si la solicitud se hace pulsando el botón derecho del ratón, el evento se activará dos veces: una por la solicitud del menú contextual (PopupTrigger toma el valor TRUE), y otra por el clic del ratón (PopupTrigger toma el valor FALSE). Si sólo interesa controlar el clic el procedimiento deberá ignorar la llamada cuando PopupTrigger es TRUE |
La estructura de los eventos asociados al objeto se definen en la estructura com.sun.star.awt.MouseEvent (ver Struct MouseEvent) que proporciona la siguiente información:
Propiedad | Tipo | Descripción |
---|---|---|
Buttons |
Short | El botón que ha sido presionado, indicado por una o más de las constantes definidas en la enumeración com.sun.star.awt.MouseButton (ver Constants group MouseButton):
|
X |
Long | Coordenada X del ratón, medida en píxeles desde la esquina superior izquierda del control |
Y |
Long | Coordenada Y del ratón, medida en píxeles desde la esquina superior izquierda del control |
ClickCount |
Long | Número de clics asociados con el evento del ratón. Si Apache OpenOffice responde lo suficientemente rápido, ClickCount puede mostrar un valor 1 cuando se ha realizado un doble clic. |
Los siguientes ejemplos examinan la posición del ratón, qué botón se ha pulsado, y cuantos clics se han realizado, y depositan la información en un control Label del diálogo. Deben asignarse a los eventos correspondientes de un control (puede ser la misma etiqueta):
Sub Raton_BotonPulsado( oEv As Object ) '-------------------------------------------------------------------------- Dim Msg As String If oEv.PopupTrigger Then Exit Sub ' PopupTrigger Msg = IIf(oEv.ClickCount = 1,"C", "Doble c") & "lic botón " Select Case oEv.BUTTONS Case com.sun.star.awt.MouseButton.LEFT Msg = Msg & "izquierdo" Case com.sun.star.awt.MouseButton.RIGHT Msg = Msg & "derecho" Case com.sun.star.awt.MouseButton.MIDDLE Msg = Msg & "central" End Select Msg = Msg & " pulsado X= " & oEv.X & " Y=" & oEv.Y oEv.Source.Context.getControl("Label3").Text = Msg End Sub
Sub Raton_BotonSoltado( oEv As Object ) '-------------------------------------------------------------------------- Dim Msg As String If oEv.PopupTrigger Then Exit Sub ' PopupTrigger Msg = IIf(oEv.ClickCount = 1,"C", "Doble c") & "lic botón " Select Case oEv.BUTTONS Case com.sun.star.awt.MouseButton.LEFT Msg = Msg & "izquierdo" Case com.sun.star.awt.MouseButton.RIGHT Msg = Msg & "derecho" Case com.sun.star.awt.MouseButton.MIDDLE Msg = Msg & "central" End Select Msg = Msg & " soltado X= " & oEv.X & " Y=" & oEv.Y oEv.Source.Context.getControl("Label3").Text = Msg End Sub
Sub Raton_Mueve( oEv As Object ) '-------------------------------------------------------------------------- oEv.Source.Context.getControl("Label3").Text = "El ratón se mueve por X= " & oEv.X & " Y=" & oEv.Y End Sub
Sub Raton_Entra( oEv As Object ) '-------------------------------------------------------------------------- oEv.Source.Context.getControl("Label3").Text = "El ratón ha entrado por X= " & oEv.X & " Y=" & oEv.Y End Sub
Sub Raton_Sale( oEv As Object ) '-------------------------------------------------------------------------- oEv.Source.Context.getControl("Label3").Text = "El ratón ha salido por X= " & oEv.X & " Y=" & oEv.Y End Sub
Los eventos Click y Doubleclick de VBA no existen en Apache OpenOffice Basic. Pero como hemos visto, es fácil implementar procedimientos que los sustituyan |