Migrando Telas ActiveX para o uniPaaS 2.0 – Parte 01

Manoel Frederico da Silva / Product Manager & MAGIC Evangelist / Magic Software Brasil

Falamos anteriormente a respeito de algumas mudanças em nossas soluções baseadas no novo uniPaaS 2.0, especialmente na questão da interface (telas). A lista completa dessas mudanças pode ser conhecida no DevNET* da MAGIC: http://devnet.magicsoftware.com/en/library?book=en/uniPaaS2/&page=Whats_Different_in_uniPaaS_V2.0.htm.

Basicamente, se resumem ao fato de que agora o runTime é MS.NET e conseqüentemente, as telas são objetos WinForms.

Um dos efeitos mais diretos, é a impossibilidade de se mostrar controles ActiveX nas telas WinForms.

Desde o eDeveloper 9.4, as soluções MAGIC podem incluir controles ActiveX em seus formulários (telas).

Exemplo em Visual Basic 6:

Exemplo em uniPaaS 1.9g:

No uniPaaS 2.0 nós continuamos tendo a opção de criar objetos OLE e acessá-los através do comando Invoke COM. Mas colocar controles ActiveX em telas, não é mais possível.

Como manter minhas soluções antigas, que usam ActiveX, funcionando?

É simples, bastante simples na verdade. O MS.NET SDK possui um utilitário chamado AXImp.exe. É um programa de linha de comando, que converte uma classe ActiveX em uma classe MS.NET, e permite que seja utilizada em telas WinForms (como é o nosso caso aqui).

O AXimp converte um ActiveX em um .NET User Control.

NOTA: Existem versões específicas do AXImp para Windows 32bits e 64bits. Veja mais detalhes em: http://social.msdn.microsoft.com/Forums/en/netfx64bit/thread/d5d11837-d697-4a64-9b61-8a974b622098

Neste nosso exemplo, com o controle ChartFX 2.0, poderíamos fazer desta forma:

AXImp C:Windowssystem32CFX32.OCX /out:CFX32.DLL

Serão gerados alguns assemblies .NET, contendo a classe ActiveX já convertida. Entre eles, o assembly CFX32.DLL.

NOTA: Os assemblies gerados são classes “proxy” (capas) para os verdadeiros controles, que permanecem sendo um ActiveX. Por isso, a distribuição e registro do ActiveX (arquivo .OCX) continua sendo necessária.

Então, carregamos estes assemblies como componentes de nossa solução  uniPaaS 2.0:

DICA: Os assemblies que for utilizar que não sejam registrados no GAC do MS.NET, você pode copiá-los para a pasta %EngineDir%RIAModulesDesktop, pois ela já está relacionada no probing path do uniPaaS.

Criamos a virtual associada a este controle .NET:

Colocamos o controle no formulário do programa/tarefa:

E está pronto.

O controle ActiveX agora convertido em controle .NET está disponível para uso em nossa solução uniPaaS 2.0:

(*) O DevNET (http://devnet.magicsoftware.com/) é um portal repleto de informações sobre todos os produtos MAGIC, que todo desenvolvedor/arquiteto de soluções uniPaaS/iBolt deveria conhecer.

Deixe um comentário

O seu endereço de e-mail não será publicado.