Ver Mensaje Individual
  #2  
Antiguo 12-05-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Reputación: 0
coso Va por buen camino
Hola,
Código Delphi [-]
var
   ob : TObject;
begin
   ob := FindComponent(nombre_del_objeto);  // p.e. : nombre_del_objeto := 'ListBox1'
   if ob = nil then begin ShowMessage('No existe ese objeto'); exit; end;

   SetOrdProp(ob,propiedad_a_cambiar,valor_a_poner); // p.e. : propiedad_a_cambiar := 'Top'
end;

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

Código Delphi [-]
procedure GetPropertyList(Obj:TObject ;List: TStrings;Filter: TTypeKinds);
var PropListPropList;
    count,i : Integer;
begin
  List.Clear;
  Count := GetPropList(Obj.ClassInfo, Filter, nil);
  GetMem(PropList,Count * SizeOf(PPropInfo));
  GetPropList(Obj.ClassInfo, Filter, PropList);
  for i:=0 to Count -1 do
    List.Add(Proplist[i].Name);
end;

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.
Responder Con Cita