Spanish Activar click mientras se ejecuta un do while

ivavilagu

Member
Licensed User
Longtime User
Hola a todos,
me he quedado encallado en la aplicación que estoy programando. Muestro un label en pantalla durante unos segundos. Para detener la ejecución utilizo un do/loop. Aquí el código:

B4X:
Dim actual As Long
actual=DateTime.Now+ 24000
DoWhileDateTime.Now < actual
      DoEvents
Loop

El problema es que durante esos 24 segundos el usuario debería poder clickar el label y quitarlo de la pantalla. Tengo un 'sub label_Click' pero por mucho que el usuario pulsa el label no se ejecuta el código del sub. Imagino que es porque se está ejecutando el do/loop.

¿Hay alguna forma de poder hacerlo?

Gracias.
 

ivavilagu

Member
Licensed User
Longtime User
Puedes utilizar un Timer, si pasan 24 segundos y no haces click que ejecute un código, mira este link

No me he expresado bien. Muestro un label en pantalla y el usuario, o bien puede esperar 24 segundos a que el label se oculte de forma automática (esto ya lo tengo hecho) o bien no quiera esperar ese tiempo y decida quitarlo por su cuenta clicando en el label. Esa es la parte no resuelta.
 

klaus

Expert
Licensed User
Longtime User
As vampirbcn already told you you should use a Timer to hide the Label.
With your code you slow down the system a lot.
This code will do it:
B4X:
Sub Process_Globals
    Dim Timer1 As Timer
End Sub

Sub Globals
    Dim lblTest As Label
End Sub

Sub Activity_Create(FirstTime As Boolean)
    lblTest.Initialize("lblTest")
    Activity.AddView(lblTest, 10dip, 10dip, 150dip, 50dip)
    lblTest.Text = "Test"
    lblTest.TextSize = 16
  
    Timer1.Initialize("Timer1", 24000)
    Timer1.Enabled = True
End Sub

Sub lblTest_Click
    lblTest.Visible = False
    Timer1.Enabled = False
End Sub

Sub Timer1_Tick
    lblTest_Click
End Sub
Best regards.
 

ivavilagu

Member
Licensed User
Longtime User
I changed the code using timers but for one reason I don´t understand the event label_click doesn´t run when I click over the label. These is the code:

B4X:
Sub Process_Globals
  dim time1 as timer
end sub

Sub Globals
  dim lbl2 as label
end sub

Sub Activity_Create(FirstTime As Boolean)
    introduccion
end sub

Sub introducción
  lbl2.Initialize("")
  Activity.AddView(lbl2, 5%x, 0, 90%x, 60%y)
  lbl2.text="Example"
  time1.Initialize("Time1", 12000)
  time1.Enabled = True
end sub

Sub time1_Tick
  lbl2_click
end sub

Sub lbl2_Click
  time1.enabled=false
      .
      .
      .
end sub


When the timer arrives to 12 seconds the label click event runs as well but through clicking the screen doesn´t work. Is there any problem with activity views?
 

ivavilagu

Member
Licensed User
Longtime User
Uppps, sorry

Problem solved. Thank you both!!
 
Top