Criando um ADD-INS no Visual Basic


A esta altura você já deve estar familiarizado com o ambiente de desenvolvimento do Visual Basic - IDE ; então localize no Menu do VB a opção Add-Ins. Localizou ? . Selecione a opção  Add-In Manager . Na janela Add-In Manager , da relação de Add-Ins , selecione VB 6 API Viewer e marque as caixas Loaded/Unloaded e Load on Startup. Pronto ! Você acabou de configurar o carregamento de um Add-Ins no menu Add-Ins. Se clicar no menu Add-Ins novamente o Add-In selecionado estará disponível. Veja abaixo:

Figura 1.0 - Add-Ins disponívels Figura 2.0 - Add-In Selecionado

Bem , mas o que é um Add-In ? Um Add-In é um controle ActiveX que trabalha diretamente dentro do ambiente de desenvolvimento do Visual Basic interagindo com projetos , menus , janelas , etc... . Eles realizam tarefas pré-determinadas e introduzem novas funcionalidades ao ambiente de programação do Visual Basic que tornam a "árdua tarefa" de programar mais fácil...

Veja a relação de Add-Ins disponíveis na figura 1.0 . A sua pode ser diferente mas o que importa é que você perceba que Add-Ins são como programas que tem o objetivo de ajudar o usuário na sua tarefa de criar projetos no ambiente VB. Creio que o mais conhecido Add-In seja o Visual Data Manager.

Agora vêm o mais importante : Você sabia que pode criar os seus próprios Add-Ins ? Não acredita ? Pois neste artigo vamos mostrar como você pode criar o seu Add-In.

Conceitos Básicos

Se você não sabe por onde começar que tal abrir o Visual Basic e criar um novo projeto . Na janela New Project selecione o ícone Addin.

Veja na figura abaixo que o VB já deu o pontapé inicial e gerou um projeto com um formulário(frmAddin) e um Descritor.(Connect)

Agora vamos dar uma olhada nas referências que o VB usou. No menu Project|References abra a janela References e note que o VB incluiu as seguintes referências:(Veja figura a seguir)

Antes de darmos uma olhada no código gerado vamos definir alguns termos que serão necessários. 

A possibilidade de poder criar um Add-in é uma grande jogada a Microsoft . Com isto ela abre as portas para que você estenda as capacidades do ambiente de desenvolvimento. Estender é a palavra chave e é aqui que eu vou falar do EOM - Extensibility Object Model .  O ambiente IDE fornece uma interface conhecida como EOM que um conjunto de interfaces que server para personalizar o ambiente de desenvolvimento. Então basicamente você pega o IDE e cria uma extensão a qual é chamada Add-In.

O EOM expõe muitos objetos e é um tanto complexa de digerir portanto vamos nos ater ao necessário para criar Add-ins. Seis objetos compõe o modelo EOM :

  1. Core Objects
  2. Form Manipulation
  3. Event Response
  4. Add-In Management
  5. Project ad Component Manipulation
  6. Code Manipulation

Core Objects - Este pacote é o pacote principal usado na criação de Add-Ins ele possui os seguintes objetos:

  1. Root Object
  2. IDTExtensibility Interface Object
  3. Visual Basic Instance variable

O VBE é o objeto Raiz ( Root Object) no VB e possui objetos e coleções. As coleções do objeto VBE são :

  1. VBProjects
  2. Windows
  3. CodePanes
  4. CommandBars

VBPROJECTS

A coleção VBPROJECTS permite acessar as propriedades do VB . Abaixo temos alguns métodos e propriedades para esta coleção:

Já deu para perceber que você deve saber o que são coleções. Coleções são usadas para fazer referência a um grupo de objetos relacionados sendo que uma coleção pode conter outras coleções. Para o caso acima mostramos a seguir a hierarquia das coleções superiores.

As coleções acima possuem objetos e outras coleções que por suaves possuem propriedades e métodos que vamos utilizar. O objeto VBE contém a coleção de projetos e cada projeto pode conter: formulários , módulos , classes e referências. Cada um destes componentes possui um módulo de código associado. 

Abaixo mostramos alguns métodos disponíveis para tratamento de código:

Nome Descrição
CountOfLines Retorna o número de linhas de um módulo de código
CountOfVisibleLines Retorna o número de linhas vísiveis no painel código
DeleteLines Exclui uma linha ou conjunto de linhas em um módulo
Find Procura no módulo por uma expressão
GetSelection Retorna a seleção no módulo ativo
InsertLines Inclui linha(s) no local definido num bloco de código
Lines Retorna o texto de uma linha do módulo de código
ProcBodyLine Retorna a primeira linha da procedure do módulo
ProcOfLine Retorna o nome da procedure em uma linha de código
ReplaceLine Altera uma linha de código do módulo

Exemplos de utilização:

a-) String = vbCode.Lines(3,5)

Irá retornar o texto de 5 linhas de códigos da variável objeto vbCode, iniciando na linha número 3.

