[RESUELTO] ¿como pasa a pantalla completa al lanzar MyBiblio

Discute sobre las herramientas de la base de datos
Responder
Edu9
Mensajes: 34
Registrado: Mar Ene 16, 2018 12:53 pm

[RESUELTO] ¿como pasa a pantalla completa al lanzar MyBiblio

Mensaje por Edu9 »

Hola a todos y en especial a RMG que es a quien pertenece la aplicación MyBiblioteca.
No acabo de comprender como pasa a pantalla completa después de la macro Password. :crazy:
Un desarrollo paso a paso del comienzo del programa sería para mi de mucha ayuda.
Gracias a tu programa estoy modificando el programa de la biblioteca de un centro de mayores en Alicante.
Muchas gracias por adelantado. :bravo:
Última edición por PepeOooSevilla el Sab Abr 18, 2020 8:18 pm, editado 1 vez en total.
Razón: Marcar Resuelto correctamente
LibreOffice 7.2 en Windows 7
RMG
Mensajes: 3884
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: ¿como pasa a pantalla completa al lanzar MyBiblioteca

Mensaje por RMG »

Hola,

Con Escape, o Alt+F4 (en Win) sales de modo pantalla completa. Editas el formulario de inicio forPrestamos y en las propiedades del formulario interno Libros, en el evento ("Acontecimiento") Al cargar, tienes la macro que hace que la pantalla ocupe todo el escritorio.

Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Longi
Mensajes: 810
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: ¿como pasa a pantalla completa al lanzar MyBiblioteca

Mensaje por Longi »

