Spanish Activar RadioButton desde otra página de un TabStrip

angel_

Well-Known Member
Licensed User
Longtime User
En la pantalla principal tengo un spinner que al seleccionar la opción "a2" no marca correctamente el RadioButton de otra página del TabStrip, internamente si que devuelve el valor correcto pero visualmente no está seleccionado.

¿Conocéis el motivo de este comportamiento?
 

Attachments

  • TabStripRadioButton.zip
    11.7 KB · Views: 206

JordiCP

Expert
Licensed User
Longtime User
A mi me funciona bien, aunque el orden de las lineas lía un poco (Radiobutton2 primero y RadioButton1 despues en algunos "Case"))

Prueba de añadir estas dos lineas al final del evento SPinner1_ItemClick
B4X:
RadioButton1.invalidate
RadioButton2.invalidate
 

angel_

Well-Known Member
Licensed User
Longtime User
Gracias Jordi, pero no funciona.

En el emulador sí que funciona el código inicial pero en el móvil la primera vez que se ejecuta falla.
 

JordiCP

Expert
Licensed User
Longtime User
Qué raro...

Cuando dices que no funciona, ¿qué es lo que aparece?
 

angel_

Well-Known Member
Licensed User
Longtime User
Lo que sucede es que el control está activado pero aparece seleccionado el otro, como se aprecia en la imagen.
 

Attachments

  • Screenshot_20170408-222552.png
    Screenshot_20170408-222552.png
    44.3 KB · Views: 264

angel_

Well-Known Member
Licensed User
Longtime User
Lo he solucionado asignando a cada control la propiedad "Bring To Front" desde el designer.
 

JordiCP

Expert
Licensed User
Longtime User
Me alegro!:)

De todas maneras es muy curioso que se comporte de manera diferente según la versión de dispositivo/android. Parece como si al hacer el BringToFront lo obligas a actualizarse... pero bueno, una vez encontrado el "truco", ya está y a otra cosa!!
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Angel:

Todos los RadioButton que esten incrustado (Parent) en un mismo Panel aunque los llames diferentes y aunque el evento sea diferente, cuando actives uno (Checked = True) el resto cae (Checked = False) , no son CheckBox que su comportamiento son independientes. Asi que cuando quieras cambiar un valor, cambia el que te interese (Checked = True) y del resto no hagas nada, que el propio sistema hará el cambio.

Por otro lado si quieres controlarlos facilmente pon el mismo nombre de evento a todos (del mismo grupo) y en el evento haces el tratamiento de todos.
Una cosa importante, cuando por código cambias un valor de un RadioButton, entra en el evento, asi que si tienes una fase de inicialización y luego otra de trabajo, pon una variable que te controle esos cambios.

Saludos
 

angel_

Well-Known Member
Licensed User
Longtime User
Gracias, ese comportamiento era el que esperaba pero debido al comportamiento "errático" que he observado (en otro móvil funciona correctamente) forzaba False para el otro RadioButton. Al final, cambiar la propiedad en el designer también me ha fallado en ocasiones, he optado por hacerlo por código cada vez que lo activo:

B4X:
RadioButton2.BringToFront
RadioButton2.Checked = True

Aparentemente funciona bien.
 
Last edited:

chuy-mjr

Member
Hola Angel:

Todos los RadioButton que esten incrustado (Parent) en un mismo Panel aunque los llames diferentes y aunque el evento sea diferente, cuando actives uno (Checked = True) el resto cae (Checked = False) , no son CheckBox que su comportamiento son independientes. Asi que cuando quieras cambiar un valor, cambia el que te interese (Checked = True) y del resto no hagas nada, que el propio sistema hará el cambio.

Por otro lado si quieres controlarlos facilmente pon el mismo nombre de evento a todos (del mismo grupo) y en el evento haces el tratamiento de todos.
Una cosa importante, cuando por código cambias un valor de un RadioButton, entra en el evento, asi que si tienes una fase de inicialización y luego otra de trabajo, pon una variable que te controle esos cambios.

Saludos

Uff me acabas de sacar de un lio, debía modificar y simplificar un proceso y tenía en mente como hacerlo, más sin embargo llevaba bastantes pasos, y de casualidad miré este post y boom, con radiobuttom. checked = true en tan solo una linea se hizo todo lo que pensaba hacer, gracias!
 
Top