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 13-09-2006
Vinicio Vinicio is offline
Miembro
 
Registrado: jul 2006
Posts: 16
Poder: 0
Vinicio Va por buen camino
Ayuda con componentes en form

Hola amigos necesito saber en un momento dado en tiempo de ejecucion cuales componentes tiene un form de delphi en ese momento, es decir
Edit1 Edit2 Label1 Label2, osea la lista de todos los componentes pero en tiempo de ejecucion...alguno tiene alguna idea? :S
Responder Con Cita
  #2  
Antiguo 13-09-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cada formulario tiene la propiedad Components que es una lista de los componentes que contiene.
Responder Con Cita
  #3  
Antiguo 13-09-2006
Vinicio Vinicio is offline
Miembro
 
Registrado: jul 2006
Posts: 16
Poder: 0
Vinicio Va por buen camino
jeje gracias amigo, pero por ejemplo si kiero desplegar la lista de componentes en un edit como le hago?
Intento hacer esto pero la verdad es k no se ni k onda..:S
Edit1.Text:= Form1.Components[0];

Me pide un integer, pero en realidad no se para k o por ke, me podrias explikar :S
Responder Con Cita
  #4  
Antiguo 13-09-2006
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
Text es un string así que necesitas asignarle, no la componente sino el nombre de la componente:

Código Delphi [-]
Edit1.Text:= Components[0].Name;

// Saludos

Última edición por roman fecha: 13-09-2006 a las 21:24:18.
Responder Con Cita
  #5  
Antiguo 13-09-2006
Vinicio Vinicio is offline
Miembro
 
Registrado: jul 2006
Posts: 16
Poder: 0
Vinicio Va por buen camino
Muchisimas Gracias a los 2, eh solucionado lo k keria
Responder Con Cita
  #6  
Antiguo 13-09-2006
Werther Werther is offline
Registrado
 
Registrado: sep 2006
Posts: 2
Poder: 0
Werther Va por buen camino
Mmmm, andaba con un problema similar, y la referencia me ayudó mucho para resolver algunas partes pero me viene la duda de como obtener ahora algunas propiedades del componente lo localizado, por decir

for i:=0 to (form1.ComponentCount-1) do
begin
edit1.Text := form1.Components[i].Name;
edit2.Text:=form1.Components[i].ClassName;
end;

uso ese Ciclo para obtener el nombre y clase del componente, pero lo que realmente necesito es saber sus valores de Top/Left/Visible, si pudieran auxiliarme...
Responder Con Cita
  #7  
Antiguo 13-09-2006
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
Lo que pasa es que TComponent es una clase muy general y algunas propiedades sólo existen en clases descendientes. Tendrías que hacer un moldeo a una clase más afín, por ejemplo:

Código Delphi [-]
for i:=0 to (ComponentCount-1) do
begin
  if Components[i] is TControl then
    with TControl(Components[i]) do
    begin
      {
        Aquí ya puedes acceder a las propiedades específicas de TControl
        y sus descendientes, entre las que se cuentan Top, Left, Visible, etc.
      }
    end;
end;

Por cierto, ¿por qué pones form1 en el código anterior? No es una buena práctica que el código de una clase tenga referencias a una variable particular de esa clase.

// Saludos
Responder Con Cita
  #8  
Antiguo 13-09-2006
Werther Werther is offline
Registrado
 
Registrado: sep 2006
Posts: 2
Poder: 0
Werther Va por buen camino
Es que en mi código debo hacer referencia a componentes ubicados en otras forms, en específico de un form de QR para poder volver customizable la ubicación de los componentes en el reporte, y ando buscando de volver dinámica mi función, por eso el form1. olvidé quitarlo, veré con la información que me brindaste, gracias
Responder Con Cita
  #9  
Antiguo 13-09-2006
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
¡Ah! Ok. Di por sentado que el código estaba dentro del mismo formulario. Entonces a tu función puedes pasarle como parámetro el formulario deseado:

Código Delphi [-]
procedure HazAlgoConLasComponetesDeUnFormulario(F: TForm);
begin
  for i:=0 to (F.ComponentCount-1) do
  begin
    if F.Components[i] is TControl then
      with TControl(F.Components[i]) do
      begin
        {
          Aquí ya puedes acceder a las propiedades específicas de TControl
          y sus descendientes, entre las que se cuentan Top, Left, Visible, etc.
        }
      end;
  end;
end;

// 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
Deshabilitar TODOS los componentes de un Form TrUnkS OOP 3 12-04-2006 21:28:28
como ajustar componentes al form? crievep OOP 3 12-04-2006 20:25:43
componentes sin form coleleon OOP 1 30-11-2005 13:10:56
Scalar Componentes al redimensionar Form jsc Varios 5 26-07-2004 16:50:16
Zoom a los componentes que se encuentran dentro de una form Majo Gráficos 1 16-03-2004 21:00:27


La franja horaria es GMT +2. Ahora son las 19:15:53.


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