VB 2005 - Tarefas básicas com formulários
1- Interceptando entradas do teclado
Você possui um formulário que precisa observar certos eventos de pressionamento de teclas para em seguida processá-los antes que qualquer controle no formulário reconheça estas teclas.
Uma forma de contornar este problema é usar a propriedade KeyPreview do formulário para controlar o acesso aos eventos KeyDown, KeyUp e KeyPress do formulário.
Neste caso é mais fácil mostrar do que falar...
Crie um novo projeto no VB 2005 Express do tipo Windows Forms e inclua no formulário padrão , form1.vb , o controle TextBox chamado TextBox1.
A seguir defina a propriedade KeyPreview do formulário para o valor igual a True e inclua o seguinte código no formulário:
Private
Sub Form1_KeyDown(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If (e.KeyCode = Keys.F5) Then MessageBox.Show("Formulário : pressionou F5") e.Handled = True End Sub Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown If (e.KeyCode = Keys.F5) Then MessageBox.Show("TextBox : pressionou F5") End Sub |
Vamos agora efetuar os seguintes testes:
1 - Execute o projeto e pressione a tecla F5.
Você receberá somente a mensagem : "Formulário : pressionou F5"
2 - Comente a linha de código e.Handled = True e execute o projeto novamente.
Você deverá receber as duas mensagens : "Formulário : pressionou F5" e em seguida "TextBox : pressionou F5"
3- Agora defina a propriedade do formulário KeyPreview como sendo igual a False e execute o projeto.
Somente a mensagem : "TextBox : pressionou F5" será exibida
O comportamento padrão do formulário é ignorar todas entradas de teclas sempre que um controle no formulário tiver o foco.
Para alterar este comportamento basta definir a propriedade KeyPreview para True. Ao fazer isto o programa envia todas as entradas do teclado primeiro para o tratador de eventos do formulário e em seguida as envia para o controle ativo.
A interrupção do processo a nível de formulário é feita pela definição da propriedade e.Handled como sendo igual a True nos eventos de tratamento do formulário.
2- Interagindo com os controles do formulário
A classe Form mantém uma coleção de todos os controles existentes no formulário e você pode interagir com estes controles percorrendo a coleção , verificando qual o controle você deseja acessar/alterar e efetuar a sua ação.
Vejamos um exemplo:
Crie um novo projeto do tipo Windows Application e inclua no formulário padrão , form1.vb, três controles labels e dois controles Button conforme a figura abaixo:
Agora inclua o código abaixo no evento Click do botão Colorir
Private Sub btnColorir_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
btnColorir.Click ' ----- Define a cor de fundo de todas a labels como sendo vermelha AtualizaCorLabels(Color.Red) End Sub |
Inclua também este trecho de código no evento click do botão Normal:
Private Sub btnNormal_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
btnNormal.Click ' ----- Define a cor de fundo de todas a labels como normal AtualizaCorLabels(SystemColors.Control) End Sub |
Para finalizar digite o código da rotina AtualizaCorLabels conforme a seguir:
Private Sub AtualizaCorLabels(ByVal cor As
Drawing.Color) ' ----- Percorre todos os controles procurando por Labels For Each Controle As Control In Me.Controls If (TypeOf Controle Is Label) Then Controle.BackColor = cor End If Next Controle End Sub |
Todos os controles do formulário aparecem na coleção acessada através da propriedade Controls do formulário. Por ser uma coleção padrão você pode percorre-la através de uma instrução For/Each.
Você também pode referenciar um controle pelo seu nome: Dim botao = Me.Controls ("btnNormal)
Para determinar o tipo de controle que você deseja procurar usamos a instrução TypeOf.
3- Centralizando um formulário
Para centralizar um formulário basta definir sua propriedade StartPosition como sendo igual a CenterScreen.
Para o obter o mesmo resultado via código faça o seguinte:
Me.Location
= New Point(( Screen.PrimaryScreen.Bounds.Width - Me.Width) / 2,
(Screen.PrimaryScreen.Bounds.Height - Me.Height) / 2)
4- Fazendo o formulário desaparecer aos poucos
Para obter o efeito de fazer o formulário desaparecer aos poucos até sumir ( fade out) podemos usar a propriedade Opacity do formulário:
Crie um novo projeto do tipo Windows Application e inclua no formulário padrão , form1.vb, um botão de comando.
A seguir inclua o seguinte código no evento Click do botão de comando:
Private Sub btnDesvanecer_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
btnDesvanecer.Click ' ----- Faz o formulário desvanecer Dim contador As Integer For contador = 90 To 10 Step -1 Me.Opacity = contador / 100 Me.Refresh() Threading.Thread.Sleep(60) Next contador Me.Close() End Sub |
5- Determinar se um controle em um formulário pode receber o foco
Para saber se um controle pode receber o foco você pode usar o método CanFocus() da
If (SeuControle.CanFocus() = True) Then
SeuControle.Focus() endif |
6- Fazendo o seu formulário aparecer sobre os demais
Se você deseja que um formulário específico apareça no topo sobre todos os demais formulários, não importando qual formulário esta selecionado, basta definir a propriedade TopMost do formulário como igual a True. |
7- Simulando um Clik em um botão via código
Para iniciar uma ação de Clicar em um botão usando o evento Click você pode usar o método PerformClick() do botão:
Button1.PerformClick() 8- Criando menus de contexto no formulário
Podemos criar menus de contexto no formulário usando o controle ContextMenuStrip.
Abra o VB 2005 Express e crie um novo projeto Windows Application e inclua no formulário um controle ContextMenuStrip nomeando-o menuAtalho conforme a figura abaixo.
Quando você incluir o controle no formulário será criado um menu temporário que você deve alterar informando suas opções. Inclua 3 itens no menu : Salvar Dados, Enviar Email e Sair.
A seguir selecione o formulário e altere a propriedade ContextMenuStrip para menuAtalho:
A seguir inclua o seguinte código referente as duas primeiras opções do menu:
Private
Sub Opção1ToolStripMenuItem_Click(ByVal
sender As System.Object,
ByVal e As System.EventArgs)
Handles Opção1ToolStripMenuItem.Click MsgBox("Salvar Dados") End Sub Private Sub EnviarEmailToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EnviarEmailToolStripMenuItem.ClickMsgBox("Enviar Email") End Sub |
Execute o programa e clique com o botão direito do mouse sobre o formulário para ver o menu de contexto e as opções criadas:
Até o próximo artigo VB.NET ...
José Carlos Macoratti