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

Responder a