SOBRE O AUTOR

NAVEGAÇÃO

FINANÇAS

SETOR ELÉTRICO

INFORMÁTICA

MISCELÂNEA

Clique aqui para ver meus bookmarks
 
INFORMÁTICA
Visual Basic
Introdução
Iniciando
Controles
Menus
Arquivos
Programação
Gráficos
Erros
Bancos de Dados
Dicas & Truques
Funções, Comandos
Eventos do VB
Downloads
InfoLinks
Delphi
 
SOBRE O AUTOR
Curriculum Vitae
Estante de Livros
Publicações
Painel ICQ
 
NAVEGAÇÃO
Página Inicial
Mapa do Site
Novidades
Busca no Site
Comentários
Livro de Visitas
 
FINANÇAS
As 500 mais - BR
Análise de Projetos
Contabilidade
Cotações Brasil
Cotações EUA
Estratégia
Gráficos Online
Glossário Financeiro
StockLinks
 
SETOR ELÉTRICO
EletroLinks
Papers
Privatização
 
MISCELÂNEA
Cinema
Curitiba
Humor
Links Amigos
Star Trek
 

Enviar e-mail Alvaro


WallStreet Dividend Award




©1998/1999
Alvaro A. de Almeida


  CAPÍTULO 2
USANDO CONTROLES - PARTE a


Capítulo 1 - Parte 2 1 2a 2b 3 4 5 6 7 8 9 10 11 12 Capítulo 2 - Parte 2

É sempre bom estabelecer convenções de nomes para objetos do Visual Basic, sob risco de não se saber, no meio de um projeto mais complicado, qual o tipo de um objeto cujo nome é, por exemplo, "dados". A tabela 3 a seguir apresenta alguns exemplos para os controles mais comuns.  

Tabela 3  

Controle Nome em Português Prefixo Exemplo
Form formulário frm frmAbrir
Check Box Caixa de Verificação chk chkLeitura
Combo Box Caixa "Combo" cbo cboPortuguês
Command Button Botão de Comando cmd cmdCancelar
Data Dados dat datLivros
Directory List Box Caixa de Diretório dir dirFontes
Drive List Box Caixa de Drives drv drvAlvo
File List Box Caixa de Arquivos fil filArquivos
Frame Quadro fra fraLíngua
Grid Grade grd grdPreços
Horizontal scroll bar Barra de Rolagem Horizontal hsb hsbVolume
Image Imagem img imgÍcone
Label Rótulo lbl lblMensagem
Line Linha lin linVertical
List Box Caixa de Lista lst lstCEP
Menu Menu mnu mnuSalvar
OLE OLE ole oleObjeto
Option Button Botão de Opções opt optFrancês
Picture Box Caixa de Figuras pic picDesenho
Shape Forma (geométrica) sha shaCírculo
Text Box Caixa de Texto txt txtEntrada
Timer Temporizador tmr tmrAlarme
Vertical Scroll Bar Barra de Rolagem Vertical vsb vsbTaxa

 


O BLOCO DE NOTAS BLOCO.VBP

Processamento de texto é uma das funções básicas dos computadores e o VB oferece algumas ferramentas poderosas relacionadas a texto. Nosso objetivo inicial é projetar um Bloco de Notas simplificado que funcione a partir da caixa de textos do Visual Basic e que disponha dos seguintes recursos:

  • Edição básica: inserção e exclusão de texto, movimentação do cursor, etc.;
  • Seleção de texto;
  • Cortar, copiar e colar textos.

Futuramente, nosso Bloco de Notas se transformará em um editor mais poderoso, capaz de abrir e salvar arquivos do tipo texto e de funcionar também a partir de menus.

O Bloco de Notas usará as seguintes propriedades de controles do Visual Basic:

  • Text: string que contém o texto em uma Caixa de Texto. O tamanho máximo é 64 kBytes;
  • Enabled: se for true, o controle é disponível;
  • Default: se for true, o controle recebe o foco quando o formulário for ativado;
  • SelText: string que contém o texto selecionado em uma Caixa de Texto.

Além disso, vamos precisar do método SetFocus, cuja sintaxe é a seguinte:   Objeto.Setfocus

O "Foco" é uma propriedade comum a todos os controles do VB. Apenas um objeto pode ter o foco de cada vez e apenas objetos visíveis podem receber o foco. Geralmente, o objeto que tem o foco é diferenciado dos outros por uma legenda ou título realçado. Em tempo de execução, o usuário define o foco clicando sobre os objetos ou usando a tecla TAB. O método Setfocus também define o foco para um objeto em tempo de execução, mas de maneira automática. Se ocorrer uma tentativa de definir o foco em um objeto invisível, um erro de execução será gerado.
 

a) Criando a interface de BLOCO.VBP
Inicie um novo projeto e desenhe, no formulário, uma Caixa de Texto e quatro botões de comando, conforme ilustrado na figura 8 a seguir.  

Figura 8 - Objetos de Bloco.vbp

Figura 8 - Objetos de BLOCO.VBP  

b) Definindo as propriedades
Defina as propriedades dos controles de acordo com a tabela a seguir.  

Tabela 4  

OBJETO PROPRIEDADE DEFINIÇÃO
formulário WindowState Maximized
Caixa de Texto Name txtBloco
  Text (Vazio)
  Multiline True
  ScrollBars Vertical
Botão de Comando 1 Name cmdCortar
  Caption &Cortar
Botão de Comando 2 Name cmdColar
  Caption Co&lar
Botão de Comando 3 Name cmdApagar
  Caption &Apagar
