Este
projeto mostra como criar um efeito conhecido como rolagem de texto,
ou seja, ele permite que possamos fazer com que um texto seja gradualmente
exibido da direita para a esquerda.
Para
fazer este efeito, é necessário apenas um form, um controle
Timer e um controle Shape. Nenhum outro controle adicional é
necessário, pois o texto será exibido diretamente no
form. A figura 1 mostra o programa em ação.

Fig.
1 - Tela de exemplo do programa.
Para
criar este programa, você deve criar um novo projeto no Visual
Basic, o qual deve conter um form. Altere algumas de suas propriedades
de acordo com a tabela a seguir:
|
Propriedade |
Valor |
|
Name |
frmTextTimer |
|
AutoRedraw |
True |
|
BorderStyle |
3
- Fixed Double |
|
Caption |
Exibindo
texto com a ajuda do Timer |
|
Font |
Courier
New - Bold |
|
ForeColor |
&H000000C0&
(vermelho) |
|
ScaleMode |
4
- Character |
|
ShowInTaskBar |
True |
|
StarUpPosition |
2
- CenterScreen |
Depois
de definidas as propriedades do form, adicione um controle Timer,
e altere as propriedades como a seguir:
|
Propriedade |
Valor |
|
Name |
Timer1 |
|
Interval |
150 |
Em
seguida, adicione um controle Shape, definindo suas propriedades como
a seguir:
|
Propriedade |
Valor |
|
Name |
Shape1 |
|
BackStyle |
0
- Transparent |
|
Height |
1,062 |
|
Left |
2 |
|
Shape |
0
- Rectangle |
|
Top |
1,5 |
|
Width |
53 |
O
seu form ficará parecido com o da figura abaixo:

A
seguir estão os códigos do programa:
Na
seção de declarações gerais especificamos
as variáveis que serão utilizadas por todos os módulos:
[Seção de declarações gerais do form]
'Armazena o texto a ser exibido
Dim strTexto As String
'Armazena o número de caracteres a serem exibidos
Dim intTamanho As Integer
'Armazena o número total de caracteres que cabem na tela.
Dim intTamCaixa As Integer
'Indica a posição a partir da qual o texto é exibido
Dim intComeço As Integer
Através
do procedimento Form_Load, que ocorre quando um form é carregado
para ser exibido na tela, é preparado o texto a ser exibido,
permitindo que ele possa ser alterado mais tarde. Verificamos qual
o número de caracteres que cabem na tela. Como o ScaleMode
foi definido para caracter, usamos o tamanho do Shape1, que é
retornado em caraceteres, para saber o tamanho do texto.
Private Sub Form_Load()
'Cria o texto a ser exibido
strTexto = "Testando frase que rola na tela... "
strTexto = strTexto & "Que a Força esteja com você..."
'Verifica o número de caracteres que podem ser exibidos na
'tela. O tamanho é marcado pelo shape. Como a propriedade
'ScaleMode do form foi definida para 4 - caracter, o
'tamanho do shape indica o número de caracteres que podem
'ser exibidos.
intTamCaixa = Shape1.Width
'Tamanho do texto a ser exibido. Começa com 1 para mostrar
'somente o primeiro caracter.
intTamanho = 1
intComeço = 1
End Sub
O
evento a seguir pertence ao controle Timer, e é executado toda
vez que o controle Timer completa um intervalo. Neste caso, será
executado a cada 150 milisegundos. Dentro deste evento está
todo o código responsável pela exibição
do texto:
Private Sub Timer1_Timer()
Dim strNovoTexto As String
Dim strEspaços As String
Dim intNumEspaços As Integer
Me.Cls
'Adiciona 1 ao número de caracteres a serem exibidos
intTamanho = intTamanho + 1
'O número de caracteres não pode ultrapassar o número
'de caracteres permitidos na tela. Para isto verifica-se
'se o número de caracteres é superior ao tamanho da caixa
If intTamanho > intTamCaixa Then intTamanho = intTamCaixa
'Calcula o número de espaços necessários que serão
'adicionados ao início do texto, para que o texto
'role da direita para a esquerda.
intNumEspaços = intTamCaixa - intTamanho
'Se o começo do texto não é mais exibido, ou seja, uma
'parte já rolou para fora da tela, não haverão espaços
'no início do texto
If intComeço > 1 Then intNumEspaços = 0
'Se o número de espaços calculado for igual a 1, começa
'a cortar o começo do texto.
If intNumEspaços = 0 Then
intComeço = intComeço + 1
End If
'Verifica se já chegou ao final da string verificando
'o valor da variável intComeço.
If intComeço > Len(strTexto) Then
intTamanho = 1
intComeço = 1
End If
'Cria os espaços necessários para o início do texto
strEspaços = String(intNumEspaços, " ")
'Corta o texto
strNovoTexto = Mid(strTexto, intComeço, intTamanho)
'Junta os espaços com o texto.
strNovoTexto = strEspaços & strNovoTexto
'Posiciona para impressão. Utiliza-se as coordenadas
'X e Y do shape criado.
Me.CurrentX = Shape1.Left
Me.CurrentY = Shape1.Top
'Exibe o texto diretamente no form.
Me.Print strNovoTexto
End Sub
Este
pequeno projeto encontra-se disponível para download:
vb_project2.zip
- 3 Kb