[RESUELTO] Cómo detectar redimensionado en la ventana ?
[RESUELTO] Cómo detectar redimensionado en la ventana ?
Hola de nuevo amigos !
Me gustaría saber si conocéis de alguna forma de detectar el redimensionado de la ventana en formularios o en informes dentro de base, bien porque el usuario le da al botón de pantalla completa o bien porque redimensionamos a mano los bordes. Me parece que no hay ningún evento que nos ayude en esto, lo cual a priori implicaría tener una subrutina corriendo de manera permanente de fondo detectando el tamaño de la ventana y actuando cuando fuese preciso...
Pero esto nos generaría otro problema. Mientras esa subrutina este funcionando de fondo, los otros eventos no serán procesados y se atascarán hasta que salgamos de esa subrutina en bucle de fondo... Con vb6 esto se solucionaba con el clásico 'doevents' dentro del bucle, pero desconozco si la UNO API tiene algo parecido...
Por lo tanto estoy buscando una forma de poder hacerlo pero sin tener una subrutina corriendo de fondo en bucle....
alguna idea al respecto ?
Me gustaría saber si conocéis de alguna forma de detectar el redimensionado de la ventana en formularios o en informes dentro de base, bien porque el usuario le da al botón de pantalla completa o bien porque redimensionamos a mano los bordes. Me parece que no hay ningún evento que nos ayude en esto, lo cual a priori implicaría tener una subrutina corriendo de manera permanente de fondo detectando el tamaño de la ventana y actuando cuando fuese preciso...
Pero esto nos generaría otro problema. Mientras esa subrutina este funcionando de fondo, los otros eventos no serán procesados y se atascarán hasta que salgamos de esa subrutina en bucle de fondo... Con vb6 esto se solucionaba con el clásico 'doevents' dentro del bucle, pero desconozco si la UNO API tiene algo parecido...
Por lo tanto estoy buscando una forma de poder hacerlo pero sin tener una subrutina corriendo de fondo en bucle....
alguna idea al respecto ?
OpenOffice última versión | Windows XP X64 | Windows 8.1 X64 | Mageia Linux x64 | Java 1.8.0_231
Re: Cómo detectar redimensionado en la ventana ?
Si que lo hay, con Python es trivial...
Que produce la siguiente salida cada vez que redimencionas la ventana.
No le veo caso para un informe, pero es "casi" el mismo proceso.
Saludos
Código: Seleccionar todo
import uno
import unohelper
from com.sun.star.awt import XWindowListener
class EventsWindow(unohelper.Base, XWindowListener):
def __init__(self, controller):
super().__init__()
self._controller = controller
def disposing(self, event):
pass
def windowResized(self, event):
event_name = 'window_resized'
if hasattr(self._controller, event_name):
getattr(self._controller, event_name)(event)
return
def windowMoved(self, event):
pass
def windowShown(self, event):
pass
def windowHidden(self, event):
pass
class Eventos(object):
def __init__(self):
pass
def window_resized(self, event):
ps = event.Source.PosSize
msg = f'Pos X: {ps.X}\tPos Y: {ps.Y}\tAncho: {ps.Width}\tAlto: {ps.Height}'
print(msg)
return
def abrir_formulario(event=None):
e = Eventos()
w = event.Source.CurrentController.ComponentWindow
w.addWindowListener(EventsWindow(e))
return
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Cómo detectar redimensionado en la ventana ?
Olvide mencionar, la macro abrir_formulario, se debe asociar al evento, Documento abierto del formulario, eso es todo...
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Cómo detectar redimensionado en la ventana ?
y en basic ?
OpenOffice última versión | Windows XP X64 | Windows 8.1 X64 | Mageia Linux x64 | Java 1.8.0_231
Re: Cómo detectar redimensionado en la ventana ?
Hola,
Siempre que he tocado el tema de Python con otras personas no he tenido buenas experiencias porque me he encontrado con gente muy sensible que se incomoda cuando uno les dice que Python no es la gran maravilla que dicen, al menos no en Calc o Base.
Paso al ejemplo concreto:
Trivial es trivial.
Yo copié el código, lo guardé de la manera correcta y lo asigné a la ruta y formulario correcto y evento correcto.
Resultado: simplemente no funciona.
Siguiente paso: ahora a investigar el porque no funciona y aquí te puedes llevar una hora dos días tres días una semana y todo eso le quita lo trivial. No tengo ninguna duda que puedo investigar porque no funciona y dar con "el porque" pero no es tan trivial, estoy seguro que no lo es.
Saludos, Federico.
Siempre que he tocado el tema de Python con otras personas no he tenido buenas experiencias porque me he encontrado con gente muy sensible que se incomoda cuando uno les dice que Python no es la gran maravilla que dicen, al menos no en Calc o Base.
Paso al ejemplo concreto:
Trivial es trivial.
Yo copié el código, lo guardé de la manera correcta y lo asigné a la ruta y formulario correcto y evento correcto.
Resultado: simplemente no funciona.
Siguiente paso: ahora a investigar el porque no funciona y aquí te puedes llevar una hora dos días tres días una semana y todo eso le quita lo trivial. No tengo ninguna duda que puedo investigar porque no funciona y dar con "el porque" pero no es tan trivial, estoy seguro que no lo es.
Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Re: Cómo detectar redimensionado en la ventana ?
Después de hacer circo maroma y teatro se logra mas o menos hacer que funcione (nada trivial) pero al final ... no no funciona.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Re: Cómo detectar redimensionado en la ventana ?
Este es el código que he utilizado:
Código: Seleccionar todo
import uno
import unohelper
from com.sun.star.awt import XWindowListener
class EventsWindow(unohelper.Base, XWindowListener):
def __init__(self, controller):
super().__init__()
self._controller = controller
def disposing(self, event):
pass
def windowResized(self, event):
event_name = 'window_resized'
if hasattr(self._controller, event_name):
getattr(self._controller, event_name)(event)
return
def windowMoved(self, event):
pass
def windowShown(self, event):
pass
def windowHidden(self, event):
pass
class Eventos(object):
def __init__(self):
pass
def window_resized(self, event):
ps = event.Source.PosSize
msg = 'Pos X: {ps.X}\tPos Y: {ps.Y}\tAncho: {ps.Width}\tAlto: {ps.Height}'
msgbox(msg)
return
def abrir_formulario(event=None):
e = Eventos()
w = event.Source.CurrentController.ComponentWindow
w.addWindowListener(EventsWindow(e))
return
def prueba():
msgbox('hola federico')
return
def msgbox(message):
CTX = uno.getComponentContext()
SM = CTX.getServiceManager()
toolkit = SM.createInstance('com.sun.star.awt.Toolkit')
parent = toolkit.getDesktopWindow()
mb = toolkit.createMessageBox(parent, 'infobox', 0, 'PyUNO', str(message))
return mb.execute()
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Re: Cómo detectar redimensionado en la ventana ?
de acuerdo, no es trivial, pero es necesario saber como hacerlo, esto incluye la depuración, que en Python es muy completa, no hay que estar adivinando nada, si, entonces no es trivial, pero reitero, hay que saber hacerlo.
En lo personal no entiendo como se ofende la gente con casi cualquier cosa, la gente es muy sensible (aquí hemos tenido varios casos), en "mi experiencia", el gran descubrimiento para mí, reitero para mi, fue Python, y tengo claro que no tiene por que ser lo mismo para todos, hacer esto en Basic, me parece tan aburrido de solo pensarlo. Hubo un momento en mi transición que claro, dominada más Basic y no era nada trivial en Python, ahora es completamente al revés. La diferencia, es que ahora podemos ayudar con una transición más suave en este foro, pero si se dan por vencidos a las primeras de cambio, apaga y vamonos, como dicen mis queridos amigos en España.
Saludos
En lo personal no entiendo como se ofende la gente con casi cualquier cosa, la gente es muy sensible (aquí hemos tenido varios casos), en "mi experiencia", el gran descubrimiento para mí, reitero para mi, fue Python, y tengo claro que no tiene por que ser lo mismo para todos, hacer esto en Basic, me parece tan aburrido de solo pensarlo. Hubo un momento en mi transición que claro, dominada más Basic y no era nada trivial en Python, ahora es completamente al revés. La diferencia, es que ahora podemos ayudar con una transición más suave en este foro, pero si se dan por vencidos a las primeras de cambio, apaga y vamonos, como dicen mis queridos amigos en España.
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Cómo detectar redimensionado en la ventana ?
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Re: Cómo detectar redimensionado en la ventana ?
Ok me quedo con eso, ahora si estamos de acuerdo.de acuerdo, no es trivial,
Según yo, ya hice todo lo necesario para que funcione y no funciona ¿que será?
Ahí están las capturas de pantalla.
Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Re: Cómo detectar redimensionado en la ventana ?
yo no puedo hablar de python, pero lo poco que sé no me gusta nada. Para mi un lenguaje de programación tiene que ser sí o sí con declaración explícita. Y sé que el basic también puede ser usar de manera implícita, pero esa forma es realmente asquerosa. Supongo que habrá quien le guste. Yo prefiero mantenerme alejado de ese tipo de código.
De todas maneras volviendo al tema, no es posible hacer lo que comento en basic ? evidentemente me refiero a hacerlo sin tener que mantener una subrutina de fondo en loop continuo. Ya sé que esto tal vez no sea muy común, pero en caso de necesidad, cómo lo haríamos ? el problema es cuando el usuario tira de los bordes de la ventana, y entonces se nos destroza el diseño de un formulario, es un ejemplo.
De todas maneras volviendo al tema, no es posible hacer lo que comento en basic ? evidentemente me refiero a hacerlo sin tener que mantener una subrutina de fondo en loop continuo. Ya sé que esto tal vez no sea muy común, pero en caso de necesidad, cómo lo haríamos ? el problema es cuando el usuario tira de los bordes de la ventana, y entonces se nos destroza el diseño de un formulario, es un ejemplo.
OpenOffice última versión | Windows XP X64 | Windows 8.1 X64 | Mageia Linux x64 | Java 1.8.0_231
Re: Cómo detectar redimensionado en la ventana ?
Te envío un ejemplo en Basic.
El mensaje que muestra las dimensiones del formulario es solo eso, un mensaje innecesario, que puede desactivarse pulsando la tecla Esc una o dos veces (dos veces si el usuario redimensiona el formulario a mano)
Saludos, Federico.
El mensaje que muestra las dimensiones del formulario es solo eso, un mensaje innecesario, que puede desactivarse pulsando la tecla Esc una o dos veces (dos veces si el usuario redimensiona el formulario a mano)
Saludos, Federico.
- Adjuntos
-
- baseParaEjemplos.zip
- Dimensión formulario.
- (11.93 KiB) Descargado 238 veces
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Re: Cómo detectar redimensionado en la ventana ?
A favor de Basic, ya hasta fui al cine ......
y Python después de circo maroma y teatro pues no, no funciona al 100
Si este programa se quiere usar en OpenOffice ........ uff menos.
Entre más conozco a Python más quiero a Basic (a nivel Calc) .
Me hubiera gustado ser parte de los que hablan maravillas de Python (nivel Calc) pero hasta ahorita no veo lo maravilloso que es.
Saludos, Federico.
y Python después de circo maroma y teatro pues no, no funciona al 100
Si este programa se quiere usar en OpenOffice ........ uff menos.
Entre más conozco a Python más quiero a Basic (a nivel Calc) .
Me hubiera gustado ser parte de los que hablan maravillas de Python (nivel Calc) pero hasta ahorita no veo lo maravilloso que es.
Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Re: Cómo detectar redimensionado en la ventana ?
gracias fornelasa, muy buen ejemplo y en realidad se trata de añadir un escucha eventos. Era lo que precisaba, muchas gracias
OpenOffice última versión | Windows XP X64 | Windows 8.1 X64 | Mageia Linux x64 | Java 1.8.0_231