Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

Evento Open y Activate
#1

Buenas!.

Buscando una aplicación que hace uso de una base de datos, encontré un error en como presentaba un formulario al comenzar la aplicación.
Se trata de que al iniciar la aplicación muestre un formulario con una imagen y luego se cierre el formulario dando paso a otro formulario.

Lo extraño fue. Que ese formulario de presentación al mostrar la imagen, el formulario se iba a la esquina superior izquierda y no se centraba.
Ese código estaba en el evento Open. Puede que del cambio de QT4 a QT5 haya influido. La hice en el 2016.

Os muestro un ejemplo parecido al del formulario.

GAMBAS
  1. Private cuentasegundos As Integer
  2.  
  3. Public Sub Form_Open()
  4.  
  5.     
  6.   With Timer1
  7.     .Delay = 1000
  8.     .Start()
  9.    
  10.    'Código que se quiera añadir. Como es el del evento activate para probar efecto
  11.    
  12.  
  13. Public Sub Timer1_Timer()
  14.  
  15.   If cuentasegundos = 2 Then
  16.     Timer1.Stop
  17.     Me.Close
  18.   Else
  19.     cuentasegundos += 1
  20.  
  21.  
  22. Public Sub Form_Activate()
  23.  
  24.   Dim ppicture As New Picture
  25.   Dim nomimagenes As String[]
  26.   Dim ruta As String
  27.  
  28.   'Sin la creación de un paquete de instalación, temporalmente uso el directorio de la aplicación para las imágenes
  29.   ruta = Application.Path &/ "Imagenes/"   
  30.   nomimagenes = Dir(ruta, "*.png")
  31.  
  32.   ppicture = Picture.Load(ruta & nomimagenes[Rand(nomimagenes.Max)])
  33.  
  34.   With PictureBox1
  35.     .Picture = ppicture   
  36.     .Expand = True
  37.  
  38.   With Me
  39.     .Center()
  40.     .Arrangement = Arrange.Fill
  41.     .W = ppicture.W
  42.     .H = ppicture.H
  43.  



Como veis el Timer se dispara en el evento Load, en realidad antes se ejecuta el evento actviate y luego va al código del timer.
Podría hacer que el código de mostrar la imagen fuese en el load, pero entonces no estaría centrado el formulario.

Espero no repetirme, ya que puede parecer común.

Saludos


Archivos adjuntos
.gz FormularioCentradoImagen-0.0.1.tar.gz Tamaño: 57.59 KB  Descargas: 1

"El lobo siempre será malo si sólo escuchamos a Caperucita.". El lobo.
    ¡Gracias!
#2

Pues yo no veo el load por ninguna parte... Huh Huh

No podemos regresar
    ¡Gracias!
#3

(16-09-2021, 15:54)Shordi escribió:  Pues yo no veo el load por ninguna parte.

Ups, quise decir Open. Angel
(Creo que Form_Load me viene de Visual Basic)

Para nota curiosa he probado el código en el evento Open del formulario en la Gambas 3.15.2 y funciona.
En cambio en la Gambas 3.16.x tengo que usar el código en el evento Activate para que funcione.
Si ya decía yo que esto lo había visto funcionar.

Algo tuvo que cambiar en la Gambas 3.16.

Saludos

"El lobo siempre será malo si sólo escuchamos a Caperucita.". El lobo.
    ¡Gracias!
#4

¿ Nada ?. 

Ni un siquiera, es más recomendable que uses el evento Activate por bla, bla, bla. Wink

Esto la única forma siempre será verlo ejecutando la aplicación. El problema es que con el tiempo cuando ya
has creado la aplicación te encuentres que en una nueva versión del lenguaje no funcione algo que ya te funcionaba con anterioridad.

En ese caso, los usuarios te avisarían, vale. Y el desarrollador lo verá cuando pase "el plumero".  ( Si se acuerda ).
Pero imaginemos que la aplicación es mucho más compleja. Pues habrá que rezar a "San Isidoro de Sevilla". ( El ciberpatrono ), allá por el 2001.
 
Cita:El Papa Juan Pablo II considera nombrar a San Isidoro de Sevilla el santo patrono de los usuarios de la Internet y de los programadores de computación, dijeron el martes fuentes del Vaticano.

Ya ha llovido desde entonces.

No me quejo de  que por actualizar a la 3.16.x esto haya dejado de funcionar. Más bien en un error de un mal uso de "algo" del lenguaje por parte del desarrollador
(mía) que di por entendido que funcionaba así...pues a larga no era así. Que en parte a lo mejor el propio desarrollador principal lo vea mejor de esa forma.
O algo cambió a la larga de una nueva instalación o actualización del sistema. Librerías y demás.

- Error de diseño.
- Obsolescencia de diseño.

Saludos

"El lobo siempre será malo si sólo escuchamos a Caperucita.". El lobo.
    ¡Gracias!
#5

Cita:Ni un siquiera, es más recomendable que uses el evento Activate por bla, bla, bla.
Es que tú te respondías solito...

El evento Open se dispara al abrir un form. No puedes crear objetos en ese evento y querer que se muestren antes de que se muestre el formulario. Para mí el misterio es que te funcionase antes.
Habría que probar qué ocurre si creas los objetos en el evento _New, que se dispara al crear la instancia del form y les das características en el open...
Personalmente nunca he utilizado el evento Activate... para esas cosas hay otro parecido: Show

Saludos

No podemos regresar
    ¡Gracias!
#6

(21-09-2021, 12:42)Shordi escribió:  Es que tú te respondías solito...

En parte era por haceros hablar y dar vidilla. ( Se me ha visto el plumero). Angel
 
Cita:Personalmente nunca he utilizado el evento Activate... para esas cosas hay otro parecido: Show

Es que Show es una "composición" de varios eventos. Smile

Saludos

"El lobo siempre será malo si sólo escuchamos a Caperucita.". El lobo.
    ¡Gracias!


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje

Salto de foro:


Usuarios navegando en este tema: 2 invitado(s)