FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Concatenar CheckBox
Que tal mi pregunta es la siguiente:
Tengo una forma en la cual tengo mas de 100 "CheckBox", con cada uno de ellos realizo practicamente los mismos procedimientos, no quiero que me quede un codigo enorme con practicamente lo mismo por lo tanto decidi meterla condicion " if " del CheckBox a un ciclo "for", pretendo que el ciclo cambie el numero de el "CheckBoxn.Checked" pero tengo problemas para lograrlo. Ejemplo: ------------------------------------------ //Asi trabaja bien if CheckBox1.Checked then begin //codigo de trabajo end ------------------------------------------ //Esto es lo que pretendo for b:= 1 to 100 do begin if {Componente CheckBox concatenado con el numero del ciclo for} then begin //codigo de trabajo end ------------------------------------------- Lo intente de varias formas desde meter "CheckBox" a un string y de ahi concatenarlo, pero pues uno es booleano y el otro string, utilice la funcion "strtobool()" pero no me funciono o no la supe inplementar Espero puedan ayudarme y de antemano agradesco su ayuda. |
#2
|
||||
|
||||
Saludote
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#3
|
||||
|
||||
Una observación:
El método FindComponent lo que hace es recorrer toda la lista de componentes del formulario hasta encontrar uno con el nombre indicado. En un ciclo como el descrito se estaría haciendo este recorrido 100 veces, una por cada iteración. // Saludos |
#4
|
|||
|
|||
Gracias por tu respuesta Lepe pero me esta marcando incompatibilidad
[Error] Unit1.pas(35): E2010 Incompatible types: 'TCheckBox' and 'TComponent' en la linea: check := Findcomponent('Checkbox'+inttostr(i)); //Este es el codigo procedure TForm1.FormCreate(Sender: TObject); var check:TcheckBox; var i:integer; begin for i:=0 to 100 do begin check := Findcomponent('Checkbox'+inttostr(i)); if check <> nil then begin // codigo trabajo end; end; end; Tendras alguna sugerencia gracias. |
#5
|
|||
|
|||
Trata con esto:
Saludos... |
#6
|
||||
|
||||
Una pequeña modificación:
En donde dice Check := Components[i] as TCheckBox; sería mejor poner Check := TCheckBox(Components[i]); El operador as implícitamente hace uso del operador is lo cual es innecesario porque ya se verificó antes. Y una observación (a ver si repitiendo causa algún efecto): este código de maeyanes es mucho más recomendable que el uso de FindComponent ya que se hace el recorrido de los componentes del formulario una sólo vez y no multiplicado por 100. // Saludos |
#7
|
||||
|
||||
Gracias Roman, no sé en que estaba pensando o:
Solo un detalle.... Estas en el OnCreate del Form, en este evento puede que los checkboxes no se hayan construido Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
|
|