mrbar2000 wrote: > Cara, só em casos muito específicos temos de dar um addref(). > > O problema realmente é a mistura de variaveis tipo classe e interface > que vc fez. a variável tem que ser sempre do tipo interface se > trabalhando com interfaces. > > var > vCont: Integer; > vObj: IESApplicationControlTheme; > begin > { Faz um loop nos componentes do form } > for vCont := 0 to Self.ComponentCount -1 do > if Supports(Components[vCont], > IESApplicationControlTheme, vObj) and Assigned(vObj) then > vObj.SetTheme(Theme); > end; > > muito menos código do que vc imagina não?
Até aonde eu pude ver, essa já é a essência da implementação do Elazar, mas o problema é associar a instância a uma interface (como ele já fez) e a 'fonte' ser um ponteiro para classe. Este, portanto, até aonde eu pude entender, é sim um caso muito específico. Agora quer saber o bom mesmo? Procurar uma implementação que dispense interface. -- João Morais