Mostrar un titulo en formulario con evento timer

Buenas tardes experto:
¿Es posible que en un formulario digamos de salutación, bienvenida, presentación, inicio, etc, podamos ir haciendo que vaya apareciendo un mensaje (etiquetas de texto) que diga por ejemplo Bienvenidos o cualquier otra cosa, letra a letra con una carencia de un segundo entre una y otra, menos o más, y luego abrir un formulario Menú Principal?.
He intentado con este procedimiento (una prueba de letras individuales), pero solo me aparece la primera eqitueta Letra B (Case 0). ¿Dónde estoy equivocado?. Gracias de antemano.
Private Sub Form_Open(Cancel As Integer)
Me.TimerInterval = 1000
End Sub
Private Sub Form_Timer()
Dim Baner As Integer
Select Case Baner
Case 0
Me.B.Visible = True
Baner = 0
Case 1
Baner = 1
Case 2
Me.V.Visible = True
Baner = 2
Case 3
Me.E.Visible = True
Baner = 3
Case 4
DoCmd.OpenForm "F_Menu"
Baner = 4
End Select
If Baner < 4 Then
Baner = Baner + 1
Else
Baner = 1
End If
End Sub
Respuesta
1
Te comento un par de cosillas:
- Te puedes ahorrar parte de código, dado que utilizas siempre el mismo intervalo de tiempo. Te explicaré cómo más abajo.
- No cierras el formulario. Ello implica que el proceso se seguirá ejecutando, con la consumición de recursos que ello implica. Este punto te lo incluyo en el código que verás más abajo.
- Tu código es bastante simplificable. Lo verás en el código que te he escrito más abajo.
- El problema te viene por la declaración de la variable Banner.
Vamos a ver...
El proceso que realiza el código sería el siguiente:
- Ejecuto TODO el proceso asociado al evento de formulario. Ello implica que me encuentro con la DIM Banner y le asocio el valor cero en la primera interacción -> Vuelvo la B visible. A continuación Banner me cambia de valor porque yo le asigno otro valor a través del igual.
- Espero el tiempo fijado en el timer
- Ejecuto TODO el proceso asociado al evento de formulario. Pero en ningún momento me he "guardado" el nuevo valor de Banner. Ello implica que cuando me encuentro con DIM Banner le asigno de nuevo el valor 0 -> Vuelvo la B visible
- Etc
Es por eso por lo que sólo te aparece la B
Lo que tienes que hacer es lo siguiente:
- Borras el evento asociado al cargar el formulario. No lo necesitas.
- Te vas al evento de formulario "Intervalo de cronómetro" y cambias el cero que hay ahí por tu 5000
- Reescribes tu código de la siguiente manera:
...
Private Sub Form_Timer()
Static Baner As Integer
Select Case Baner
Case 0
Me.B.Visible = True
Baner = Baner + 1
Case 1
Me.V.Visible = True
Baner = Baner + 1
Case 2
Me.E.Visible = True
Baner = Baner + 1
Case 3
docmd.close acForm, me.name
Docmd.openform "F_Menu"
End Select
End Sub
...
Como ves, para declarar la variable Banner no he utilizado DIM, sino STATIC. Cuando declaras una variable STATIC en esa variable siempre queda guardado el último valor que se le asignó (es decir, no comienza por cero como una DIM). De esta manera sí consigues que te funcione el Select Case.
Y eso es todo. Ya me dirás qué tal.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas