Spanish Detencion para escuchar un evento

Guillermo Sanzeri

Member
Licensed User
Longtime User
Hola.

Quería saber si se puede hacer una detención al programa para esperar un evento, por ejemplo que presiones un botón para dar valor a una variable global, y luego continuar la ejecución.

Explico por que. Quiero hacer una función para crear una ventana que tiene dos botones, SI y NO, Ejecuto la función que crea la misma pero continúa la ejecución sin detenerse a ver que botón presiona el usuario.

Espero haberme explicado. Muchas gracias por sus ayudas.
 

vampirbcn

Active Member
Licensed User
Longtime User
Hola Guillermo,

Una solución sencilla seria crear un panel oculto con el label y los botones necesarios, en este caso SI y No. Cuando necesites que el usuario vea el panel lo haces visible. De este modo la App seguirá realizando las funciones que desees sin detenerse y cuando el usuario haga click en el botón se ejecutará el evento.

Saludos
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Guillermo

Hay una solucion pero que no me gusta mucho, que es crear un bucle, y esperar a que pulsen algun boton, si haces esta, te recomiendo que ademas pongas una variable global con la que tambien puedas salir en caso de pulsar tecla atras o por tiempo.

B4X:
' tienes que hacer estas variables globales y ponerlas en el click de cada botón
DIM BOTON_NOPULSADO = 0
Dim BOTON_SI = 1
DIM BOTON_NO = 2
DIM BOTON_CANCELAR = 3
Dim EsperarBoton as int
´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´


' donde quieras esperar a que pulsen el botón
EsperarBoton=BOTON_NOPULSADO

' hacer visible los botones

Do While EsperarBoton=BOTON_NOPULSADO
  doevents
Loop


' hacer invisible los botones


´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´
Sub BotonSi_Click
  EsperarBoton = BOTON_SI
end sub
´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´
Sub BotonNo_Click
  EsperarBoton = BOTON_NO
end sub

´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´

Sub Activity_KeyPress (KeyCode As Int) As Boolean

  ' para salir por botón Esc , puedes emplear lo mismo en otros sitios
  If KeyCode = KeyCodes.KEYCODE_BACK Then 
    EsperarBoton = BOTON_CANCELAR
    Return True
  end if

' Si los botones los incrustas en un panel, puedes poner la condición que el panel esté visible  
If KeyCode = KeyCodes.KEYCODE_BACK Then 
    If PanelBoton.Visible then
      EsperarBoton = BOTON_CANCELAR
      Return True
    end if
    ' si no está visible saldra de la app o del activity donde esté
end if
    



End Sub


Saludos
 

Guillermo Sanzeri

Member
Licensed User
Longtime User
Muchas gracias por sus respuestas. Me ha servido de mucho.
BgSoft, si la verdad es que no es muy agradable pero no se me ocurre otra cosa.
Igual voy a probar ambas.

Gracias.
 
Top