Delphi - Recorrer un contenedor con Components

 
Vista:

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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Recorrer un contenedor con Components

Publicado por Delfino (1216 intervenciones) el 13/10/2005 12:31:11
los components son del form mientras los controls son de su contenedor (panel, groupbox etc.), aunque pongas por ejemplo una TQuery sobre un panel esta no pertenece al panel sino al form, mientras q un Edit del mismo modo pertenece al panel q pertenece al form, significa q el form es el abuelo del Edit :). espero esta claro..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Recorrer un contenedor con Components

Publicado por Alfonso Sánchez (7 intervenciones) el 13/10/2005 19:42:05
Hola Delfino, muchas gracias por tu aclaración.

De todos modos, no entiendo entonces por qué estos contenedores (aquellos que no son TForm) tienen su ".Components" si, como bien dices, a los controles pertenecientes a estos contenedores se accede mediante ".Controls" ¿Para qué sirve entonces el .Components del TGroupBox (p.ej)?

He estado mirando la gran ayuda que Delphi 6 incorpora (acerca del TComponent) pero no consigo aclararme del todo...

Un saludo y gracias de nuevo :-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar