Sugerencias para la macro (si callo reviento....)
Código: Seleccionar todo
Sub PantallaCompleta2(Event As Object) ' Evento al cargar formulario
Dim oFrame As Object
Dim oDispatchHelper
Dim objSize as New com.sun.star.awt.Size
Dim oCtrl, oShape
Dim oForm As Object
Dim oVentana As Object
Dim oPosTam As Object
Dim FF,ComponentW,Desktop,pixpercmx,pixpercmy
oFrame=Event.Source.Parent.Parent.CurrentController.Frame ' Ventana en la que está el formulario
oDispatchHelper=CreateUnoService("com.sun.star.frame.DispatchHelper") ' Despachador
oDispatchHelper.ExecuteDispatch(oFrame,".uno:FullScreen","",0,Array()) ' Ventana completa
oVentana = ThisComponent.CurrentController.Frame.ContainerWindow ' Ventana del formulario
oPosTam = oVentana.getPosSize ' Tamaño actual de la ventana
GlobalScope.BasicLibraries.LoadLibrary("Tools") ' Llamamos a la librería de herramientas
oForm = Thiscomponent.getDrawpage.getForms.getByIndex(0) ' Formulario en el que estamos trabajando
oCtrl = oForm.getByName("lblNombre") ' Etiqueta. lblNombre es el nombre de la etiqueta
oCtrl.BackgroundColor = RGB(51,255,153) ' Color que le ponemos a la etiqueta
oShape = GetControlShape(ThisComponent, oCtrl.Name) ' Forma que contiene al control
Desktop = createUnoService("com.sun.star.frame.Desktop") ' Escritorio
FF = Desktop.getActiveFrame() ' Recogemos el marco activo
ComponentW = FF.getComponentWindow() ' El componente 'Ventana' del marco activo
pixpercmx =ComponentW.getInfo().PixelPerMeterX/100 ' Píxeles por centímetro de la ventana en X
pixpercmy =ComponentW.getInfo().PixelPerMeterY/100 ' Píxeles por centímetro en la ventana en Y
Dim oPos as new com.sun.star.awt.Point ' El punto en el que vamos a tener la forma
oPos.X = 0 ' La posición X
oPos.Y = 0 ' La posición Y
oShape.setPosition( oPos ) ' La posición final
oShape.SizeProtect = False ' No se protege el tamaño de la forma
Objsize.Width = oPosTam.Width *pixpercmx ' Anchura de la forma= a anchura de la ventana (sale en centímetros y le multiplicamos por píxeles)
Objsize.Height = oPosTam.Height*pixpercmy' ' Altura de la forma= a la altura de la ventana (sale en centímetros y le multiplicamos por píxeles)
oShape.setSize(Objsize) ' Tamaño de la forma
oShape.LayerID = 1 ' Ponemos la forma al fondo
End Sub
Hemos hallado el tamaño de la pantalla completa en píxeles (macro del usuario Je Je, de los foros en Inglés). Esto vendría bien, si es que no meto la pata, y suponiendo que el tamaño original de ventana nos lo da en centímetros. Puedes tener equipos con distintas resoluciones y tamaños de pantalla. Con esto (al menos es la intención), tendríamos cubiertos todos los casos posibles (en función de la medida, se actúa)
Hemos puesto la etiqueta en el fondo, de tal manera que no tape ningún botón. Espero que sí que impida el funcionamiento del botón derecho del ratón (También parece que se oculta el 'diálogo' que te sugiere cómo salir del modo de pantalla completa, con lo que tendrías resuelto otro de los items que ya tenías solucionado)
Hemos cambiado el color de la etiqueta para que se vea que sí que ocupa todo el formulario, aunque en el trabajo normal supongo que ha de eliminarse este efecto, incluso el borde.
Supongo que con un rectángulo, sin necesidad de ser etiqueta valdría igualmente.
Otro saludo!