FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Modificar propiedad del un componente
Amigos, tengo el siguiente problema, necesito armar en tiempo de ejecucion, de acuerdo al componente que elija el usuario, el nombre del componente y concatenarle la propiedad que quiero modificar. Por ej, tendria que poder armar lo siguiente cuando hago click sobre un componente:
TControl(Sender).Top La propiedad que tendria que modificar del componente seleccionado la obtengo de un archivo ini. Lo que no encuentro la forma de resolver es si por ej, hice click sobre un Label y en el archivo ini lei que tengo que modificarle la propiedad Top y Left, es como armo lo siguiente TControl(Sender) + .Top donde 'Top' lo lei del archivo ini TControl(Sender) + .Left donde 'Left' lo lei del archivo ini Espero haber sido claro en la explicacion, desde ya muchas gracias. |
#2
|
|||
|
|||
Hola,
como ves, la funcion SetOrdProp sirve solo para establecer propiedades integer, existe tb las SetStrProp, SetMethodProp, etc... (y sus correspondientes GetStrProp, GetOrdProp,... todas indocumentadas :/ ) deberás encontrar el tipo de la propiedad a modificar antes de usar una u otra. Investigando he encontrado que se puede hacer de manera general, pero se usan punteros directos al objeto y parece bastante mas complicado. Te pongo tb una funcion para encontrar toda la lista de propiedades de un objeto. Desde esta funcion, seguro que puedes determinar el tipo de la propiedad que buscas
Venga, espero q te sirva PD : links a Free Pascal, http://www.freepascal.org/docs-html/...bjectprop.html Última edición por coso fecha: 12-05-2008 a las 14:42:30. |
#3
|
||||
|
||||
Caso deberías informar que para usar estas funciones hay que declarar la unit TypInfo en el uses.
Saludos. |
#4
|
|||
|
|||
cierto es xEsk
|
#5
|
|||
|
|||
Gracias a ambos, es lo que estaba necesitando!!!!!
|
#6
|
|||
|
|||
La info que me pasaron me vino de maravillas, pero tengo otro problema, cuando la propiedad que deseo modificar/leer es una subpropiedad de una propiedad no lo puedo hacer. Por ej si lo que quiero es modificar la propiedad 'size' de la propiedad 'font' de un tlabel, las funciones SetOrdProp, GetOrdProp no encuentran esa propiedad, o bien me estoy equivocando en como le paso el parametro. He probado con
SetStrProp(TControl(Sender), 'size', 10); y con SetStrProp(TControl(Sender), 'font.size', 10); y no me reconoce ese nombre de propiedad. Tambien estoy usando GetPropInfo y no la encuentra. GetPropInfo(TControl(Sender).ClassInfo,'size'); Alguna idea de como debo referenciarla??? |
#7
|
|||
|
|||
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Modificar propiedad Table de un ADOTable en tiempo de ejecución | Albano | Conexión con bases de datos | 8 | 05-03-2007 21:55:22 |
Modificar propiedad Delta de CDS | alucardo | Conexión con bases de datos | 0 | 04-10-2006 19:36:41 |
Alguna propiedad en algunos registros que no me los deje MODIFICAR? | Patricio | Conexión con bases de datos | 2 | 18-08-2005 15:39:19 |
Cambiar la propiedad a un componente | JefeNet | Varios | 6 | 23-11-2004 12:05:45 |
Apuntar una propiedad de un componente a otra de otro componente | Majo | Varios | 10 | 24-03-2004 19:46:39 |
|