usando formulários no vb

13
Usando Formulários no VB 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.

Upload: geofrany-cardozzo

Post on 03-Jul-2015

198 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Usando Formulários no VB

Usando Formulários no VB

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 - None1 - Fixed Single2 - Sizable3 - Fixed Dialog4 - Fixed Toolwindow5 - 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.

Page 2: Usando Formulários no VB

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

Page 3: Usando Formulários no VB

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 :

Quando o método Show exibe um formulário não modal , o código subsequente é executado . 

Quando Show exibe um formulário modal o código subsequente não é executado até que o formulário seja descarregado ou escondido, e nenhuma entrada quer via teclado ou mouse pode ocorrer exceto nos objetos do formulário .

Um formulário MDIForm não pode ser modal. O formulário inicial de uma aplicação é automaticamente exibido após o seu

evento Load ser invocado.

Para carregar um formulário na memória sem exíbí-lo usamos o evento Load .  Sintaxe:

Private Sub Form_Load( )

Page 4: Usando Formulários no VB

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:

Quando você fizer referência a uma propriedade de um formulário não carregado , o mesmo será automaticamente carregado , mas não exibido , a não ser que a propriedade MDIChild estiver definida como True. 

Se um objeto MDIForm não estiver carregado e um formulário MDI Child for carregado , ambos serão automaticamente carregados e exibidos.

Ao criar procedures para eventos relacionados , como Activate, GotFocus , Paint e Resize , esteja ciente que as ações não irão conflitar e nem causar efeitos recursivos.

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 :

Se Cancel for definido como diferente de zero o formulário não será removido , mas outros eventos não serão interrompidos. Ex: Sair do Windows.

O evento QueryUnload ocorre antes do evento Unload.  O evento Unload ocorre antes do evento Terminate.

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)

Page 5: Usando Formulários no VB

Para esconder um formulário sem descarregá-lo da memória usamos o evento HIDE. A sintaxe é :Object.Hide

Quando um formulário é escondido ( Hide ) ele é removido da tela e sua propriedade Visible é definida como False. Os controles de um formulário escondido não estão acessíveis ao usuário , mas, estão disponíveis para a aplicação que esta sendo executada.

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 :

Ao usar o método Hide para esconder um formulário ele não é removido da memória. Se você usar o método Show novamente todos os controles do formulário estarão exibindo os mesmos valores.

Para remover um formulário da memória use o método Unload. Para conservar valores dos controles você pode salvá-los em variáveis que poderão ser acessadas novamente quando o formulário for carregado novamente.

Usar o comando End não é uma boa prática pois encerra sua aplicação , e , nem sempre libera a memória usada.

Quando voce descarrega um formulário usando o método Unload , os eventos QueryUnload e Unload do formulário são disparados. Para cancelar a descarga do formulário basta definir Cancel = -1 . Para saber

Page 6: Usando Formulários no VB

como o formulário esta sendo descarregado você pode checar o valor de UnloadMode: (Veja abaixo)

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.

Page 7: Usando Formulários no VB

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 :

Você pode usar a coleção Forms para interagir com todos os formulários criados na aplicação 

Existe um tipo especial de formulário - MDI Form - que contém outros formulários chamados MDI Childs. Um Form MDI é criado através do Menu Project|Add MDI Form e um MDI Child é criado definindo a propriedade MDIChild do formulário como True

Você pode criar múltiplas instâncias de um formulário via código através da palavra chave New . Veja código abaixo:

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.ShowEnd 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

Page 8: Usando Formulários no VB

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   Debug.Print Forms(I).CaptionNext I

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 = FalseNext 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 FormDim 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

Page 9: Usando Formulários no VB

Next iEnd 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 :

UM objeto MDIForm pode conter somente: Menu , PictureBox , Toolbar e controles que tiverem a propriedade Align.

Para inserir outros controles neste tipo de formulário você deve inserir um controle picture box e então inserir neste controle os demais controles. (ãããã...? )

Um formulário MDIForm não pode ser modal.

Page 10: Usando Formulários no VB

Os formulários MDI Child são independentes do MDIForm , mas sempre estarão contidos nele.

Podemos acessar uma coleção de controles em um formulário MDIForm usando a coleção Controls. Assim para esconder todos os controles em um formulário MDIForm , fazemos:

For Each Control in MDIForm1.Controls   Control.Visible = FalseNext 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:

Insira este código no formulário padrão 

Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As LongPrivate Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, ByVal bRevert As Long) As Long

Private Const MF_BYPOSITION = &H400&

Private Sub Form_Load()   '// desabilita o botão fechar   RemoveMenusEnd Sub

Private Sub RemoveMenus()  Dim hMenu As Long  hMenu = GetSystemMenu(hWnd, False)  DeleteMenu hMenu, 6, MF_BYPOSITIONEnd Sub

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:

Page 11: Usando Formulários no VB

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 nextend 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 = nothingnext

Agora acabei ... Até mais ver

Copyright (c) 2001 - José Carlos Macoratti e amigos (Toda a Web)

 

]