Recorrer un contenedor con Components
Publicado por Alfonso Sánchez (7 intervenciones) el 13/10/2005 10:05:39
Hola, buenos días a todos/as
Estoy dando mis primeros pasos con Delphi (versión 6) y he estado trasteando un poco con los métodos Components y Controls. Me he creado un contenedor TGroupBox (groupSenyales) y, dentro, un conjunto de etiquetas TCheckBox (chk1..chk12).
El caso que quiero recorrerlas a través de un bucle for utilizando groupSenyales.Components[indice] pero no me funciona. He probado a hacerlo utilizando el método Controls y, con éste, sí que me va. El código es el siguiente, dentro del evento Click de un botón:
procedure Tfrm01Ej07.cmdEstadoClick(Sender: TObject);
Var
i : Integer;
begin
{ limpieza de la lista en caso de contener elementos }
If lstEstados.Items.Count > 0 Then
lstEstados.Clear;
{ recorrido de componentes }
With groupSenyales Do
For i := 0 To ComponentCount - 1 Do
{ procesar solo las casillas }
If ((Components [i] Is TCheckBox) And ((Components [i] As TCheckBox).Checked)) Then
lstEstados.Items.Add((Components [i] As TCheckBox).Caption + ' -> activado')
Else
If ((Components [i] Is TCheckBox) And (Not (Components [i] As TCheckBox).Checked)) Then
lstEstados.Items.Add((Components [i] As TCheckBox).Caption + ' -> desactivado')
end;
Éste, repito, no funciona tal y como ésta. No da errores de compilación ni ejecución pero al lanzar el evento no hace lo que se le indica (no hace "nada"). Sin embaro, cambiando el "ComponentCount" por un "ControlCount" y los diversos "Components" que hay por "Controls" sí que funciona.
¿Al guien me puede dar alguna explicación o referencia de consulta al respecto? Gracias de antemano y un saludo
Estoy dando mis primeros pasos con Delphi (versión 6) y he estado trasteando un poco con los métodos Components y Controls. Me he creado un contenedor TGroupBox (groupSenyales) y, dentro, un conjunto de etiquetas TCheckBox (chk1..chk12).
El caso que quiero recorrerlas a través de un bucle for utilizando groupSenyales.Components[indice] pero no me funciona. He probado a hacerlo utilizando el método Controls y, con éste, sí que me va. El código es el siguiente, dentro del evento Click de un botón:
procedure Tfrm01Ej07.cmdEstadoClick(Sender: TObject);
Var
i : Integer;
begin
{ limpieza de la lista en caso de contener elementos }
If lstEstados.Items.Count > 0 Then
lstEstados.Clear;
{ recorrido de componentes }
With groupSenyales Do
For i := 0 To ComponentCount - 1 Do
{ procesar solo las casillas }
If ((Components [i] Is TCheckBox) And ((Components [i] As TCheckBox).Checked)) Then
lstEstados.Items.Add((Components [i] As TCheckBox).Caption + ' -> activado')
Else
If ((Components [i] Is TCheckBox) And (Not (Components [i] As TCheckBox).Checked)) Then
lstEstados.Items.Add((Components [i] As TCheckBox).Caption + ' -> desactivado')
end;
Éste, repito, no funciona tal y como ésta. No da errores de compilación ni ejecución pero al lanzar el evento no hace lo que se le indica (no hace "nada"). Sin embaro, cambiando el "ComponentCount" por un "ControlCount" y los diversos "Components" que hay por "Controls" sí que funciona.
¿Al guien me puede dar alguna explicación o referencia de consulta al respecto? Gracias de antemano y un saludo
Valora esta pregunta


0