.VBG TIPO DE EXTENSAO VB6
O que é isso ? Pra que isto server ?
retirado de uma de minhas apostilas, se os moderadores acharem melhor pode se retirar minha resposta e colocar nas seções de downloads
A criação de componentes ActiveX é um recurso extremamente útil pois permite que tarefas
rotineiras e códigos que são sempre usados em um sistema sejam criados uma única vez e
utilizados em diversos sistemas.
Além disso, componentes ActiveX podem ser utilizados na Web, dentro de páginas HTML.
Primeiramente, precisamos criar um projeto de um componente ActiveX. Ao entrar no Vb ele já
pergunta qual projeto desejamos criar, basta selecionar ActiveX Component.
O nosso componente será um relógio a ser utilizado tanto em projetos VB como em páginas na Web.
A primeira coisa que vemos no projeto é a área de criação do componente. Ela guarda certa
semelhanças com um formulário, mas não possui barra de tÃtulo, por exemplo. Esta área é o
espaço que o componente irá ocupar quando estiver posicionado dentro de um form.
Podemos então inserir diversos componentes dentro do nosso componente. O nosso componente
ficará sendo uma junção de vários componentes já existentes. PoderÃamos unir labels, botões,
text box, para formar um único componente.
No nosso caso, necessitaremos de um label e um timer. O label será posicionado no canto
superior esquerdo do componente (isso é necessário para o nosso exemplo). O timer pode ser
posicionado em qualquer lugar.
Precisaremos setar a propriedade AutoSize do Label para True. Este label será o responsável por
exibir a hora do nosso relógio. O AutoSize fará com que o tamanho do label se ajuste à  largura
da hora. Vamos chamar o Label de LBLCLOCK.
Vamos dar um nome ao componente que estamos criando. Clique na área de criação do componente e
na janela de propriedades dê o nome de Clock.
Desejamos que o componente fique do exato tamanho do mostrador de hora, não deve haver espaço
vazio. Para conseguirmos isso devemos programar o evento Resize do UserControl. Utilize um
duplo clique na área de criação do componente e em seguida altere o evento para Resize.
O evento Resize do UserControl pode ser utilizado com uma entre duas finalidades:
A) Quando desejamos que o usuário possa alterar o tamanho do nosso componente, utilizamos o
Resize para alterar o tamanho e a posição dos componentes internos ao nosso.
B) Quando desejamos que o usuário não possa alterar o tamanho do nosso componente,
utilizamos o Resize para atribuir um valor fixo ao tamanho do nosso componente, fazendo
com que a alteração do usuário seja ignorada.
No Resize deveremos atribuir ao UserControl a largura e a altura do label. O código do Resize
ficará então da seguinte forma:
Private Sub UserControl_Resize()
UserControl.Width = lblclock.Width
UserControl.Height = lblclock.Height
End Sub
Importante: Observe que mesmo após termos trocado o nome do UserControl ele continua a ser
referido no código como UserControl.
Após isso precisaremos também garantir que quando o Label mudar de tamanho o UserControl também
mudará. Isso deverá acontecer em especial quando o componente for inserido no form, na primeira
exibição de hora que ocorrerá no Label.
Para tanto vamos programar o evento Change do Label. O evento Change do Label ocorre sempre que
o caption do Label é alterado. No evento Change poderemos nos limitar a chamar a Sub do evento
Resize para fazer o trabalho todo por nós. Assim sendo, o código ficará assim:
Private Sub lblclock_Change()
UserControl_Resize
End Sub
Finalmente, devemos agora programar o objetivo final do nosso componente: Exibir as horas.
Para tanto devemos configurar o componente Timer. Vamos atribuir 1000 Ã Â propriedade Interval do
componente Timer. Isso fará com que a cada 1 segundo (1000 milisegundos) o evento OnTimer do
componente Timer ocorra.
Vamos então programar o evento OnTimer do componente Timer. Neste evento a única coisa que
precisaremos fazer é exibir as horas. O código ficará da seguinte forma:
Private Sub Timer1_Timer()
lblclock.Caption = Time
End Sub
Precisamos então testar nosso componente. Para testa-lo precisaremos de um projeto, portanto
devemos adicionar um projeto no Vb. Para isso utilizamos o comando File->Add Project. Observe
que não estou utilizando New Project, mas sim Add Project. Isso irá criar um novo projeto sem
fechar o projeto do componente que estamos criando. Desta forma estaremos trabalhando ao mesmo
tempo com o projeto do componente e o projeto criado para testar o componente. Isso forma o que
o VB chama de Project Group. O projeto que adicionaremos deverá ser um projeto standard.
Após utilizar esta instrução você terá a sua frente o form1 do projeto Standard, mas você
observará que, apesar do nosso novo componente aparecer na paleta de componentes, ele aparece
desabilitado.
Isso acontece porque a janela de criação do componente está aberta, apesar de estar por trás de
outras janelas. Para solucionar isso você deverá utilizar o menu Window, selecionar e fechar
todas as janelas relativas ao componente que estiverem aparecendo no menu Window.
Após isso, você verá o nosso componente ativo na paleta de componentes. Poderá então
adiciona-lo ao form e verá o mostrador de hora exibindo a hora atual.
Tente alterar o tamanho do componente e você verá que o tamanho não mudará, devido ao código
que utilizamos no evento Resize do UserControl.
Vamos agora melhorar um pouco nosso componente. Você deve ter observado que o componente possui
algumas propriedades das quais não necessita, tal como TabStop e TabIndex. Para retirar essas
propriedades devemos manipular as propriedades do componente.
Para isso abra a janela de criação do componente e procure pela propriedade CanGetFocus. Essa
propriedade determina se o componente poderá ou não receber o foco dentro de um formulário. Se
for setada para False, as propriedades TabStop e TabIndex automaticamente desaparecem, por
serem desnecessárias.
Teste, mas não esqueça de fechar a janela de criação do componente ao voltar para o form1.
Outra alteração interessante que poderemos fazer neste componente é definir um Ãcone para ele.
Para isso precisaremos utilizar a propriedade do componente chamada ToolBoxBitmap. Basta
atribuir uma imagem a esta propriedade e estará feito : Nosso componente ganhará um Ãcone. Na
falta de um Ãcone melhor selecionei o Ãcone de um calendário.
Até este ponto ainda não executamos o projeto, apenas vimos o funcionamento do componente em
tempo de Design. Como temos um Project Group e não um projeto único devemos fazer mais um passo
antes de podermos executar: Determinar qual o projeto que será executado primeiro.
O projeto pelo qual desejamos iniciar a execução é o projeto Standard. Desta forma devemos, na
janela do Project Explorer, marcar o projeto Standard como sendo o projeto de Start Up. Para
tanto clique com o botão direito sobre o projeto Standard e selecione a opção Set as Start Up.
Você observará que o projeto do componente, que estava em negrito, não mais estará, enquanto
que o projeto Standard, de teste do componente, ficará em negrito por ser o projeto Start Up.
Você poderá então executar o projeto.
Na hora de salvar o projeto você observará que o comando Save Project do menu File foi alterado
para Save Project Group. Isso porque temos um gupo de projetos. Assim sendo, além dos arquivos
normais dos 2 projetos será salvo um arquivo a mais com a extensão .VBG. Este arquivo (VBG)
permitirá que você abra todo o grupo de projetos de uma vez só. Abrindo o VBG todos os projetos
pertencentes a este grupo de projeto serão abertos.
Após salvar todo o grupo de projetos, vamos então compilar o nosso componente. Isso é feito da
mesma forma que geramos um executável. Selecionando o projeto do componente na janela do
Project Explorer e abrindo o menu File encontraremos a instrução Make ProjClock .OCX (o nome do
projeto pode variar, é o nome que você deu a ele).
Logo abaixo dessa instrução Make existe um segundo Make : Make Project Group. O 1o Make irá
compilar apenas o projeto selecionado. Como o projeto selecionado é o projeto de um .OCX ele de
imediato identificou que o arquivo resultante será um .OCX. Já o 2o Make pode ser utilizado
para compilar todos os projetos contidos no grupo. No nosso exemplo, seria criado o .OCX do
Clock e um executável referente ao projeto de teste do Clock.
Após tudo isso, vamos então utilizar o nosso componente em um novo projeto. Para isso, basta
utilizar o comando New Project. Todo o Project Group será fechado e você terá um novo projeto
Standard para testar o componente.
O componente, como você poderá observar, não se encontra mais na paleta de componentes do VB.
Precisaremos adiciona-lo à  paleta de componentes. Para isso utilizaremos a instrução Project
->Components.
Você encontrará na lista de componentes o nome do projeto do componente Clock. Esse nome foi
adicionado ao Registry do equipamento quando o componente foi compilado. Caso estivesse
utilizando o componente em outro micro, bastaria utilizar o botão Browse e apontar o arquivo do
componente.
Após isso o componente aparecerá na paleta de componentes e poderá novamente ser utilizado nos
seus projetos.
A criação de componentes ActiveX é um recurso extremamente útil pois permite que tarefas
rotineiras e códigos que são sempre usados em um sistema sejam criados uma única vez e
utilizados em diversos sistemas.
Além disso, componentes ActiveX podem ser utilizados na Web, dentro de páginas HTML.
Primeiramente, precisamos criar um projeto de um componente ActiveX. Ao entrar no Vb ele já
pergunta qual projeto desejamos criar, basta selecionar ActiveX Component.
O nosso componente será um relógio a ser utilizado tanto em projetos VB como em páginas na Web.
A primeira coisa que vemos no projeto é a área de criação do componente. Ela guarda certa
semelhanças com um formulário, mas não possui barra de tÃtulo, por exemplo. Esta área é o
espaço que o componente irá ocupar quando estiver posicionado dentro de um form.
Podemos então inserir diversos componentes dentro do nosso componente. O nosso componente
ficará sendo uma junção de vários componentes já existentes. PoderÃamos unir labels, botões,
text box, para formar um único componente.
No nosso caso, necessitaremos de um label e um timer. O label será posicionado no canto
superior esquerdo do componente (isso é necessário para o nosso exemplo). O timer pode ser
posicionado em qualquer lugar.
Precisaremos setar a propriedade AutoSize do Label para True. Este label será o responsável por
exibir a hora do nosso relógio. O AutoSize fará com que o tamanho do label se ajuste à  largura
da hora. Vamos chamar o Label de LBLCLOCK.
Vamos dar um nome ao componente que estamos criando. Clique na área de criação do componente e
na janela de propriedades dê o nome de Clock.
Desejamos que o componente fique do exato tamanho do mostrador de hora, não deve haver espaço
vazio. Para conseguirmos isso devemos programar o evento Resize do UserControl. Utilize um
duplo clique na área de criação do componente e em seguida altere o evento para Resize.
O evento Resize do UserControl pode ser utilizado com uma entre duas finalidades:
A) Quando desejamos que o usuário possa alterar o tamanho do nosso componente, utilizamos o
Resize para alterar o tamanho e a posição dos componentes internos ao nosso.
B) Quando desejamos que o usuário não possa alterar o tamanho do nosso componente,
utilizamos o Resize para atribuir um valor fixo ao tamanho do nosso componente, fazendo
com que a alteração do usuário seja ignorada.
No Resize deveremos atribuir ao UserControl a largura e a altura do label. O código do Resize
ficará então da seguinte forma:
Private Sub UserControl_Resize()
UserControl.Width = lblclock.Width
UserControl.Height = lblclock.Height
End Sub
Importante: Observe que mesmo após termos trocado o nome do UserControl ele continua a ser
referido no código como UserControl.
Após isso precisaremos também garantir que quando o Label mudar de tamanho o UserControl também
mudará. Isso deverá acontecer em especial quando o componente for inserido no form, na primeira
exibição de hora que ocorrerá no Label.
Para tanto vamos programar o evento Change do Label. O evento Change do Label ocorre sempre que
o caption do Label é alterado. No evento Change poderemos nos limitar a chamar a Sub do evento
Resize para fazer o trabalho todo por nós. Assim sendo, o código ficará assim:
Private Sub lblclock_Change()
UserControl_Resize
End Sub
Finalmente, devemos agora programar o objetivo final do nosso componente: Exibir as horas.
Para tanto devemos configurar o componente Timer. Vamos atribuir 1000 Ã Â propriedade Interval do
componente Timer. Isso fará com que a cada 1 segundo (1000 milisegundos) o evento OnTimer do
componente Timer ocorra.
Vamos então programar o evento OnTimer do componente Timer. Neste evento a única coisa que
precisaremos fazer é exibir as horas. O código ficará da seguinte forma:
Private Sub Timer1_Timer()
lblclock.Caption = Time
End Sub
Precisamos então testar nosso componente. Para testa-lo precisaremos de um projeto, portanto
devemos adicionar um projeto no Vb. Para isso utilizamos o comando File->Add Project. Observe
que não estou utilizando New Project, mas sim Add Project. Isso irá criar um novo projeto sem
fechar o projeto do componente que estamos criando. Desta forma estaremos trabalhando ao mesmo
tempo com o projeto do componente e o projeto criado para testar o componente. Isso forma o que
o VB chama de Project Group. O projeto que adicionaremos deverá ser um projeto standard.
Após utilizar esta instrução você terá a sua frente o form1 do projeto Standard, mas você
observará que, apesar do nosso novo componente aparecer na paleta de componentes, ele aparece
desabilitado.
Isso acontece porque a janela de criação do componente está aberta, apesar de estar por trás de
outras janelas. Para solucionar isso você deverá utilizar o menu Window, selecionar e fechar
todas as janelas relativas ao componente que estiverem aparecendo no menu Window.
Após isso, você verá o nosso componente ativo na paleta de componentes. Poderá então
adiciona-lo ao form e verá o mostrador de hora exibindo a hora atual.
Tente alterar o tamanho do componente e você verá que o tamanho não mudará, devido ao código
que utilizamos no evento Resize do UserControl.
Vamos agora melhorar um pouco nosso componente. Você deve ter observado que o componente possui
algumas propriedades das quais não necessita, tal como TabStop e TabIndex. Para retirar essas
propriedades devemos manipular as propriedades do componente.
Para isso abra a janela de criação do componente e procure pela propriedade CanGetFocus. Essa
propriedade determina se o componente poderá ou não receber o foco dentro de um formulário. Se
for setada para False, as propriedades TabStop e TabIndex automaticamente desaparecem, por
serem desnecessárias.
Teste, mas não esqueça de fechar a janela de criação do componente ao voltar para o form1.
Outra alteração interessante que poderemos fazer neste componente é definir um Ãcone para ele.
Para isso precisaremos utilizar a propriedade do componente chamada ToolBoxBitmap. Basta
atribuir uma imagem a esta propriedade e estará feito : Nosso componente ganhará um Ãcone. Na
falta de um Ãcone melhor selecionei o Ãcone de um calendário.
Até este ponto ainda não executamos o projeto, apenas vimos o funcionamento do componente em
tempo de Design. Como temos um Project Group e não um projeto único devemos fazer mais um passo
antes de podermos executar: Determinar qual o projeto que será executado primeiro.
O projeto pelo qual desejamos iniciar a execução é o projeto Standard. Desta forma devemos, na
janela do Project Explorer, marcar o projeto Standard como sendo o projeto de Start Up. Para
tanto clique com o botão direito sobre o projeto Standard e selecione a opção Set as Start Up.
Você observará que o projeto do componente, que estava em negrito, não mais estará, enquanto
que o projeto Standard, de teste do componente, ficará em negrito por ser o projeto Start Up.
Você poderá então executar o projeto.
Na hora de salvar o projeto você observará que o comando Save Project do menu File foi alterado
para Save Project Group. Isso porque temos um gupo de projetos. Assim sendo, além dos arquivos
normais dos 2 projetos será salvo um arquivo a mais com a extensão .VBG. Este arquivo (VBG)
permitirá que você abra todo o grupo de projetos de uma vez só. Abrindo o VBG todos os projetos
pertencentes a este grupo de projeto serão abertos.
Após salvar todo o grupo de projetos, vamos então compilar o nosso componente. Isso é feito da
mesma forma que geramos um executável. Selecionando o projeto do componente na janela do
Project Explorer e abrindo o menu File encontraremos a instrução Make ProjClock .OCX (o nome do
projeto pode variar, é o nome que você deu a ele).
Logo abaixo dessa instrução Make existe um segundo Make : Make Project Group. O 1o Make irá
compilar apenas o projeto selecionado. Como o projeto selecionado é o projeto de um .OCX ele de
imediato identificou que o arquivo resultante será um .OCX. Já o 2o Make pode ser utilizado
para compilar todos os projetos contidos no grupo. No nosso exemplo, seria criado o .OCX do
Clock e um executável referente ao projeto de teste do Clock.
Após tudo isso, vamos então utilizar o nosso componente em um novo projeto. Para isso, basta
utilizar o comando New Project. Todo o Project Group será fechado e você terá um novo projeto
Standard para testar o componente.
O componente, como você poderá observar, não se encontra mais na paleta de componentes do VB.
Precisaremos adiciona-lo à  paleta de componentes. Para isso utilizaremos a instrução Project
->Components.
Você encontrará na lista de componentes o nome do projeto do componente Clock. Esse nome foi
adicionado ao Registry do equipamento quando o componente foi compilado. Caso estivesse
utilizando o componente em outro micro, bastaria utilizar o botão Browse e apontar o arquivo do
componente.
Após isso o componente aparecerá na paleta de componentes e poderá novamente ser utilizado nos
seus projetos.
Resumindo:
Quando vc cria um projeto ActiveX (ocx) vc precisa tambem criar um projeto normal (exe) para testar as funcionalidades do seu ActiveX, o arquivo .VBG reune estes dois projetos em um unico só, pois no VB vc pode criar mais de um projeto dentro de um unico projeto. Esquisito né ? mas é mais ou menos assim.
abraços....
Quando vc cria um projeto ActiveX (ocx) vc precisa tambem criar um projeto normal (exe) para testar as funcionalidades do seu ActiveX, o arquivo .VBG reune estes dois projetos em um unico só, pois no VB vc pode criar mais de um projeto dentro de um unico projeto. Esquisito né ? mas é mais ou menos assim.
abraços....
Tópico encerrado , respostas não são mais permitidas