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 06-08-2020
elrayo76 elrayo76 is offline
Miembro
 
Registrado: ene 2004
Ubicación: En la tierra, por eso mis archivos en la tierra y no en la nuebe...
Posts: 291
Poder: 21
elrayo76 Va por buen camino
Acceder a una sub-propiedad mediante RTTI

Buenas gente,


Estoy trabajando con RTTI para acceder a las propiedades de los componentes y luego setear o devolver su valor. Todo funcionaba bien hasta que me encontré con algo que no le estoy encontrando la vuelta.


Tengo un componente que tiene algo como esto: Properties.ReadOnly como propiedad que se puede ver desde el inspector de objetos. Si se presiona sobre el signo mas se despliegan las propiedades y una de ellas es la que indico.


El tema es que de la forma tradicional no me devuelve ninguna de las propiedades que están dentro de Properties. Comento que he provado con GetPropertyPath pero no me funciona.


¿Alguno sabe como obtener esas propiedades?.


Aclaro que estoy trabajando con Delphi XE8.


Saludos
El Rayo
__________________
Si tienes una función o procedimiento con diez parámetros, probablemente hayas olvidado uno
Responder Con Cita
  #2  
Antiguo 06-08-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.059
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Si al menos dijeras qué componente es.
Responder Con Cita
  #3  
Antiguo 06-08-2020
elrayo76 elrayo76 is offline
Miembro
 
Registrado: ene 2004
Ubicación: En la tierra, por eso mis archivos en la tierra y no en la nuebe...
Posts: 291
Poder: 21
elrayo76 Va por buen camino
Buenas,


Son varios los componentes y son de las DevExpress (TcxCheckBox y TcxTextEdit).


Lo que hago es recorrer todos los componentes del formulario y mediante RTTI buscar la propiedad, si la tiene se la seteo. El tema es que si la propiedad está dentro de una que se despliega con el signo más y estás son las que no devuelve nada, las que están mas afuera como "Transparent" (TcxCheckBox) si funciona.



Saludos,
El Rayo
__________________
Si tienes una función o procedimiento con diez parámetros, probablemente hayas olvidado uno
Responder Con Cita
  #4  
Antiguo 07-08-2020
manelb manelb is offline
Miembro
 
Registrado: mar 2017
Posts: 281
Poder: 8
manelb Va por buen camino
Buenos días a todos....

Pues podrías probar con algo como esto

Código Delphi [-]
var
  c: Tcomponent;
begin
  c:= Button1;

  SetPropValue(c, 'Caption', 'Functiona');
  SetPropValue(c, 'Tag', 25);
  SetPropValue(c, 'Anchors', 'akBottom,akRight');


  SetPropValue( GetObjectProp(c,  'Margins'), 'Bottom', 50);
  SetPropValue( GetObjectProp(c,  'Font'), 'Size', 20);

end;

Debes tener en el uses System.TypInfo

Saludos.
Responder Con Cita
  #5  
Antiguo 07-08-2020
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.297
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
Creo que primero debes acceder a la propiedad Properties como si fuera un Objeto/Clase.
Fíjate que el tipo:

Código Delphi [-]
  TTypeKind = System.TTypeKind;

Posee un valor:
Código Delphi [-]
  tkClass       = System.TTypeKind.tkClass;

En este caso properties de las DevExpress (por ejemplo para un TcxTextedit) es de tipo TcxTextEditProperties. Una vez accedeas como clase, vuelves a acceder a las propiedades de esa clase como lo haces normalmente.

NOTA: Creo que es similar a lo que ha comentado manel.
__________________
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
  #6  
Antiguo 07-08-2020
elrayo76 elrayo76 is offline
Miembro
 
Registrado: ene 2004
Ubicación: En la tierra, por eso mis archivos en la tierra y no en la nuebe...
Posts: 291
Poder: 21
elrayo76 Va por buen camino
Gracias a los dos por responder.



Veré los dos casos a ver con cual me quedo que me sirva mejor y luego les contaré como me fue.


Saludos
El Rayo
__________________
Si tienes una función o procedimiento con diez parámetros, probablemente hayas olvidado uno
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
acceder mediante un webbroser a power bi dani79 Varios 2 15-09-2017 19:48:01
Acceder a una propiedad elrayo76 Varios 11 12-09-2013 09:53:06
acceder a objeto mediante una variable joanajj Varios 37 12-07-2007 18:02:06
Acceder al objeto asociado a una prop. (RTTI) Neftali [Germán.Estévez] Trucos 0 30-05-2007 13:39:22
Saber si un comp. tiene una propiedad (RTTI) Neftali [Germán.Estévez] Trucos 0 30-05-2007 13:32:45


La franja horaria es GMT +2. Ahora son las 22:15:03.


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