FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Recorrido de componentes
Hola. Utilizo Delphi 5. Estoy realizando un proceso que debe recorrer todos los objetos incluidos en el form para darles valor a unas propiedades. El problema lo tengo en recorrer todos los objetos. Incialmente lo plantee de la forma siguiente:
Código:
with Form1 do begin for i:=0 to ControlCount-1 do Procesar(Controls[i]); end; Bueno, lo planteo entonces como una función recursiva y ya está, pero el problema es que no puedo saber si un componente tiene a su vez mas hijos, ya que el proceso lo defino así Código:
procedure analizar(Compo:TControl); var i:integer; begin if Compo.ControlCount>0 then begin for i:=0 to Compo.ControlCount-1 do Analizar(Compo.Controls[i]); end else Procesar(Compo); end; with Compo as TWinControl do .... No sé cual sería la mejor opción. ¿Alguien se le ocurre la forma correcta? |
#2
|
||||
|
||||
Utiliza:
ComponenCount y Components[i], en lugar de ControlCount y Controls[i]
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#3
|
|||
|
|||
Hola. Gracias por la respuesta. Efectivamente esa era otra posibilidad, usar Components, el problema está en los Frames, que no entra dentro, es decir, si el Frame tiene a su vez objetos dentro, no aparecen en la lista de Components del form, y hay que recorrerla para los del frame.
Salu2. |
#4
|
|||
|
|||
En Todo caso tendrías que recorrer cada Componente en Forma recursiva. Para simplificarlo podría ser algo así como:
if Components[i].ComponentCount > 0 then Procesar(Components[i]); |
|
|
|