Alternativa al modo pantalla completa:
El modo pantalla completa no me termina de gustar (cosas que tiene uno), sin embargo sí que quiero controlar el tamaño del formulario (maximizar la ventana ) y que no haya muchas barras por ahí danzando, ya que para rellenar campos no necesito una barra de controles de formulario, aunque si una barra de navegación de formulario y un menú (por si quiero abrir un calc, writer o lo que sea. Así que estoy usando lo siguiente:
En el formulario, en vista de diseño, en el menú herramientas, personalizar, pestaña de sucesos, abrir documento le asigno la macro siguiente:

Código: Seleccionar todo

Sub AbrirForm

    If left(Split(thiscomponent.Title," : ")(1),14)="COMARCAS TOTAL" Then                          ' En caso de ser un formulario de los de entradas
    MaxWindow                                                                               ' Llamamos a la función
    End if                                                                                  ' Acaba la condición

    If left(Split(thiscomponent.Title," : ")(1),15)="FHOJAOPERADORES" Then                          ' En caso de ser un formulario de los de entradas
    MaxWindow                                                                               ' Llamamos a la función
    End if                                                                                  ' Acaba la condición

    If left(Split(thiscomponent.Title," : ")(1),8)="Entradas" Then                          ' En caso de ser un formulario de los de entradas
    MaxWindow                                                                               ' Llamamos a la función
    End if                                                                                  ' Acaba la condición

    If left(Split(thiscomponent.Title," : ")(1),8)="ARTABRA" Then                           ' En caso de ser Artabra
    oVentana = thiscomponent.CurrentController.Frame.ContainerWindow                        ' Ventana del formulario
    oPosTam = oVentana.getPosSize                                                           ' Control sobre el tamaño de la ventana
    oVentana.setPosSize( 50, 50, 750, 500, com.sun.star.awt.PosSize.POSSIZE )               ' Aplicamos el tamaño que queremos
    End if                                                                                  ' Acaba la condición

    If left(Split(thiscomponent.Title," : ")(1),17)="Formulario_Puente" Then                ' En caso de ser Artabra
    oVentana = thiscomponent.CurrentController.Frame.ContainerWindow                        ' Ventana del formulario
    oPosTam = oVentana.getPosSize                                                           ' Control sobre el tamaño de la ventana
    oVentana.setPosSize( 50, 50, 750, 600, com.sun.star.awt.PosSize.POSSIZE )               ' Aplicamos el tamaño que queremos
    End if                                                                                  ' Acaba la condición

    Barras                                                                                  ' Llamamos a la función

End sub
Evidentemente he puesto código para más de un formulario, ya que si lo aplicas a varios formularios te irá abriendo cada formulario con las medidas y posición que le pongas.

Si usas:
"If left(Split(thiscomponent.Title," : ")(1),14)="COMARCAS TOTAL" Then " ten en cuenta que COMARCAS TOTAL es el nombre del formulario, y 14 es el número de caracteres que tiene ese nombre.
MaxWindow Es una función de Windows que maximiza la ventana.
En las otras opciones he puesto el tamaño con el que quiero que cada formulario abra.
Si quieres que todos se maximicen no hace falta poner condición ninguna de título, con MaxWindow sería suficiente.
Barras es una función que te pongo a continuación, y que lo que hace es que si abre en modo diseño te muestra las barras de diseño de formulario y de controles de formulario, con lo que puedes seguir con el diseño, y si abres en modo de escritura solo te deja el menú, la barra de estado, y la de navegación de formulario, ganado superficie de trabajo en la pantalla sin llegar al modo pantalla completa.
Vamos!, que bastante más liado solo por mi capricho de decir que no me gusta el modo pantalla completa!
Ventaja: puedes monitorizar en una macro todos los tamaños de todos los formularios que quieras (eso sí, tendrás que personalizarla),

Código: Seleccionar todo

Function Barras 

    On Error GoTo oBad                                                                      ' Control de errores
    '-----------------------------------------
    ' Evitamos que se repita la macro (solo un ciclo)

    If Coli= "No" then                                                                      ' Si la constante global es 'No'
    Coli="Si"                                                                               ' La cambiamos a 'Si'
    Exit Function                                                                           ' Nos echa de la función
    End if                                                                                  ' En caso de que sea distinto de 'No'

    If Len(Coli)=0 or Coli="Si" Then                                                        ' Si Coli es distinto de 'No'

    oCurrentController = ThisComponent.CurrentController                                    ' Controlador del formulario
    oLayoutManager = ThisComponent.CurrentController.Frame.LayoutManager                    ' Tipo de elementos Barra-Menú
    oElements = oLayoutManager.getElements()                                                ' Elementos de tipo barra-menú
    '-----------------------------------------------
    ' Distinguimos entre visualización en diseño y en vista de trabajo

    If oCurrentController.isFormDesignMode Then                                             ' Si es en forma diseño
    oLayoutManager.createElement("private:resource/toolbar/formsnavigationbar")             ' Creamos la barra de navegación de formularios
    oLayoutManager.ShowElement("private:resource/toolbar/formsnavigationbar")               ' La aplicamos
    oLayoutManager.createElement("private:resource/toolbar/formdesign")                     ' Creamos la barra de diseño de formularios
    oLayoutManager.ShowElement("private:resource/toolbar/formdesign")                       ' La aplicamos
    oLayoutManager.createElement("private:resource/toolbar/formcontrols")                   ' Creamos la barra de controles de formulario
    oLayoutManager.ShowElement("private:resource/toolbar/formcontrols")                     ' La aplicamos
    oLayoutManager.createElement("private:resource/menubar/menubar")                        ' Creamos el menú    
    oLayoutManager.showElement("private:resource/menubar/menubar")                          ' Lo aplicamos
    End If                                                                                  ' Acabamos la condición de diseño
    '---------------------------------------
    ' Si no estamos en diseño eliminamos todos los elementos y después generamos el que queremos
       
    If not(oCurrentController.isFormDesignMode) Then                                        ' Si no es de diseño
    
    oElements = oLayoutManager.getElements()                                                ' Elementos tipo barra o menú
    For x = LBound(oElements) to UBound(oElements)                                          ' Los recorremos todos
      If oElements(x).ResourceURL <> "private:resource/toolbar/formsnavigationbar" Then     ' Si no es la barra de navegación de formularios
        oLayoutManager.hideElement(oElements(x).ResourceURL)                                ' Las escondemos
      End If                                                                                ' Acabamos la condición
    next                                                                                    ' Vamos al siguiente elemento
    '--------------------------------------------------
    ' En algunos formularios no queremos la barra de navegación de formularios
    
    If left(Split(thiscomponent.Title," : ")(1),17)="Formulario_Puente" or left(Split(thiscomponent.Title," : ")(1),15)="Outras Funcións" Then     ' En caso de no ser el formulario puente ni formularioOutrasFuncions
      Wait 100                                                                              ' Esperamos un poco
      oLayoutManager.HideElement("private:resource/toolbar/formsnavigationbar")             ' La escondemos
    End if                                                                                  ' Acabamos la condición
    
'    If oLayoutManager.isVisible then
'        oLayoutManager.visible = 0
'    End if
    '---------------------------------------------
    ' Generamos las barras que vamos a necesitar, no más. Tener en cuenta que hay barras ocultas, pero otras directamente no están.

    If left(Split(thiscomponent.Title," : ")(1),17)<>"Formulario_Puente" and left(Split(thiscomponent.Title," : ")(1),15)<>"Outras Funcións" Then     ' En caso de no ser el formulario puente ni formularioOutrasFuncions
    oLayoutManager.createElement("private:resource/menubar/menubar")                        ' Creamos el menú    
    oLayoutManager.showElement("private:resource/menubar/menubar")                          ' Lo aplicamos
    oLayoutManager.createElement("private:resource/toolbar/formsnavigationbar")             ' Creamos la barra de navegación de formularios
    oLayoutManager.ShowElement("private:resource/toolbar/formsnavigationbar")               ' La aplicamos
    oLayoutManager.createElement("private:resource/statusbar/statusbar")                    ' Creamos la barra de estado
    oLayoutManager.ShowElement("private:resource/statusbar/statusbar")                      ' La aplicamos
    End if                                                                                  ' Acaba la condición del nombre del formulario
    End if                                                                                  ' Acaba la condición de que que sea o no en diseño
    End if                                                                                  ' Acaba la condición de que la constante sea diferente de 'No'

    if left(Split(thiscomponent.Title," : ")(1),15)="Outras Funcións" Then  
    Coli="No"                                                                               ' Pasamos la constante global a 'No'  
    Else
    Coli=""
    End if
    
    Exit Function                                                                           ' Nos echa de la función
    '------------------------------------------------------------
    ' Control de errores

    oBad:		
	Dim oErLine As Integer
	Dim oErNum As Integer
	Dim oErMsg As String
		oErLine = Erl
		oErNum = Err
		oErMsg = Error
		Msgbox("Error en la línea número" & Chr$(9) & " : " & oErLine & Chr$(10) _
			& "Número de error " & Chr$(9) & " : " & oErNum &Chr$(10 ) _
			& "Mensaje de error" & Chr$(9) & " : " & oErMsg , 0, "Función Barra, Módulo Formularios")

End Function
Global Coli
Formulario 'Outras_Funcións' y 'Formulario_Puente" son dos formularios en los que preferí eliminar la barra de navegación de formularios y el menú, de tal modo que me quedan como una botonera para acceder a otros formularios, sin más herramientas.
Esta última aclaración la pongo porque salen en la función barras, aunque lo suyo es que en una función no salga algo así de concreto y se pueda usar para cualquier formulario.
No sé si te sirve, pero tenía que ponerlo algún día!

Un saludo! ;)

