Criando Documentos ActiveX ( Documentos Ativos) com o VB
O Visual Basic é uma ferramenta que encanta por sua facilidade e por sua flexibilidade. Com ele dispomos de um verdadeiro arsenal de soluções para as mais variadas situações. Os documentos Activex são um novo tipo de projeto presente desde a versão 5.0 que nos traz novas possibilidades , principalmente com o advento da Internet.
Mas o que são os Documentos ActiveX (Documentos Ativos) ?
A palavra documento pode confundir um pouco e tornar o conceito dos Documentos ActiveX um tanto confuso. Enquanto um documento tradicional , como um documento do Word, é estático um Documento ActiveX não precisa necessariamente o ser. Usando o Visual Basic podemos criar uma aplicação completa com a semântica de um documento tradicional, tendo assim a funcionalidade da aplicação e a flexibilidade do comportamento de um documento.
Sendo mais direto : Os Documentos ActiveX são aplicações Visual Basic que têm o comportamento de um documento , sendo que os mesmos são executados no interior de uma aplicação que os contém. (Internet Explorer, Microsoft Binder, etc...)
Quando você cria um projeto de um Documento ActiveX , você esta criando um "Documento" Visual Basic que pode estar contido em um Container ActiveX (Internet Explorer) . Ao compilar o Documento ActiveX criamos um arquivo Documento Visual Basic ( extensão .vbd) e o seu servidor correspondente , que pode ser um arquivo ActiveX DLL ou um arquivo EXE. Fazendo uma analogia com os documentos do Word , assim como um arquivo com extensão .doc esta para o arquivo Winword.exe um arquivo com extensão *.vbd está está para o seu arquivo EXE ou DLL.
Uma aplicação de um Documento ActiveX consta portanto de duas partes: A aplicação servidora ( pode ser um EXE ou uma DLL) da automação que gerencia e fornece o tipo do objeto documento e o documento propriamente dito. O comportamento do documento permite gerenciar a aplicação Visual Basic como um documento , incluindo ou modificando dados internos da aplicação e distribuindo cópias da mesma.
Algumas características muito importantes que os Documentos ActiveX possuem devem ser mencionadas :
A composição de um Documento ActiveX
Um Documento ActiveX criado com o Visual Basic é composto de um objeto UserDocument , de código , de módulos de código e de controles que são colocados no UserDocument.
Como os formulários , os objetos UserDocument são armazenados em arquivos textos que contém o código fonte e os valores das propriedades de um UserDocument e dos controles nele inseridos. Esses arquivos possuem a extensão .dob.
Se um UserDocument possuir controles com elementos gráficos(Bitmaps,etc...) que não podem ser armazenados em arquivos texto , eles são armazenados em arquivos com extensão .dox . (Lembra-se da extensão .frx)
Os arquivos .dob e .dox definem completamente a aparência e a interface (propriedades , eventos e métodos) . Já um Documento ActiveC compilado será composto de um arquivo ActiveX .EXE ou .DLL acompanhado de um arquivo .vbd.
Para visualizar um Documento ActiveX em uma aplicação Container como o Internet Explorer você deve navegar via arquivo .vbd. Assim para uma aplicação chamada "teste1.vbd" localizada no diretório c:\teste ser visualizada no IE , você deve digitar na caixa - Endereço - a seguinte URL :
Pode também usar o método NavigateTo do objeto HyperLink no interior de um Documento Activex. Para abrir o documento teste1.vbd temos:
Private Sub cmdProxima()
UserDocument.HyperLink.NavigateTo "c:\teste\teste1.vbd"
End Sub
Documentos ActiveX e Controles ActiveX - Semelhanças
Os Documentos ActiveX em muito se assemelham aos Controles ActiveX , senão vejamos:
Os principais eventos dos objetos UserDocument
Os principais eventos que um Documento ActiveX podem exibir são listados , pela ordem, a seguir com a indicação de quando ocorrem:
Documentos ActiveX - DLL ou EXE
Como já vimos , os Documentos ActiveX precisam de um servidor de automação ActiveX , e, temos as opções de criar um Documento ActiveX DLL ou EXE.
Os documentos ActiveX DLL são executados no mesmo espaço de trabalho e subprocesso que a aplicação que os contém.
Os documenetos ActiveX EXE são executados em um espaço de trabalho diferente da aplicação que os contém.
A utilização de componentes no processo comporta um rendimento melhor , visto não ser necessário a troca de chamadas e parâmetros entre os processos. Já a vantagem de um servidor ActiveX EXE reside na possibilidade de fornecer , a partir de uma única aplicação , objetos a diversas aplicações clientes.
Determinando a aplicação que contém um Documento ActiveX
Como podemos ter diferentes aplicações que contém um documento ActiveX , podemos ter também características diferentes relacionadas a essas aplicações. Por isso é importante saber reconhecer , em tempo de execução , em que tipo de aplicação container estamos para habilitar diferentes tipos de funcionalidade.
Para reconhecer qual o tipo da aplicação container (não podemos determinar a versão) , usamos a propriedade Parent e a função Typename. Assim temos a tabela abaixo:
Aplicação Container | Retorno da função Typename |
Janela IDE do Visual Basic | Window |
Internet Explorer 4.0 | IWebBrowser |
Office Binder | Binder |
Frame HTML no Explorer 4.0 | HTMLFrameElemet |
Internet Explorer 5.0 | IWebBrowser2 |
A sintaxe usada é a seguinte:
TypeName(UserDocument.Parent)
Criando um Documento ActiveX
Bem , demorou mas chegou. Vamos mostrar na prática como criar um Documento ActiveX , passo a passo . Usaremos como aplicação container o Internet Explorer. Mãos a obra...
Propriedade de Command1 | Valor |
Name | cmdIrPara |
Caption | Ir Para |
Propriedade de Text1 | Valor |
Name | txtURL |
Text | http://www.geocities.com/macoratti |
Private Sub cmdIrPara_Click() |
Importante Ao usar o método NavigateTo devemos incluir a porção referente ao protocolo (http://) da URL..
Obs: Após o projeto ser executado , se você examinar o diretório do Visual encontrará o arquivo DocumentoAtivo.vbd
Inserindo outro Documento ActiveX ao projeto
Vamos incrementar nosso projeto incluindo outro Documento ActiveX. Você deve ter em mente que para visualizar um Documento ActiveX o método Show não pode ser utilizado pois quem determina quando exibir ou esconder um documento é aplicação container, o IE , para o nosso caso. Você deve navegar entre dois Documentos ActiveX e para fazer isto vai precisar usar o objeto HiperLink e o método Navigate.
Private Sub cmdavancar_Click() Hyperlink.NavigateTo App.Path & "\segundo_documento.vbd" End Sub |
Observe que o projeto funcionar o documento devera estar no mesmo diretório onde você salvou o projeto. Ao executar o projeto o VB irá criar um arquivo .vbd temporário para cada Documento ActiveX do seu projeto. Estes arquivos sempre estarão no mesmo diretório onde o Visual Basic foi instalado.
Propriedade da Etiqueta | Valor |
Name | lblCaption |
Caption | SegundoDocumento |
Propriedade do Botão de comando | Valor |
Name | cmdretorna |
Caption | Retorna |
Private Sub cmdretorna_Click() UserDocument.Hyperlink.GoBack End Sub |
O método GoBack do objeto HiperLink irá retornar para o documento anterior no Navegador.
Arquivo | Nome do arquivo | Extensão |
User document | SegundoDocumento | .dob |
figura 1 - O documento ActiveX - PrimeiroDoc.vbd |
Figura 2 - O segundo documento ActiveX - SegundoDocumento.vbd |
Incluindo um Formulário no Projeto
Propriedades do Formulário | Valor |
Name | frmAuxiliar |
Caption | Formulário Auxiliar |
Private Sub cmdexibirForm_Click() frmAuxiliar.txtauxiliar.Text = txturl.Text frmAuxiliar.Show vbModal End Sub |
...