VBScript - Usando Controles OCX em páginas HTML


Vamos mostrar neste artigo como usar controles OCX do Visual BASIC em páginas HTML com VBScript. Eu sei que este assunto já esta muito manjado , e que até mesmo sua aplicabilidade pode ser questionada frente a tantos novos recursos e ferramentas que dispomos atualmente. Mas mesmo assim vou em frente... (Leia também: Criando Controles Activex no Visual Basic )

Sabe aqueles controles OCX que você usa no VB ? Os controles TextBox1 , ListBox , MSFlexGrid , etc.... Sabia que você pode usá-los em uma página WEB ? Por que você faria isto ? Que tal para melhorar a interface e a dinâmica da página. Ficou convencido ? Então prossigamos...(eu supos que você ficou convencido ! )

Para ilustrar ou mostrar como usar o botão de comando 3-D - SSCommand - presente na Threed32.OCX da Sheridan.

A primeira coisa necessária para usar um controle OCX na usa página é que ele esteja registrado na sua máquina. Geralmente esses controles ficam no diretório \Windows\System e o registro é feito no Registro do Windows , onde é atribuido um número único de identificação de cada controle presente no seu sistema. Pois bem você vai precisar deste número...

Ora, ora como você vai saber o número de registro cada controle OCX ? Fácil , você vai usar o Regedit . Veja como fazer isto passo a passo.

  1. Estando no Windows , clique em - Iniciar - Executar , digite Regedit e clique em OK. Voce vai ver a tela abaixo:

  1. Agora na opção Editar do menu selecione Localizar e informe o nome do Controle (pode ser parcial) para o qual deseja obter o número do registro

  1. Quando a chave for encontrada ainda no menu Editar selecione agora a opção Copiar nome da chave. Pronto ! agora o número de registro do controle foi copiado para o ClipBoard (Área de transferência).

Viu como é simples ! Vamos agora usar o número para o nosso controle em uma página HTML. Para isto você pode usar qualquer editor . O código abaixo foi gerado no First Page um editor freeware. Ei-lo !:

<html>
<head>
<title>Usando controles OCX - SSCommand</title>
</head>
<body>
<SCRIPT LANGUAGE="VBScript">
Sub Cmd1_Click()
     Document.Write " Fui Pressionado !!! "
End Sub
</SCRIPT>
<PRE>
<OBJECT ID="Cmd1" CLASSID="clsid:0BA686B4-F7D3-101A-993E-0000C0EF6F5E">
  <PARAM NAME="Caption" VALUE="Clique-me">
</OBJECT>	
</body>
</html>

Vejamos como funciona :

Para incorporar um controle AcitveX dentro de uma página Web , você precisa usar o conjunto de tags HTML <OBJECT>...</OBJECT> . O objeto ActiveX é então identificado pelo seu CLASSID alfanumérica - o seu número de registro no Windows. A sintaxe básica para identificar e usar um ActiveX é a seguinte:

<OBJECT ID="Identificador do controle"
        CLASSID="clsid: numero de registro do controle">
</OBJECT>

A tag <OBJECT> possui ainda os seguintes atributos adicionais: (os principais)

  1. ALIGN - define onde o objeto é colocado
  2. BORDER - define a largura da borda em torno do objeto
  3. CODETYPE - informa o Internet Media ype do código em CLASSID
  4. DATA - identifica o URL dos dados para um objeto.
  5. HEIGHT/WIDTH - fornece as dimensões do objeto
  6. ISMAP - indica que o objeto é definido dentro de um LINK.
  7. STANDY - fornece o texto que um objeto deve exibir durante a carga

A tag <PARAM> em <PARAM NAME="Caption" VALUE="Clique-me"> foi usada para atribuir um valor a propriedade Caption do Controle. Ela especifica as propriedades de um objeto dentro de sua definição HTML e aceita três atributos:

Usamos o código em VBScript abaixo para exibir a mensagem - "Fui Pressionado !! " quando alguém clicar no botão de comando.