Ah! Se me olvidaba poner la función MaxWindow y la función ShowWindow para que funcionen (todo esto solo para Windows):

Código: Seleccionar todo

sub MaxWindow

    dim frame, Window, handle                                                               ' Declaramos las variables
    Frame=thiscomponent.CurrentController.Frame                                             ' Marco del formulario actual
    'frame  = StarDesktop.getActiveFrame()                                                   ' El marco activo
    window = frame.getContainerWindow()                                                     ' Ventana del marco
    handle = window.getWindowHandle(dimarray(), 1)                                          ' 1=WIN32
    ShowWindow( handle, 3 )                                                                 ' Hide 0 SW_HIDE, Show 5 SW_SHOW, Minimize 2 SW_MINIMIZE, Maximize 3 SW_MAXIMIZE 

end sub

Declare Function ShowWindow Lib "user32" (ByVal hWnd As Integer, ByVal txt As String, ByVal caption As String,ByVal Typ As Integer) As Integer
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Edu9
Mensajes: 34
Registrado: Mar Ene 16, 2018 12:53 pm

[RESUELTO] ¿como pasa a pantalla completa al lanzar MyBiblio

Mensaje por Edu9 »

¡Que grandes sois tanto RMG como Longi! Muchas gracias y he de deciros que a las 8 de la tarde una parte de mi aplauso estará dedicado a gente como vosotros que no dudáis en ayudar y ademas rápidamente a los que vamos muy rezagados. Otra vez muchas gracias.
LibreOffice 7.2 en Windows 7
Responder