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 > > ------------------------------------ >