Comunidad Gambas-es
Evento Open y Activate - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: General (https://gambas-es.org/forum-4.html)
+--- Tema: Evento Open y Activate (/thread-612.html)



Evento Open y Activate - Shell - 16-09-2021

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.

Código:
Private cuentasegundos As Integer

Public Sub Form_Open()

  Randomize
    
  With Timer1
    .Delay = 1000
    .Start()
  End With
   
   'Código que se quiera añadir. Como es el del evento activate para probar efecto
   
End

Public Sub Timer1_Timer()

  If cuentasegundos = 2 Then
    Timer1.Stop
    Me.Close
  Else
    cuentasegundos += 1
  Endif

End

Public Sub Form_Activate()

  Dim ppicture As New Picture
  Dim nomimagenes As String[]
  Dim ruta As String
 
  'Sin la creación de un paquete de instalación, temporalmente uso el directorio de la aplicación para las imágenes
  ruta = Application.Path &/ "Imagenes/"   
  nomimagenes = Dir(ruta, "*.png")
 
  ppicture = Picture.Load(ruta & nomimagenes[Rand(nomimagenes.Max)])

  With PictureBox1
    .Picture = ppicture   
    .Expand = True
  End With

  With Me
    .Center()
    .Arrangement = Arrange.Fill
    .W = ppicture.W
    .H = ppicture.H
  End With

End

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


RE: Evento Load y Activate - Shordi - 16-09-2021

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


RE: Evento Openy Activate - Shell - 16-09-2021

(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


RE: Evento Open y Activate - Shell - 21-09-2021

¿ 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


RE: Evento Open y Activate - Shordi - 21-09-2021

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


RE: Evento Open y Activate - Shell - 21-09-2021

(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