b-) vbCode.InsertLines 1, "'Isto é um comentário !" 

Inclui um comentário na seção General Declarations de um componente.

c-) vbCode.DeleteLines 1

Exclui a linha inserida no exemplo anterior

O primeiro Add-In a gente nunca esquece...

Vamos direto ao que interessa : Criar nosso primeiro Add-In.  Vamos criar um Add-In simples que irá contar as linhas de código de um determinado componente de um projeto VB. O nome do nosso add-in será MeuAddin e a versão do VB usada é a 6.0. Para isto vamos contar com uma pequena ajuda do VB.

1-) Inicie um novo projeto no Visual Basic e Na janela New Project selecione o ícone Addin. O VB já irá gerar um projeto com um formulário e um descritor como abaixo:

2-) Altere o nome do projeto para MeuAddin e exclua os botões de comando OK e Cancel. Agora insira três caixas de texto - txtprojeto e txtcomponente e txtnumerodelinhas, três labels e dois botôes de comando: cmdcontarLinhas e cmdPronto. Veja figura abaixo:

3-) O código inserido pelo VB no Descritor será usado para se conectar e desconectar do ambiente de desenvolvimento . Vamos fazer somente uma pequena alteração neste código. Exiba o código do descritor e procure pelo procedimento:

Private Sub AddinInstance_OnConnection()

Encontre a linha de código :

Set mcbMenuCommandBar = AddToAddInCommandBar("MyAddin")

e substitua o nome "MyAddin" pelo nome dado ao seu projeto. No nosso caso ficaria assim:

Set mcbMenuCommandBar = AddToAddInCommandBar("MeuAddin")

4-) Inclua o código abaixo na seção General Declarations do formulário frmAddin:

Option Explicit
Public VBInstance As VBIDE.VBE
Public Connect As Connect

5-) Agora insira o código abaixo no evento Click do botão - cmdcontarlinhas :

Private Sub cmdcontarlinhas_Click()
Dim strVBProjeto As String
Dim strVBComponente As String
Dim objVBComponent As VBComponent

'controles do formulário
strVBProjeto = txtprojeto.Text
strVBComponente = txtcomponente.Text

'Define objVBComponent para o componente do programa informado
Set objVBComponent = VBInstance.VBProjects.Item(strVBProjeto).VBComponents.Item(strVBComponente)

'Atribui o numero de linhas usando o método - countoflines - do componente objVBComponent
txtnumerodelinhas.Text = Str(objVBComponent.CodeModule.CountOfLines)

End Sub

6-) Agora o código associado ao evento Click do botão  - cmdPronto.

Private Sub cmdpronto_Click()
   'esconde a janela do add-in
   Connect.Hide
End Sub

Como funciona !:

Todo o serviço é feito quando o usuário clicar no botão - contar Linhas ; ao fazer isto os nomes do projeto e do componente informados pelo usuário nas caixas de texto será atribuido ao objeto objVBComponent :

Set objVBComponent = VBInstance.VBProjects.Item(strVBProjeto).VBComponents.Item(strVBComponente)

Note que primeiro referenciamos o objeto VBInstance e então a coleção VBProjects é acessada através do método item usando o nome do projeto atribuído a variável strVBProjeto e o componente atribuído a variável strVBComponente.

A linha de código que efetivamente conta as linhas é a seguinte:

txtNumerodeLinhas.Text = Str(objVBComponente.CodeModule.CountOfLines)

Com ela acessamos a propriedade CountOfLines de CodeModule do objeto objVBComponent que irá contar o número de linhas e atribuir o resultado a caixa de texto txtNumerodelinhas.text

Bem , estamos quase acabando . Eu disse quase.... Salve o projeto e compile-o usando as opções File|Compile MeuAddin.dll no mesmo diretório do VB .  Os add-Ins podem ser compilados como um ActiveX EXE ou como um ActiveX DLL.

Agora , antes de poder rodar o nosso Add-In ,  temos que alterar o arquivo VBADDIN.INI que esta no diretório Windows . Inclua a seguinte linha de código no arquivo e salve-o novamente no mesmo diretório.

MeuAddin.Connect =0 

 

Pronto , agora acabamos. Vamos usar o nosso Add-Ins ????  Para isto siga o roteiro a seguir:

  1. Inicie o Visual Basic e carregue qualquer projeto. 
  2. Clique na opção Add-In Manager do  menu Add-Ins
  3. Na Janela Add-In Manager , se você fez tudo certinho, irá aparecer o nosso Add-In. Selecione e marque a caixa Loaded/Unloaded.

  1. Ao clicar no botão - OK - o nosso Add-Ins será exibido. Informe o nome do projeto e o nome do componente nas caixas de texto e clique no botão - Contar Linhas.  Veja na figura abaixo:

Voilá...   O formulário form1 do projeto Project1  contém 43 linhas de código .. Uau !!! Imagine as possibilidades !!!  . Agora eu passo a bola para você...  


José Carlos Macoratti