<SCRIPT LANGUAGE="VBScript">
Sub Cmd1_Click()
  Document.Write " Fui Pressionado !!! "
End Sub
</SCRIPT>

Nota: A linha Document.Write escreve a mensagem no Navegador. Usamos o objeto Document do Internet Explorer e o método Write deste o objeto.

Salve sua página HTML com um nome sugestivo . Eu salvei a pagína com o nome de ocx3.htm. Abrindo a página e clicando no botão de comando você terá como resultado as seguintes telas:

Exatamente o que esperávamos.

Exite um aplicativo freeware que você pode baixar em http://download.cnet.com/downloads/0-14484-108-30247.html que faz todo este trabalho de codificação. O ActiveX Control Pad permite que você coloque controles em um editor de formulário muito similiar ao ambiente de desenvolvimento do VB. Você ajusta o tamanho do controle e quando terminar o código HTML será gerado.

Vamos então usar o ActiveX Control Pad para inserir um controle Grid em uma página HTML.

<HTML>
<HEAD>
<TITLE>New Page</TITLE>
</HEAD>
<BODY>

<OBJECT ID="MSFlexGrid1" WIDTH=335 HEIGHT=192
CLASSID="CLSID:6262D3A0-531B-11CF-91F6-C2863C385E30">
<PARAM NAME="_ExtentX" VALUE="8864">
<PARAM NAME="_ExtentY" VALUE="5080">
<PARAM NAME="_Version" VALUE="393216">
</OBJECT>

</BODY>
</HTML>

Agora basta você incluir um código em VBScript para usar o controle. Abaixo temos a esquerda o exemplo de código sugerido e a direita o resultado da página:

<SCRIPT LANGUAGE=VBScript>
Sub Page_Initialize
  MSFlexGrid1.Rows=3
  MSFlexGrid1.Cols=3
  MSFlexGrid1.Row=1
  MSFlexGrid1.Col=1
  MSFlexGrid1.Text="Celula 11"

  MSFlexGrid1.Row=1
  MSFlexGrid1.Col=2
  MSFlexGrid1.Text="Celula 12"

  MSFlexGrid1.Row=2
  MSFlexGrid1.Col=1
  MSFlexGrid1.Text="Celula 21"

  MSFlexGrid1.Row=2
  MSFlexGrid1.Col=2
  MSFlexGrid1.Text="Celula 22"
End Sub
</SCRIPT>

.

O código completo ficou assim:

<HTML>
<HEAD>
<TITLE>New Page</TITLE>
</HEAD>
<BODY LANGUAGE = VBScript ONLOAD="Page_Initialize">

<SCRIPT LANGUAGE=VBScript>
Sub Page_Initialize
  MSFlexGrid1.Rows=3
  MSFlexGrid1.Cols=3
  MSFlexGrid1.Row=1
  MSFlexGrid1.Col=1
  MSFlexGrid1.Text="Celula 11"

  MSFlexGrid1.Row=1
  MSFlexGrid1.Col=2
  MSFlexGrid1.Text="Celula 12"

  MSFlexGrid1.Row=2
  MSFlexGrid1.Col=1
  MSFlexGrid1.Text="Celula 21"

  MSFlexGrid1.Row=2
  MSFlexGrid1.Col=2
  MSFlexGrid1.Text="Celula 22"
End Sub
</SCRIPT>
<OBJECT ID="MSFlexGrid1" WIDTH=335 HEIGHT=192
CLASSID="CLSID:6262D3A0-531B-11CF-91F6-C2863C385E30">
<PARAM NAME="_ExtentX" VALUE="8864">
<PARAM NAME="_ExtentY" VALUE="5080">
<PARAM NAME="_Version" VALUE="393216">
</OBJECT>

</BODY>
</HTML>

É claro que você não vai usar esta forma de codificar , eu apenas estou mostrando as possibilidades !!!

Até mais...


José Carlos Macoratti