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 11-06-2008
gallipi gallipi is offline
Miembro
 
Registrado: abr 2007
Posts: 29
Poder: 0
gallipi Va por buen camino
Recorrer propiedades de un componente

Hola amigos,

Quiero recorrer todos los componentes que hay en un formulario, y por cada uno de los componentes sus propiedades.

for i:= 0 to ComponentsCount -1 do begin
components[i]..........................
end;

Recorrer componentes no es complicado, pero ¿ y las propiedades?
¿Existe un objeto propertys, o algo parecido?
¿alguna idea?


Gracias
Responder Con Cita
  #2  
Antiguo 11-06-2008
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,

Creo que deberías informarte sobre la unidad la unidad "TypInfo".
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 11-06-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola gallipi, nose mucho sobre esto, pero te pongo un ejemplo sobre lo que explica el amigo Coso en otro hilo

Lo que hace es colocar todas las propiedades del ListBox1 en el mismo ListBox1.

Código Delphi [-]
Uses
TypInfo;
......
......
procedure TForm1.GetPropertyList(Obj:TObject;Filter: TTypeKinds);
var
 PropList : PPropList;
 count,i  : Integer;
begin
  ListBox1.Clear;
  Count := GetPropList(Obj.ClassInfo, Filter, nil);
  GetMem(PropList, Count * SizeOf(PPropInfo));
  GetPropList(Obj.ClassInfo, Filter, PropList);
  for i:=0 to Count -1 do
    ListBox1.Items.Add(Proplist[i].Name);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 GetPropertyList(ListBox1, [tkInteger, tkChar, tkEnumeration, tkFloat,
    tkString, tkSet, tkClass, tkMethod, tkWChar, tkLString, tkWString,
    tkVariant, tkArray, tkRecord, tkInterface, tkInt64, tkDynArray]);
end;

el hilo es este http://www.clubdelphi.com/foros/show...=findcomponent , ahi puedes encontrar mas cosas que te pueden servir.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 11-06-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Si con o de antes no te acalras, tienes un par de Tips en mi página web (sección de tips), que explican cómo acceder a las propiedades utilizando RTTI y como modificarlas (si te hace falta) también utilizando RTTI. El código está documentado y comentado.

Eso sí, te en cuenta que sólo podrás acceder a las propiedaes que estén definidas como published.
__________________
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.
Responder Con Cita
  #5  
Antiguo 11-06-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
¡Hola!

Anexé en la parte inferior de este mensaje una copia de mi biblioteca personal de funciones "GH Freebrary" (llamada "Interfaz GH" anteriormente). Es para Delphi 7, pero incluye el código fuente.

En la unidad GHFObjects.pas encontrarás una función llamada ghEnumerarPropiedades, que hace tiempo creé para el mismo propósito. Un buen ejemplo de cómo puedes "enumerar" (recorrer) las propiedades de un objeto, utilizando esa función, lo tiene otra de las rutinas de la misma unidad, llamada ghCopyProps. Se utiliza una función de retrollamada (call back) que debes crear para recibir a cada una de sus propiedades y hacer con ellas lo que necesites.

Siéntanse todos con la libertad de descargarla, es literalmente la obra (aún inconclusa) de mi vida. Y me sentiré bien por recibir sus opiniones al respecto para ayudar a mejorarla. La licencia es sin costo y así pienso mantenerla. Casimiro me está ayudando a evaluar varios aspectos de esta biblioteca.

Conviene aclarar que me encuentro cambiando todos los nombres de las funciones al idioma inglés y que el tipo TghFuncionEnumeracion cambiará significativamente en las siguientes versiones. Para quienes, después de verla, se planteen su uso por tiempo prolongado. Documentación no tiene todavía, es algo que pienso comenzar pronto, pero estoy abierto a dar cualquier orientación que se requiera.

Espero no se vea esto como "spam", es algo que deseo compartir con la comunidad desde hace mucho tiempo. Esperaba a que estuviese 100% afinada y documentada, pero al paso que voy envejecería primero.

Saludos.

Al González.

Última edición por Al González fecha: 25-12-2012 a las 05:39:19.
Responder Con Cita
  #6  
Antiguo 12-06-2008
gallipi gallipi is offline
Miembro
 
Registrado: abr 2007
Posts: 29
Poder: 0
gallipi Va por buen camino
Gracias a todos por las respuestas!!!

Que alegria da cuando tienes tantos ejemplos donde elegir!!


Gracias
Responder Con Cita
  #7  
Antiguo 12-06-2008
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 19
xEsk Va por buen camino
Cita:
Empezado por Al González Ver Mensaje
¡Hola!

Anexé en la parte inferior de este mensaje una copia de mi biblioteca personal de funciones "GH Freebrary" (llamada "Interfaz GH" anteriormente). Es para Delphi 7, pero incluye el código fuente.

En la unidad GHFObjects.pas encontrarás una función llamada ghEnumerarPropiedades, que hace tiempo creé para el mismo propósito. Un buen ejemplo de cómo puedes "enumerar" (recorrer) las propiedades de un objeto, utilizando esa función, lo tiene otra de las rutinas de la misma unidad, llamada ghCopyProps. Se utiliza una función de retrollamada (call back) que debes crear para recibir a cada una de sus propiedades y hacer con ellas lo que necesites.

Siéntanse todos con la libertad de descargarla, es literalmente la obra (aún inconclusa) de mi vida. Y me sentiré bien por recibir sus opiniones al respecto para ayudar a mejorarla. La licencia es sin costo y así pienso mantenerla. Casimiro me está ayudando a evaluar varios aspectos de esta biblioteca.

Conviene aclarar que me encuentro cambiando todos los nombres de las funciones al idioma inglés y que el tipo TghFuncionEnumeracion cambiará significativamente en las siguientes versiones. Para quienes, después de verla, se planteen su uso por tiempo prolongado. Documentación no tiene todavía, es algo que pienso comenzar pronto, pero estoy abierto a dar cualquier orientación que se requiera.

Espero no se vea esto como "spam", es algo que deseo compartir con la comunidad desde hace mucho tiempo. Esperaba a que estuviese 100% afinada y documentada, pero al paso que voy envejecería primero.

Saludos.

Al González.
Me la he bajado para echarle una ojeada! Parece interesante :P

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
speedbutton propiedades componente anubis Varios 5 26-08-2007 00:12:35
Propiedades Componente Punzo OOP 2 20-12-2006 20:50:58
Orden de las Propiedades de un componente VictorPenyalver OOP 4 02-12-2006 11:31:02
Propiedades de un Componente diegofhernando OOP 3 13-09-2004 16:38:22
Propiedades en Componente ingacg Conexión con bases de datos 3 09-05-2003 22:52:56


La franja horaria es GMT +2. Ahora son las 16:57:13.


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