Valfrid-Ly Silva Couto wrote:
> Opa...
>    
>   Já avancei bastante na solução que eu precisava com o PPropInfo, porém, me 
> deparei
> com um problema de herança ao criar uma classe ancestral para retornar o 
> conteúdo do
> filtro de uma collection.
>    
>   O que acontece é que eu gostaria de criar uma nova instância do meu "self",
> porém, fazendo Self.Create simplesmente perco a instância atual.

Self.Create não faz você perder a instância atual, mas o contrário: 
construtores chamados a partir de uma instância não chamam o 
NewInstance, apenas executam a rotina do create novamente.

>   Com o ClassInfo, consigo as informações da classe, mas não consegui 
> instanciar
> um novo objeto a partir delas.
>    
>   Alguém sabe como proceder?!

Classes decendentes de tpersistent implementam (ou deveriam implementar) 
o assign, então teoricamente você pode fazer algo assim:

VNovoObj := TSuaClasseBase(NewInstance);
VNovoObj.Create(Argumentos);
VNovoObj.Assign(Self);

Joao Morais



> Joao Morais <[EMAIL PROTECTED]> escreveu:
>   Valfrid-Ly Silva Couto wrote:
>> Amigos,
>>
>> Estou trabalhando com Delphi 7 e estou tentado criar um filtro num 
>> descendente de TCollection.
>>
>> Como eu gostaria que esse filtro fosse genérico, tenho que usar Reflection 
>> para saber qual a propriedade passada, apenas usando o nome.
>>
>> Achei, mesmo no histórico da lista, como fazer o reflection de métodos, 
>> usando o TMethod, mas não achei nada de propriedades.
>>
>> Alguém sabe como fazer isso?!
> 
> Trata-se de rtti, através desta sigla as suas pesquisas deverão trazer 
> mais resultados.
> 
> Há diversos métodos, depende do tipo de propriedade que você está 
> usando. Veja, por exemplo, GetStrProp, unit TypInfo, que pega o valor de 
> uma propriedade string. Nesta mesma unit tem a declaração de outras 
> procedures e functions para outros tipos de dados.
> 
> Joao Morais
> 
> ------------------------------------
> 

Responder a