![]() |
checkBox ayuda
Hola amigos estoy haciendo un formulario donde estoy utilizando 6 checkbox y tengo uno donde tiene la opcio de Todo y quiero si seleccionan Todo que se seleccionen los demas checkbox como puedo hacer:confused: esto gracias de antemano :eek::)
|
Prueba lo siguiente y nos cuentas como te va ;):
Código:
|
Cita:
|
Cita:
Código:
Integer i; |
Perdonar un inciso. Puede ocurrir un error si un componente Components[i] no es del tipo TCheckBox siendo, entonces, dynamic_cast<TCheckBox*>(Components[i]) un puntero nulo. Si ocurre el resto del código no puede funcionar. Esto puede suceder si en el formulario hay mas controles en la lista de componentes que no sean TCheckBox.
Yo para evitar el error, y hacer el código mas seguro, compruebo la no nulidad del puntero: Código:
for (int i = 0; i < this->ComponentCount; i++) { |
Cita:
Cierto, de hecho muy interesante, yo no tenia idea que se podían declarar punteros de esa forma en C++ Builder... por otro lado... quizá también sea interesante la siguiente solución que simplemente reemplaza dynamic_cast por el reinterpret_cast, haciendo uso de los distinto tipos de cast que tiene C++ Builder: Código:
|
Pues este tipo de conversión resulta peligroso. Se trata de una variante de conversión o cast por fuerza bruta, sin tener en cuanta si lo que convertimos es o no factible. Sería algo parecido a la conversión: *(Tipo*)(&Otrotipo)
Es decir puedo convertir un TEdit a un TComBobox por las buenas pero sólo sintácticamente, para que el compilador no proteste. La realidad es que obtendré un error en tiempo de ejecución en cuanto llame a una propiedad o función que no corresponda. dynamic_cast y static_cast hacen la conversión de punteros, pero si realmente el tipo es erróneo (convertir TComboBox a TEdit, por ejemplo) entonces devuelven un puntero nulo. Para usar reinterpret_cast o la clasica *(Tipo*)(&Otrotipo) debemos estar muy seguros de lo que hacemos, de lo contrario tendremos un grave error de punteros. En este caso, creo que lo más adecuado es: Código:
for (int i = 0; i < this->ComponentCount; i++) { Código:
for (int i = 0; i < this->ComponentCount; i++) { Saludos. |
mmm, entendido, muchas gracias por tu explicación escafandra :).
|
La franja horaria es GMT +2. Ahora son las 00:35:26. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi