![]() |
Problema con propiedad TRadioButton.Checked en Runtime
Hola,
He creado un form con varios RadioButton. Este form posee varios constructores y según el constructor con el que se cree deben activarse unos u otros RadioButtons. El problema es que cuando hago en el constructor RadiButton.checked := true; me salta una excepción que me dice que no puede establecer el foco en un elemento que no es visible. ¿Alguna idea de como lo podría solucionar? Gracias |
Hola, puede ser por varias razones, al llamar o crear el form puede que le estes dando foco a algo que no existe o no está visible ó le estas dando foco a un compenente que no acepta el foco, revisa la llamada al form.
Saludos. |
me imagino que creas el radiobutton al crear la forma por lo tanto te va a mandar ese error, porque no revisas primero que la forma este visible y si esta, actualizas el checked
|
No sé bien a qué se deba el problema (hice una prueba rápida y funcionó bien), quizá tienes algún evento asociado al evento OnClick de los RadioButtons que provoca el cambio de foco de algún control -cosa que no se puede hacer hasta que el formulario no esté visible.
Por otro lado, en mi opinión, el constructor debe reservarse para creación de controles y no para ajustes visuales, como lo es el marcar un radio button como seleccionado. Viene mejor el evento OnShow del formulario, o bien, redefinir el método DoShow. Tampoco veo muy conveniente usar distintos constructores. Me parece más prolijo usar el constructor de siempre y pasarle información vía propiedades. Algo como:
Entonces, en la redefinición de DoShow actúas en consecuencia:
// Saludos |
Gracias por vuestras respuestas,
Roman ha dado con el problema y con la solucion (como siempre :D)... Yo usaba el evento onClick de los RadioButton y establecía el foco en otro componente (supongo que de ahí el error)... Ahora en vez de hacer el checked en el constructor lo hago en el evento onShow del form y funciona bien y revisaré bien como pasar parámetros sin usar constructores porque si Roman lo dice seguro que es bueno hacerlo así. Muchas gracias a todos!!! |
| La franja horaria es GMT +2. Ahora son las 19:18:09. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi