Visual Basic 6 - Usando Formulários Windows
|  | Qual a primeira coisa que o VB faz quando você inicia um projeto do tipo Standard EXE ? Ele cria um formulário ( form1) inicial para sua aplicação. Embora possamos criar aplicações Windows sem formulários, essa não é a regra geral. A grande maioria das aplicações Windows utilizam formulários como base principal. | 
	 | 
No VB não é diferente , você geralmente usa um formulário e nele inclui labels, caixas de texto , caixas de combinação , frames , etc... Então você deve tratar com carinho os formulários do seu projeto , e , fará isto se conhecer pelo menos as propriedades básicas relacionadas aos formulários. Vamos lá...
Cuidando da aparência - BorderStyle
Podemos definir a aparência do nosso formulário usando a propriedade BorderStyle. Abaixo temos os estilos possíveis:
| 0 - None 1 - Fixed Single 2 - Sizable 3 - Fixed Dialog 4 - Fixed Toolwindow 5 - Sizable Toolwindow | 
		 | 
Vejamos um resumo de cada estilo:
|  | 0 - None - O formulário não possui : borda, barra de título, botão para minimizar, maximizar ou fechar. Por padrão o ícone do formulário não é exibido na barra de tarefas. É utilizado para criar telas de apresentação dentre outros usos. | 
|  | 1-Fixed Single - O formulário possui borda , barra de titulo e o botão fechar. Não pode ser redimensionado . Os botões Minimizar e Maximizar podem ser incluidos através das propriedades: MinButton e MaxButton. | 
|  | 2- Sizable - É o estilo padrão . O formulário possui borda, barra de título, e todos os botões : minimizar, maximizar e fechar. Pode ser redimensionado . | 
|  | 3-Fixed Dialog - Formulário com borda , barra de título e botão Fechar. Não pode ser redimensionado . Seu icone não é exibido na barra de tarefas. | 
|  | 4- Fixed ToolWindow - O Formulário possui a barra de titulo e o botão fechar com um X menor. Não pode ser redimensionado. | 
|  | 5- Sizable ToolWindow - O Formulário possui a barra de titulo e o botão fechar com um X menor. Pode ser redimensionado. | 
Propriedades de um Formulário
Veremos agora as principais propriedades de um formulário :
| Propriedade | Altera | 
| Name | O nome do formulário | 
| Caption | O texto da barra de título | 
| BackColor | A cor de fundo | 
| ForeColor | A cor das linhas desenhadas em tempo de execução | 
| BorderStyle | Já estudada acima | 
| MaxButton | Exibe o botão Maximizar | 
| MinButton | Exibe o botão Minimizar | 
| MDIChild | Comporta-se como um MDI Child (janela dentro de outra) | 
| Moveable | Se o formulário pode ser movido ou não | 
| ShowInTaskbar | Se o formulário irá ser exibido na barra de tarefas | 
| StartUpPosition | Onde o formulário será exibido inicialmente | 
Além destas propriedades os formulários também possuem métodos e eventos, abaixo os principais:
| Método | Hide, Move, Paint, PrintForm,
        Refresh, SetFocus, Show | 
| Eventos | Activate, Click, DblClick,
        Deactivate, DragDrop, DragOver, GotFocus, Load,
        LostFocus, MouseDown, MouseMove, Unload | 
Carregando, Exibindo e Escondendo um formulário
Para exibir um formulário usamos o método Show . Ele carrega o formulário na memória e o exibe tornando-o visível. A sintaxe é a seguinte:
object.Show style, ownerform
- Object : no caso , o nome do formulário a ser exibido
- Style : Valor Inteiro que define se o formulário é modal ( 1 ou vbmodal) ou não modal ( 0 ou modeless). Opcional
- Ownerform - String que define o componente pertence ao formulário exibido
Nota - Você sabe o que é um formulário modal ?
| Um formulário Modal não deixa que o
        usuário passe de um formulário para outro na mesma
        aplicação. A maioria das caixas de dialogo no Visual
        Basic são modais. Quando um formulário modal é
        exibido, a aplicação gera um beep caso o usuário
        clique fora do formulário modal. Um formulário modeless (que é o padrão do VB ao usar o método Show) permite ao usuário passar de um formulário para outro. Exemplos de formulário modeless no Ambiente de Desenvolvimento do Visual Basic são as janelas Project, Properties, Code e Formulários. | 
| Private Sub cmdTeste_Click() 
		     frmTeste.Show
        vbModal         exibe o
        formulário como modal End Sub | 
 Lembre-se :
 Lembre-se :
Para carregar um formulário na memória sem exíbí-lo usamos o evento Load . Sintaxe:
Private Sub Form_Load( )
Private Sub MDIForm_Load( )
O evento Load é usualmente utilizado par incluir o código de inicialização do formulário . ( carregar combos , definir variáveis usadas no formulário ,etc...).
O evento Load ocorre depois do evento Initialize.
 Lembre-se:
 Lembre-se:
Para descarregar um formulário usamos o evento Unload. Quando o formulário for recarregado o conteúdo de todos os controles serão reinicilizados. A sua sintaxe é:
Private Sub object_Unload(cancel As Integer)
| Parte | Descrição | 
| Object | No caso o formulário a ser removido. | 
| Cancel | Inteiro que determina se o formulário será removido. Se Cancel for igual a 0 o formulário é removido caso contrário não. | 
 Lembre-se :
 Lembre-se :  
Nota: Voce sabe o que o evento QueryUnload ?
| O evento QueryUnload ocorre antes de um
        formulário ou aplicação encerrar. Quando um objeto
        MDIForm é encerrado este evento ocorre primeiro para o
        formulário MDI e então para todos os formulários MDI
        Child.  Se o evento QueryUnload não for cancelado ,
        o evento Unload ocorre primeiro para todos os
        formulários e então para o formulário MDI.  Sua
        sintaxe é: Private Sub Form_QueryUnload(cancel As Integer, unloadmode As Integer) Private Sub MDIForm_QueryUnload(cancel As Integer, unloadmode As Integer) | 
Para esconder um formulário sem descarregá-lo da memória usamos o evento HIDE. A sintaxe é :
Object.Hide
Vejamos um resumo das tarefas envolvendo os eventos discutidos:
| 
		Tarefa | 
		Método
        ou função | 
| Carregar um formulário na
        memória, mas não exibi-lo | Use o comando LOAD, ou faça uma
        referencia ou a uma propriedade ou controle no
        formulário | 
| Carregar e exibir um formulário | Use o método SHOW | 
| Exibir um formulário carregado | Use o método SHOW | 
| Esconder um formulário | Use o método HIDE | 
| Esconder um formulário e
        descarrega-lo da memória | Use o comando UNLOAD | 
Vejamos um exemplo de utilização dos eventos mencionados, em um procedimento que inicia um aplicativo:
| Sub
        Main() 
		     Load
        frmPrincipal       Carrega
        para a memória o Formulário principal 
		     Load
        frmRegistro        Carrega
        para a memória o  Formulário de registro 
		      
		Define
        que o formulário será exibido maximizado 
		     frmPrincipal.WindowState
        = vbMaximized 
		     frmPrincipal.Show     
        Exibe o formulário End Sub | 
 Lembre-se :
 Lembre-se :
| Constante | Descrição | 
| vbAppTaskManager (3) | O gerenciador de Tarefas do Windows esta fechando a aplicação. | 
| vbAppWindows (2) | Fechamento da sessão atual do Windows. | 
| vbFormCode (1) | O método Unload foi invocado pelo código | 
| vbFormControlMenu (0) | O usuário escolheu o comando Close do menu Box de um formulário, ou clicou o botão X. | 
| vbFormMDIForm (4) | O formulário MDI child esta fechando pois o formulário MDI form esta sendo fechado. | 
| vbFormOwner (5) | O proprietário do formulário está fechado. | 
Carregando, Exibindo e Escondendo um formulário
Posicionar o seu formulário ficou mais fácil a partir da versão 5.0 do VB. Para centralizar um formulário na Versão 3.0 e na versão 4.0 usávamos o código abaixo , geralmente no evento Load do form.
| Left = (Screen.Width - Width )  / 2 Top = (Screen.Height - Height ) / 2 | 
A posição inicial pode ser facilmente configurada através das seguintes propriedades:
0 - Manual  (voce define a posição inicial
através das propriedades Top e Left.)
1 -
Center Screen (o
formulário aparece no centro da tela.)
2 -
Center Owner (O
formulário aparece no centro da janela do qual ele é exibido.)
3 -
Windows Default (O
formulário aparece na posição padrão.)
Além disso podemos configurar também se o formulário será exibido Maximizado , minimizado ou na forma normal. Para isto usamos propriedade WindoState , assim:
| 0 - Normal 1 - Minimizado 2 - Maximizado 
 | 
Coleções de Formulários
Uma coleção é um agrupamento de itens relacionados. O VB possui a coleção Forms que é composta por todos os formulários da aplicação. Através da coleção forms podemos rastrear múltiplos formulários.
Cada formulário em nossa aplicação possui uma coleção de controles embutida , e , você pode usar a coleção de controles em tempo de execução para ter acesso aos controles em um formulário sem precisar saber o nome de cada controle ou mesmo o tipo do controle. Tudo já esta pronto , você não precisar declarar nada , pois o VB monta e mantêm a coleção enquanto você desenha o formulário : incluindo e/ou excluindo controles do mesmo.
Aonde você pode usar toda esta teoria ??? Bem , que tal na entrada de dados usando formulários !!! Assim você pode escrever uma rotina genérica que pesquise a coleção de controles procurando por controles relacionados com os dados que você quer usar e alterar suas propriedades.
Você pode acessar a coleção de controles através da propriedade Controls de um formulário. Esta propriedade é um vetor (array) de variáveis objeto , onde cada elemento do vetor é um controle; o elemento 0 é o primeiro controle , o elemento 1 , o segundo , e por ai vai...
| 
 | 
Assim se tivermos duas caixas de texto (TextBox) teremos:
Form1.Controls(0).text = " Controle 0 "
Form1.Controls(1).text = " Controle 1
 Lembre-se :
 Lembre-se :
| Public
        formularios As New Collection Private Sub Command1_Click() Dim NovoForm As New Form1 Static intnumero As Integer intnumero = intnumero + 1 NovoForm.Caption = "Formulário # " & intnumero NovoForm.BackColor = QBColor(intnumero) formularios.Add NovoForm NovoForm.Show End Sub | 
Neste código primeiro um objeto da coleção formulários e no evento Click do botão de comando declaramos a variável NovoForm do tipo Form1 usando a palavra New , isto criará uma nova instância de form1. Definimos as propriedades Caption e BackColor para cada instância afim de diferenciar os formulários. Abaixo o resultado quando o usuário clica no botão - Criar Novo Formulário.

O novo formulário é uma cópia de form1 e essa nova instância é adicionada a coleção formulários.
Para acessar os formulários via coleção Forms podemos usar o seguinte código:
| Dim I as
        integer For I = 0
        To formularios.Count | 
Para acessar os controles de um formulário usamos a coleção Controls. Assim para esconder todos os controles de um formulário , fazemos:
| For
        Each Control in Form1.Controls Control.Visible = False Next Control | 
Assim , para descarregar todos os formulários de uma aplicação podemos usar o seguinte código:
For I = 0 To
formularios.Count-1
    unload Forms(I)
Next I
Ou, podemos usar o código abaixo em uma função para saber se determinado formulário esta carregado ou não:
| Private
        Function ProcuraForm(ByVal form_name As String) As Form Dim i As Integer Set ProcuraForm = Nothing ' Procura pelos forms carregados. For i = 0 To Forms.Count - 1 If Forms(i).Name = form_name Then 'se encontramos retorna o form. Set ProcuraForm = Forms(i) Exit For End If Next i End Function | 
MDIForm e MDI Child
Um MDI (Multiple-document-interface) form é uma janela que atua como um pando de fundo de uma aplicação e é o container para os formulários que têm a propriedade MDI Child definida como True.
Uma aplicação pode ter somente um objeto MDIForm e muitos formulários MDI Child .Se um formulário MDI tiver um menu o menu do formulário MDI Child irá substituí-lo quando estiver ativo. Ao minimizar um formulário MDI ele será exibido como um ícone dentro do MDIForm. Veja figuras abaixo:
|  |  |  | 
| MDIForm | MDI Child | Os ícones do MDI e MDI Child | 
Ao executar o projeto o MDI Form exibe o seu menu. Quando ativamos o MDI Child o menu do MDI Form é substituido pelo do MDIChild.
|  |  | 
| MDIForm com menu | MDI Child ativado - o seu menu substitui o do MDIForm | 
 Lembre-se :
Lembre-se :
| For Each
        Control in MDIForm1.Controls Control.Visible = False Next Control | 
Desabilitando o botão Fechar (Close - X ) via código
Podemos desabilitar o X do botão Fechar. Vamos fazer este serviço usando uma API, veja abaixo:
| Private Declare Function DeleteMenu
        Lib "user32" (ByVal hMenu As Long, ByVal
        nPosition As Long, ByVal wFlags As Long) As Long
 
 | 
Ao executar o projeto devemos obter o seguinte
resultado:

Acessando controles de um formulário a partir de outro formulário
Acessar os controles de um formulário a partir de outro formulário é uma tarefa muito simples , é só você informar o nome do formulário antes do nome do controle que quer acessar. Vamos supor que você tenha dois formulários : form1 e form2 e que no formulário form1 você tenha um controle Text1 e no formulário um outro controle Text1.
Suponha que você esteja com o formulário form1 carregado , para acessar o controle Text1 do formulário form1 fazemos:
msgbox text1.text ou msgbox me.text1.text
Para acessar o controle Text1 do formulário form2 que não esta carregado fazemos:
msgbox form2.text1.text
A mesma regra vale quando você quer alterar as propriedades de algum controle presente em outro formulário.
Obs: Se o formulário form2 não estiver carregado o VB irá carregá-lo acessar ou alterar as propriedades dos controles mas não vai exibir o formulário ; você verá as mudanças somente quando carregar o formulário.
- Minimizando todos os formulários :
copie o código abaixo em um módulo no seu projeto e chame a função - MinimizarForms()
| public sub MinimizarForms()
      dim objTemp as object
      for each objTemp in forms
           objTemp.windowstate = 1
      next
end sub | 
- Descarregar todos os formulários:
Copie o código abaixo no evento Query_Unload do seu formulário
| dim ret as object for each ret in forms unload ret set ret = nothing next | 
Agora acabei ... Até mais ver

| Veja os 
    Destaques e novidades do SUPER DVD Visual Basic 
(sempre atualizado) : clique e confira ! Quer migrar para o VB .NET ? 
 Quer aprender C# ?? 
 Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? | 
  Gostou ?   Compartilhe no Facebook
Compartilhe no Facebook
  
 Compartilhe no Twitter
 
Compartilhe no Twitter 
Referências: