O que é ActiveX ?
Inicie o seu Visual Basic versão 5 ou versão 6 e clique na opção File->New Project. Você verá a seguinte tela sendo exibida:
Você agora tem a opção de criar projetos do tipo ActiveX EXE , ActiveX DLL , ActiveX Control , ActiveX Document DLL e ActiveX Document EXE . Nem sempre foi assim...
Tudo começou com a tecnologia OLE ( leia o artigo: OLE Conceitos ) e evoluiu para ActiveX . Assim , o termo para descrever a capacidade dos objetos se comunicar uns com os outros é ActiveX , e , os documentos que usavam OLE são chamados agora de documentos ActiveX. A tecnologia ActiveX é um padrão que rege a interação e a comunicação entre os objetos de uma aplicação.
No Visual Basic , no início tinhamos as VBX - Visual Basic eXtensions - componentes de 16 bits fornecidos por terceiros que acrescentavam funcionalidades a linguagem Visual Basic expandindo-a e permitindo que muitas tarefas pudessem ser realizadas.
Enquanto que as VBXs eram DLLs que atuavam pela definição de suas propriedades pela invocacão de seus métodos as OCXs trabalham com o encapsulamento , como prega a OOP - Object Oriented Programming. Os VBXs eram simplesmente arquivos que ficavam livres no seu disco rígido já as OCXs são objetos que precisam ser registrados.
Quando você usava uma VBX , acrescentava-a na barra de ferramentas e após a compilação do seu projeto com geração do seu EXE precisava fornecer a VBX junto pois o EXE iria referenciar a VBX usada. Ao usar as OCX elas precisam ser registradas para o Windows poder saber que elas existem.
Os controles ActiveX consistem em diversas interfaces que apontam para funções e objetos. Se o controle for uma DLL os ponteiros serão passados diretamente entre o aplicativo e a ActiveX.
O problema de segurança que envolve os controles ActiveX , quando usados na internet , pode ser contornado pela alteração do nível de segurança do seu navegador não permitindo o download dos controles diretamente em sua máquina ou através da autenticação dos controles ActiveX.
Os controles ActiveX
Assim como você usa um controle Combobox ou um Listbox você pode criar controles personalizados para poder reutilizar em seus aplicativos. Os controles ActiveX são basicamente módulos de classe com uma interface visual.
Criar um controle ActiveX no VB 5/6 é como criar um aplicativo padrão com um módulo de classe, lembrando que você precisa criar um repositório para o controle pois os controles ActiveX não podem existir sozinhos.
Vamos mostrar passo a passo como criar um controle ActiveX . Criaremos um controle simples baseado em uma classe. Primeiro iremos criar a classe e depois criaremos a versão ActiveX dessa classe.
OOP - criando a Classe : Cálculo do valor resultante de uma aplicação financeira
(Leia artigo sobre introdução a OOP e criaçao de classes - Criando Classes no Visual Basic .)
Já definimos nosso objetivo : criaremos uma classe para calcular os juros de uma aplicação financeira. Primeiro devemos definir as variáveis envolvidas nesse processo, então vejamos: Queremos calcular o valor resultante de uma aplicação de um certo valor a uma taxa de juros especifica por um período de tempo determinado. Logo podemos definir as seguintes variáveis:
nPrazo - variável que indica o prazo da aplicação
cValor - variável que indica o valor aplicado
cMontante - variável que indica o valor dos acumulado pela aplicação no período
nJuros - variável que indica a taxa de juros praticada
A fórmula usada para calcular o valor resultante da aplicação será:
cMontante = cValor + ( cValor * nJuros * nPrazo )
Aqui usamos a fórmula para cálculo dos juros simples ( J = C * i * n ) e somamos o resultado com o valor aplicado para obter o resultado final. Lembrando que a taxa e o prazo devem estar nas mesmas unidades: para taxa diaria o prazo deve ser informado em dias, para taxa mensal o prazo deverá estar em meses.
Vamos agora gerar o código para nossa classe. Para melhor esclarecimentos sobre classes leia o artigo - Criando classes no Visual Basic .
Código do Módulo de classe
Option Explicit Public nPrazo as integer Public Valor as Currency Public Montante as Currency Private nJuros as currency |
As variáveis visíveis em todo o projeto são : nPrazo , cValor , cMontante (Declaradas como Públicas)
A variável visível somente pelo código dentro da classe : nJuros ( declarada como Privada )
Property Let Juros(i) if i > 1 then nJuros = i/100 else nJuros = i endif End Property |
Property Get Juros() Juros = nJuros End Property |
Property Let Prazo(n) nprazo = n End Property |
Property Get Prazo() Prazo = nPrazo End Property |
Public Sub Calcula() Dim ctemp as Currency ctemp = Valor ctemp = ctemp + ( Juros * Prazo * cTemp ) Montante = cTemp End Sub |
Usando a Classe criada
Para usar a classe criada no seu projeto faça o seguinte:
Os valores exibidos pelas caixas de texto são os valores mínimos para uma aplicação. Ela funciona assim : Voce fornece os valores nas caixas de texto e clica no botão Calcula que usando a classe criada devolve o resultado exibindo-o na label dentro do retângulo.
Após executar o aplicativo e fornecer valores teremos algo parecido como:
Voilá , nossa classe funciona !!!! (Também com essa complexidade de código ... )
Criando o controle ActiveX
Bem , você pode estar se perguntando - "Pra que tudo isto ??? " ou " Cadê o controle ActiveX ??? ". Calma...
Agora vamos criar realmente o nosso controle baseado na classe anteriormente criada. Vamos lá ...
Private Sub UserControl_Initialize() txtvalor = 100 txtprazo = 2 txtjuros = 6 End Sub |
Private Sub Command1_Click() Dim objValorMontante As New Montante objValorMontante.prazo = Val(txtprazo) objValorMontante.Juros = Val(txtjuros) objValorMontante.Valor = Val(txtvalor) objValorMontante.Calcula lblmontante = objValorMontante.Montante End Sub |
Perceba que o arquivo do controle ActiveX possui a extensão CLT . Um arquivo CLT é igual a um arquivo FRM; assim como um arquivo FRM armazena as definições de um formulário um arquivo CLT armazena as definições para o controle. E , assim como algumas vezes um arquivo FRM possui um arquivo FRX um arquivo CLT também pode ter um arquivo CLX.
O que você esta esperando ??? Vamos usar essa OCX agora ! . Ative o seu formulário padrão ( form1) e clique no controle inserindo-o no formulário como abaixo:
Pressione F5 para executar o projeto e a seguir clique no botão Calcular. Veja o resultado abaixo:
Brilhante !!! A OCX funciona !!!
Compilando e Registrando a OCX
Vamos agora compilar o seu controle ActiveX. Observe a figura abaixo , onde temos Grupo de Projeto para nosso exemplo:
Fig 1.0 - A janela do Grupo de Projeto | Fig 2.0 - Compilando seu controle ActiveX |
Pronto ! Serviço acabado . Falta agora registrar a sua OCX. Para registrar sua OCX você pode usar o arquivo regsvr32.exe que vem com o Windows usando a seguinte sintaxe:
regsvr32 ValorMontante.ocx
Se o registro foi feito com sucesso você verá uma mensagem com a janela abaixo:
Agora vamos ver se a sua OCX já pode ser usada por qualquer projeto no Visual Basic. Inicie um novo projeto e selecione a opção Project -> Components... , na janela de diálogo Components procure pela sua ocx - Valor_Montante. Veja abaixo a janela:
Para usar a sua OCX basta selecionar a opção - Controle Valor Montante ; o controle deverá aparecer na caixa de ferramentas pronto para ser inserido em qualquer projeto.
Segurança ActiveX
Ao se conectar a um servidor na Internet ocorre a transferência de páginas HTML , código VBScript/JavaScript e imagens. Como a HTML e as linguagens de scripts contém basicamente comandos de formatação de texto não temos que nos preocupar com uma possível invasão Hacker .
Com os controles ActiveX a coisa muda de figura . Nada impede que um controle transferido para o seu sistema venha a causar danos ao seu computador. Talvez possa parecer um exagero mas cuidado com os controles Activex que você transfere para o seu computador.
Bem , mas o que podemos fazer para amenizar tal problema ? Vejamos:
Usando o Registro do sistema
Quando você instala um controle baseado em um objeto , as OCXs são registradas como parte da rotina de instalação.
Os objetos registrados são armazenados em HKEY_CLASSES_ROOT . Após o registro eles são identificados por um identificador de classe - CLSID - que é um código alfanumérico.
Para incorporar um controle ActiveX dentro de uma página Web, precisamos usar o conjunto de tags <OBJECT> ... </OBJECT>. O que vai identificar o objeto ActiveX é o seu CLASSID alfanumérico - um nome longo e dificílimo de memorizar .
Uma ferramenta da Microsoft que facilita a copia do nome CLASSID é a ACTIVEX CONTROL LISTER FOR HTML que exibe todos os controles registrados em sua máquina. Para obter o código HTML que irá inserir o controle clique com o botão direito do mouse sobre o controle e selecione copiar e a seguir cole o conteúdo da área de transferência no código fonte HTML.
A seguir temos um exemplo do código fonte gerado para o controle Label do VB.
<OBJECT
ID="Label Object"
CLASSID="CLSID:99B42120-6EC7-11CF-A6C7-00AA00A47DD2"
WIDTH=80
HEIGHT=30>
</OBJECT>
Lindo !!! nào é mesmo ???
O CLASSID identifica exclusivamente um objeto. Existe ainda um parâmetro adicional chamado CODEBASE que indica onde no servidor a classe pode ser encontrada se não estiver registrada localmente.
Quando o navegador encontra a referência do controle ActiveX , ele usa o CLASSID para verificar o registro da máquina local e checar se o controle esta registrado localmente.
O DCOM - Modelo de Objeto Componente
DCOM é uma especificação de desenvolvimento de software que define como os componentes devem ser comunicar entre si. Quando um programa faz referência a um componente ActiveX o Windows irá localizar o componente e enviará a mensagem para ele. Você não precisa fazer nada além de criar as referências aos controles ActiveX no seu código a DCOM fará o resto.
Em breve voltaremos a este assunto... tchau...!!!