FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Asignación dinámica de propiedades
Hola a todos, en este caso mi pregunta es la siguiente:
Tengo un form con varios componentes, botones, edits, etc. Por otro lado tengo una tabla donde se listan las propiedades de cada uno: color, tamaño, posición, etc. y los valores que estas deberían tomar, es decir, la tabla tiene la siguiente forma (tipo_componente, nombre_propiedad, valor_propiedad), por ejemplo (TLabel, color, clred). Mi pregunta es la siguiente, cuando manejo un componente y le quiero cambiar el valor a una propiedad direntamente hago lo siguiente: nombre_componente.nombre_propiedad:= nuevo_valor, pero ahora lo que necesito es sacar nombre_componente y valor de la tabla, es decir, poder escribir: nombre_componente.(nombre de la propiedad sacado de la tabla):= valor , en el caso de valor solo tengo que asignar el campo, lo que no se como se hace es la referencia a la propiedad. desde ya agradezco su ayuda, como siempre. |
#2
|
||||
|
||||
Creo que para eso puedes utilizar RTTI.
Te acnsejo que busques entre los fuentes de Delphi la unit llamada TypInfo.pas y le eches un vistazo (normalmente en el directorio ...\sources\rtl\common de Delphi) Verás que puedes encontrar procedimientos interesantes. Yo utilizo el siguiente:
Para usarlo puedes utilizar:
__________________
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
|
|||
|
|||
Falta poquito
Probe el código y funciona perfectamente para componentes pero lo necesito para objetos creados de clases hechas por mi.
Ejemplo: Teniendo las siguientes clases TPaciente = Class Nombre : String; end; TMate = Class TieneBombilla : boolean; end; Necesito algo asi: function AsignarPropiedad(pObjeto : TObject; pPropiedad: String; pValor:TObject); begin pObjeto.pPropiedad := pValor; //eso como se hace???? end; y correrlo de la siguiente forma: begin Mate := TMate.Create; //para mate AsignarPropiedad(Mate, 'TieneBombilla', 0); Pacietne := TPaciente.Create; AsignarPropiedad(Paciente, 'Nombre', 'Pablito'); end; Muchas gracias y los felicito por la calidad del soporte y la calidad de las respuestas. Saludos! |
#4
|
||||
|
||||
Hola.
¿Notas alguna diferencia entre el código escrito por vos y el escrito por Neftali? Esto se debe al uso de etiquetas, [code], [delphi], [sql], disponibles acá en el club. Te invito a leer sobre estas etiquetas aqui, puesto que su uso es obligatorio para publicar trozos de código. Hasta luego. Te invito a usarlas. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|