Botão de Comando 4 Name cmdSair
  Caption &Sair

 

Note que a caixa de textos suporta textos com várias linhas, por causa da propriedade "Multiline" e tem uma barra de paginação vertical. Esta barra de paginação não é um objeto adicional, mas faz parte da caixa de textos. O VB cuida de toda a automação necessária para a rolagem do texto. A característica de edição em linhas múltiplas seria perdida caso definíssemos também uma barra de paginação horizontal para a caixa. É por esta razão que estamos usando apenas uma barra de paginação vertical.

c) Escrevendo o código
Neste aplicativo iremos precisar de uma variável Public, ou seja, uma variável que seja "vista" por todas os procedimentos de todos os objetos do aplicativo. Estas variáveis só podem ser declaradas dentro de módulos. Portanto, a primeira coisa que devemos fazer é inserir um módulo, o que pode ser feito no menu Insert|Module. A seguir, escreva a seguinte linha dentro da seção "General - Declarations":
 

Public CortaTexto As String
 

O primeiro botão a ser implementado é o "Apagar". Este botão apagará todo o texto da caixa de texto, indiscriminadamente. Tudo o que temos a fazer é "anular" a propriedade text da caixa de textos. Para tanto, dê dois cliques sobre o botão apagar e escreva o seguinte código:
 

Private Sub cmdApagar_Click()
    txtBloco.Text = ""
    txtBloco.SetFocus
End Sub

Após apagar o texto, o que é feito na primeira linha, devemos jogar o foco novamente na caixa de textos, pois após clicar o botão "Apagar" o foco ficou com ele. Seria desagradável se o usuário tivesse que clicar na caixa de textos toda vez que usasse o botão "Apagar". O computador não se importa de prestar este pequeno favor.

O botão "Sair" também é fácil e o código é idêntico ao do aplicativo Borbolet.vbp, ou seja:

Private Sub cmdSair_Click()
    End
End Sub

Os procedimentos para os botões "Cortar" e "Colar" requerem um raciocínio adicional. O que desejamos fazer é cortar um trecho de texto, provavelmente, mas não necessariamente, para ser colado em algum outro lugar. Logo, será necessário armazenar o texto recortado em alguma variável temporária, o que será conseguido com a variável CortaTexto. Clique sobre o botão "Cortar" e escreva o seguinte trecho:

Private Sub cmdCortar_Click()
    CortaTexto = txtBloco.SelText
    txtBloco.SelText = ""
    txtBloco.SetFocus
End Sub

A primeira linha armazena o conteúdo do texto selecionado na variável CortaTexto. A segunda apaga o texto selecionado, dando um efeito de que o texto foi recortado. Finalmente, a última linha joga o foco novamente na caixa de textos. A prodecure para o botão "Colar" atua de modo inverso a "Cortar", ou seja, devemos recuperar o texto armazenado em CortaTexto e atribuí-lo à propriedade SelText da caixa de textos, conforme descrito a seguir.
 

Private Sub cmdColar_Click()
    txtBloco.SelText = CortaTexto
    txtBloco.SetFocus
End Sub

O nosso "mini-editor" já funciona bem, mas algumas melhorias são necessárias. Primeiro, caso o usuário queira redimensionar o formulário, os botões e a caixa de texto não o acompanharão. Este problema pode ser contornado por meio do evento Resize do formulário. Este evento ocorre sempre que o formulário é redimensionado, seja por meio do mouse, seja por meio dos ícones de maximizar e minimizar. Resize também ocorre quando o formulário é exibido pela primeira vez, na entrada do programa. O que devemos fazer é ajustar a caixa de texto automaticamente no formulário cada vez que este for redimensionado, o que pode ser conseguido com alguns cálculos (estes cálculos são comuns em procedures de dimensionamento).

Clique o formulário duas vezes, em tempo de projeto, e procure o evento Resize na caixa "Drop-Down" com o nome "Proc:". Nesta procedure, escreva o código abaixo.

Private Sub Form_Resize()
    If frmBloco.Width > 50 then
        txtBloco.Top = 0
        txtBloco.Left = 0
        txtBloco.Width = ScaleWidth
        txtBloco.Height = ScaleHeight - cmdCortar.Height
        cmdCortar.Left = 0
        cmdColar.Left = cmdCortar.Width
        cmdApagar.Left = 2 * cmdCortar.Width
        cmdSair.Left = ScaleWidth - cmdSair.Width
        cmdCortar.Top = ScaleHeight - cmdCortar.Height
        cmdColar.Top = ScaleHeight - cmdColar.Height
        cmdApagar.Top = ScaleHeight - cmdApagar.Height
        cmdSair.Top = ScaleHeight - cmdSair.Height
    End If
End Sub
 

Estudando a procedure de Resize com cuidado você verá que estamos simplesmente alterando valores de propriedades dos controles (em VB isto é feito com muito mais freqüência do que você pode imaginar). As primeiras quatro linhas ajustam a caixa de textos propriamente dita, de forma que sobre espaço em baixo para os botões (é por isso que a altura do botão Cortar - cmdCortar.Height - é descontada). As linhas seguintes ajustam a posição de todos os botões, atuando sobre as propriedades Left e Top.

Como exercício, fica a tarefa de descobrir qual a finalidade do comando If ... Then.  


Copyright © 1998/1999 - Desenvolvido por Alvaro Augusto de Almeida (isso significa que você pode manter cópias para uso particular, mas não para divulgação). Dúvidas e sugestões serão bem vindas.   

     
Vai para a página inicial

Acessos desde 30.01.99: 

Enviar e-mail para Alvaro