Fórum Ler valor de uma propriedade em runtime? #219879

11/03/2004

0

Galera, criei uma classe

Tpessoa = class(TComponent)
private
Fnome:string;
Fsal :integer;
Fdata:Tdate;
procedure Setnome(value:string);
function getnome:string;
published
property Nome:string read getnome write setnome;
property Sal :integer read Fsal Write Fsal;
property Data :Tdate read Fdata write Fdata;
end;

Estava com dúvidas de como levantar todas as Propriedades dela em runtime, mas descobri com que usando o método getPropList, é possível pegar os nomes das propriedades, mas agora, preciso ser capaz de ler o valor da propriedade e tbm atribuir um novo valor a mesma.

Ex:

var
myobj:Tpessoa;
i,Propcount:integer;
PropList : PPropList;
begin
myobj:=Tpessoa.crealte(self);
Propcount:=GetPropList(Myobj.ClassInfo,PropList) - 1 ; // levanto as propriedades do obj.

if PropCount > 0 then
begin
for Prop := 0 to PropCount do
begin
if Form1.findcomponent(PropList[Prop].Name) then
begin
//aqui eu passaria o valor do componente do form, q tem o
//mesmo nome da proprieade do obj, para a propriedade.
//mas não sei como fazer isto
end;
end;
end;
end;

Isto seria de grande valia, pois eu não precisaria criar rotinas para fazer a leitura ou a atribuição de valores, nos forms e sim nas classes.

Alguem tem uma dica ou exemplo ou sabe como posso fazer isto?

Obrigado


Aledeol

Aledeol

Responder

Posts

11/03/2004

Marcelo Saviski

use o:
GetPropValue (Componente, Nome_da_Propriedade);



Responder

Gostei + 0

12/03/2004

Aledeol

Muito obrigado, isto vai ser realmente muito útil.


Um abraço :o


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar