Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-01-2009
Avatar de vpepen
vpepen vpepen is offline
Miembro
 
Registrado: nov 2003
Ubicación: Higüey
Posts: 104
Poder: 21
vpepen Va por buen camino
Recorrido por objetos en forma de array.

Buenos días a tod@s.

Primeramente les doy las gracias por toda la ayuda que he recibido desde que ingresé a este valioso club.

Tengo la siguiente situación:

Me gustaría saber si existe la forma de hacer un recorrido por los objetos colocados en un form. Por ejemplo, tengo en un form 20 label y con una estructura repetitiva quiero asignar un determinado valor a cada uno de los label sin tener que referirme a cada uno de ellos individualmente.

Las gracias anticipadas.

Víctor
Responder Con Cita
  #2  
Antiguo 22-01-2009
jorge82 jorge82 is offline
Baneado
 
Registrado: jun 2005
Ubicación: Mérida, Yucatán, México
Posts: 75
Poder: 19
jorge82 Va por buen camino
Hola, así puedes recorrer los componentes en un form:

Código Delphi [-]
var
  I: Integer;
begin
  for I := 0 to ComponentCount-1 do
  begin
    if Components[i] is TLabel then
    begin
      TLabel(Components[i]).Caption := 'Titulo' + IntToStr(I);
    end;
  end;
end;

Espero te sirva.
__________________
Un saludito.
Responder Con Cita
  #3  
Antiguo 22-01-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Sí que es posible. El formulario tiene una propiedad "Controls", que, es un Array con los controles (componentes visuales) que contiene. Y luego tiene también una propiedad "ControlsCount". Con estas dos propiedades ya puedes hacer ya lo que quieres. Algo así:

Código Delphi [-]
var
  i: integer;
begin
  for i := 0 to Form1.ControlsCount-1 do
  begin
    if Controls[i] is TEdit then
    begin
      TEdit(Controls[i]).Label := 'Hey!';
      {...}
    end;
  end;
end;

PD. El compañero jorge82 apunta a usar las propiedades "Components" y "ComponentsCount". Podría servir también, empero, teniendo en cuenta que "Components" y "Controls" no son exactamente iguales. Pero tendría ahora que revisar la ayuda... y eso que en estos foros se ha tratado ya sobre las diferencias entre ambas propiedades.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 22-01-2009
Avatar de vpepen
vpepen vpepen is offline
Miembro
 
Registrado: nov 2003
Ubicación: Higüey
Posts: 104
Poder: 21
vpepen Va por buen camino
Gracias Jorge y David por sus prontas respuestas.

La solución que plantea Jorge es muy similar a la de David, sólo que la única diferencia es que David utiliza Controls y Jorge Components, pero en definitiva no veo diferencia alguna, ya que con ambas pude resolver.

Gracias a Ambos...


Saludos.
Responder Con Cita
  #5  
Antiguo 22-01-2009
Avatar de vpepen
vpepen vpepen is offline
Miembro
 
Registrado: nov 2003
Ubicación: Higüey
Posts: 104
Poder: 21
vpepen Va por buen camino
Implementado el código que ustedes me facilitaron he encontrado que al ejecutar la instrucción dentro de una estructura repetitiva:

For i := 0 to ComponentCount-1 do begin
TLabel(Components[i]).Caption := 'Titulo'
end;

Le asigna el texto 'Titulo' a todos los componentes en el form y no exclusivamente a los Label.


Saludos.
Responder Con Cita
  #6  
Antiguo 22-01-2009
Avatar de vpepen
vpepen vpepen is offline
Miembro
 
Registrado: nov 2003
Ubicación: Higüey
Posts: 104
Poder: 21
vpepen Va por buen camino
Disculpen mi despiste, ya pude ver lo que sucede, olvidé la sentencia IF

Gracias
Responder Con Cita
  #7  
Antiguo 23-01-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Controls vs Components

Controls es la lista de controles visuales contenidos directamente en el objeto
Components es la lista de componentes cuyo dueño es el objeto

Normalmente, el dueño de los componentes que hay en un formulario es el formulario mismo, pero no todos los controles estarán contenidos directamente en el formulario, ya que podrían estar en un panel.

// Saludos
Responder Con Cita
  #8  
Antiguo 23-01-2009
Avatar de vpepen
vpepen vpepen is offline
Miembro
 
Registrado: nov 2003
Ubicación: Higüey
Posts: 104
Poder: 21
vpepen Va por buen camino
Cita:
Empezado por roman Ver Mensaje
Controls vs Components

Controls es la lista de controles visuales contenidos directamente en el objeto
Components es la lista de componentes cuyo dueño es el objeto

Normalmente, el dueño de los componentes que hay en un formulario es el formulario mismo, pero no todos los controles estarán contenidos directamente en el formulario, ya que podrían estar en un panel.

// Saludos
Gracias Roman por tu explicación.....

Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Array de objetos propios? gandalf_uy OOP 6 26-02-2008 04:19:48
Recorrido por componentes miguelml Varios 4 27-04-2006 12:18:46
recorrido bdas majosf Conexión con bases de datos 1 21-11-2005 23:19:24
Array de OBJETOS en Delphi 7 animal OOP 5 08-07-2005 11:33:21
Recorrido por los MDIChildren elcaracas C++ Builder 4 24-04-2005 09:27:33


La franja horaria es GMT +2. Ahora son las 19:34:22.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi