Neste tutorial vamos mostrar como podemos criar uma aplicação usando a linguagem VB .NET para deslocar a entrada de texto do usuário ao estilo de um anúncio de letreiro. |
Este tutorial é dirigido aos iniciantes da linguagem VB .NET e nele vamos criar
um programa que permitirá que você digite o texto e em seguida, após clicar em
um botão, o texto irá rolar até que o programa seja fechado.
Depois de aprender o básico, existem maneiras mais otimizadas de codificação
(multi threading) que podem ser incorporadas a este programa para torná-lo mais
estável e fácil de usar.
Primeiro, adicionamos dois rótulos (Label), uma
caixa de texto(TextBox) e um botão(Button).
Um dos rótulos é onde o deslocamento irá ocorrer, e o outro é usado apenas para
informar o usuário para inserir o texto na caixa de texto.
Recursos usados
Visual Studio 2013 Express for Windows desktop
Deslocando o texto - versão 1
Abra o Visual Studio 2013 Express for Windows desktop e clique em New Project;
Selecione a linguagem VB .NET, o template Windows Forms Application, informe o nome VBNET_Scroll_Texto e clique em OK;
No formulário Form1.vb inclua os seguintes controles:
Label - lblLetreiro , BorderStyle = Fixed3D, AutoSize = false
Button - btnRolarTexto
TexBox - txtTexto
Disponha os controles conforme o leiaute da figura abaixo:
Agora vamos definir o código abaixo no formulário form1.vb:
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
btnRolarTexto.Enabled = False
End Sub
Private Sub txtTexto_TextChanged(sender As Object, e As EventArgs) Handles txtTexto.TextChanged
If txtTexto.Text.Trim() = "" Then
btnRolarTexto.Enabled = False
Else
btnRolarTexto.Enabled = True
End If
End Sub
Private Sub btnRolarTexto_Click(sender As Object, e As EventArgs) Handles btnRolarTexto.Click
btnRolarTexto.Enabled = False
IniciarRolagemDoTexto()
End Sub
Private Sub IniciarRolagemDoTexto()
Dim sb As New System.Text.StringBuilder(txtTexto.Text & " ")
Do
Dim ch As Char = sb(sb.Length - 1)
sb.Remove(sb.Length - 1, 1)
sb.Insert(0, ch)
lblLetreiro.Text = sb.ToString()
lblLetreiro.Refresh()
System.Threading.Thread.Sleep(500)
Loop
End Sub
End Class
|
No código acima temos que:
1- No evento Load do formulário desabilitamos o botão para rolar o texto
2- No evento TextChanged da caixa de texto qualquer alteração irá habilitar o botão para rolar o texto
3- No evento Click do botão btnRolarTexto chamamos a rotina IniciarRolagemDoTexto
4- Na rotina IniciarRolagemDoTexto temos:
A classe StringBuilder , ela faz parte do namespace System.Text ; então a classe System.Text.StringBuilder pode ser usada para modificar uma string sem que seja necessário criar um novo objeto. Por exemplo a concatenação de strings em um loop pode ser uma destas situações onde o uso de StringBuilder pode melhorar muito o desempenho do seu código.
Podemos pensar no objeto StringBuilder como um buffer dinâmico que pode conter uma String com a habilidade de aumentar seu tamanho a partir do zero até a capacidade final do buffer. O tamanho do buffer vai crescendo a medida que o tamanho dos caracteres presentes no objeto StringBuilder vai aumentando.
O método Sleep(n) da thread - interrompe a thread imediatamente, onde n é o valor em milisegundos da pausa. No nosso exemplo usamos uma pausa de 500 milisegundos.
O efeito visual é que o texto se desloca na Label como em um letreiro de anúncios.
Deslocando o texto - versão 2
Nesta versão vamos usar o controle Timer para obter o mesmo resultado.
No menu PROJECT clique em Add Windows Forms e aceite o nome padrão Form2.vb.
No formulário form2.vb inclua os seguintes controles:
Disponha os controles conforme o leiaute abaixo:
No formulário form2.vb inclua o código a seguir :
Public Class Form2
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
lblLetreiro1.Text = Mid(lblLetreiro1.Text, Len(lblLetreiro1.Text)) & Mid(lblLetreiro1.Text, 1, Len(lblLetreiro1.Text) - 1)
lblLetreiro1.ForeColor = Color.White
lblLetreiro1.BackColor = Color.Red
End Sub
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
lblLetreiro2.Text = Mid(lblLetreiro2.Text, 2, Len(lblLetreiro2.Text)) & Mid(lblLetreiro2.Text, 1, 1)
lblLetreiro2.ForeColor = Color.White
lblLetreiro2.BackColor = Color.Red
End Sub
Private Sub btnLetreiro1_Click(sender As Object, e As EventArgs) Handles btnLetreiro1.Click
Timer1.Enabled = True
lblLetreiro1.Text = txtTexto.Text
End Sub
Private Sub btnLetreiro2_Click(sender As Object, e As EventArgs) Handles btnLetreiro2.Click
Timer2.Enabled = True
lblLetreiro2.Text = txtTexto.Text
End Sub
End Class
|
No código acima temos que;
1- No evento Tick do controle Timer1 estamos manipulando o texto que é atribuído a Label usando as funções Mid e Len
O componente Timer presente no VB.NET não é igual ao timer das versões anteriores. No VB6 o controle timer apresentava a seguinte peculiaridade:
Você podia atribuir o valor zero à propriedade Interval do controle para desativá-lo e isto equivale a definir a sua propriedade enabled igual a False
Mas a propriedade enabled podia estar definida como True e ainda assim o controle ficaria desativado se a propriedade Interval fosse definida como zero.
No VB.NET você não pode mais atribuir o valor zero a propriedade Interval . Para ativar o controle deve definir enabled = True.
A função Mid retorna uma string contendo um número específico de caracteres de uma string.
Retorna uma string contendo um número definido de caracteres. Sintaxe: Mid(String , inicio, tamanho)
Exemplo: a= Mid("Macoratti", 4,3) => a= "ora"
A função Len retorna o comprimento(tamanho) de uma string.
Ex: a = len("Macoratti") => a = 9
2- No evento Tick do controle Timer2 estamos manipulando o texto que é atribuído a Label usando as funções Mid e Len
3- No evento Click do botão de comando btnLetreiro1 habilitamos o Timer1 e atribuímos o texto à Label lblLetreiro1
4- No evento Click do botão de comando btnLetreiro2 habilitamos o Timer2 e atribuímos o texto à Label lblLetreiro2
Deslocando o texto - versão 3
Nesta versão vamos usar o controle Timer para obter o mesmo resultado e vamos rolar o texto na caixa de texto sem usar Labels.
No menu PROJECT clique em Add Windows Forms e aceite o nome padrão Form3.vb.
No formulário form2.vb inclua os seguintes controles:
Disponha os controles conforme o leiaute abaixo:
No formulário form3.vb inclua o código a seguir :
Public Class Form3
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
txtTexto.Text = RolarTexto(txtTexto.Text)
End Sub
Public Function RolarTexto(ByVal Texto As String)
Dim Str1 As String = Texto.Remove(0, 1)
Dim Str2 As String = Texto(0)
Return Str1 & Str2
End Function
Private Sub btnIniciarRolagem_Click(sender As Object, e As EventArgs) Handles btnIniciarRolagem.Click
Timer1.Start()
End Sub
End Class
|
No código acima temos que:
1- No evento Tick do controle Timer1 chamamos a rotina RolarTexto() a cada 0.4 segundos passando o texto informado no controle TextBox
2- O método RolarTexto() usa o método Remove da classe TextBox para remover um caractere do texto e coloca o caractere removido na frente do texto invertendo a ordem
3- No evento Click do botão btnIniciarRolagem iniciamos o controle Timer1
Nota: Para habilitar a execução dos formulários definindo o formulário inicial, clique com o botão direito do mouse sobre o projeto e a seguir clique em Properties. Selecione a guia Applications e em Startup Form escolha o formulário que irá iniciar quando o projeto for executado.
Pegue o projeto completo aqui : VBNET_Scroll_Texto.zip
João 6:14 Vendo, pois, aqueles homens o sinal que Jesus operara, diziam: este é
verdadeiramente o profeta que havia de vir ao mundo.
João 6:15 Percebendo, pois, Jesus que estavam prestes a vir e levá-lo à força
para o fazerem rei, tornou a retirar-se para o monte, ele sozinho.
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#