FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
|||
|
|||
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 esto gracias de antemano
|
#2
|
||||
|
||||
Prueba lo siguiente y nos cuentas como te va :
Código:
Integer i; for (i = 0; i < this->ComponentCount; i++) { dynamic_cast<TCheckBox*>(Components[i])->Checked = True; }
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#3
|
|||
|
|||
Genial me funciono, gracias por tu pronta ayuda
|
#4
|
||||
|
||||
Que bien , me alegra... aunque mirandolo mejor, si en el futuro necesitas que al presionar dicho CheckBox también se inhabiliten los demás, podrías usarlo así:
Código:
Integer i; for (i = 0; i < this->ComponentCount; i++) { dynamic_cast<TCheckBox*>(Components[i])->Checked = CheckBox1.Checked; }
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#5
|
||||
|
||||
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++) { TCheckBox* Check = dynamic_cast<TCheckBox*>(Components[i]); if(Check) Check->Checked = CheckBox1.Checked; } Última edición por escafandra fecha: 12-06-2008 a las 20:50:15. |
#6
|
||||
|
||||
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:
Integer i; for (i = 0; i < this->ComponentCount; i++) { reinterpret_cast<TCheckBox*>(Components[i])->Checked = CheckBox6->Checked;
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#7
|
||||
|
||||
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++) { TCheckBox* Check = dynamic_cast<TCheckBox*>(Components[i]); if(Check) Check->Checked = CheckBox1.Checked; } Código:
for (int i = 0; i < this->ComponentCount; i++) { TCheckBox* Check = static_cast<TCheckBox*>(Components[i]); if(Check) Check->Checked = CheckBox1.Checked; } Saludos. |
#8
|
||||
|
||||
mmm, entendido, muchas gracias por tu explicación escafandra .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
checkbox | Lupita | Varios | 6 | 07-04-2008 15:12:53 |
ayuda error mysql y checkbox | solidus128 | Conexión con bases de datos | 5 | 24-08-2007 23:25:00 |
ayuda con el checkbox | Debian | Conexión con bases de datos | 4 | 11-04-2005 18:59:04 |
ayuda con el checkbox | Debian | Conexión con bases de datos | 1 | 11-04-2005 09:45:24 |
checkbox | superhopi | OOP | 3 | 12-05-2003 10:32:46 |
|