Ver Mensaje Individual
  #2  
Antiguo 25-01-2012
LoPiTaL LoPiTaL is offline
Miembro
 
Registrado: abr 2009
Posts: 168
Reputación: 15
LoPiTaL Va por buen camino
Si estás trabajando con Delphi 2010 o superior, puedes hacerlo fácilmente usando la unit RTTI, mediante el objeto TRttiContext. Busca en google más info sobre éste y encontrarás mucha información sobre él, cómo leer / escribir propiedades por nombre, etc...

Por ejemplo:

Código Delphi [-]
procedure SetProperty(propname: string; value: TValue; obj: TMyObject);
var
  context: TRTTIContext;
  rtti: TRTTIType;
  prop: TRTTIProperty;

begin
  context := TRTTIContext.Create;
  rtti := context.GetType(TMyObject);
  prop := rtti.GetProperty(propname);
  prop.SetValue(obj, value);
end;

Sólo deberás tener cuidado con el tipo de la propiedad. Si es string, deberás pasarle un string a value, si es int, deberás pasarle un int, etc...

Si estás trabajando con una versión anterior, la cosa se complica un poco, pero sigue siendo posible. Google te lanzará mucha información si buscas "RTTI".

En cuanto a encontrar componentes en un form, simplemente sería haciendo
Código Delphi [-]
for I:=0 to ComponentsCount - 1 do begin
  if Components[i].Name=TuNombreLeido then begin
    //Aquí iría la rutina para establecer el valor de la propiedad en cuestión.
    seteaPropiedad(nombrePropiedad, Components[i])
  end;
end;
Un saludo,
LoPiTaL
Responder Con Cita