1) O documento fornece instruções sobre como criar aplicativos no Microsoft Visual Basic 6.0, incluindo desenhar janelas, propriedades de objetos, variáveis, menus, salvamento de arquivos e métodos gráficos.
2) É apresentado um passo-a-passo para criar um programa simples que mostra uma mensagem quando um botão é clicado, servindo como exemplo inicial.
3) Vários exemplos de aplicativos são fornecidos, como uma calculadora, jogo da velha, bloco de notas, jogo da forca e
1) O documento fornece instruções sobre como criar aplicativos no Microsoft Visual Basic 6.0, incluindo desenhar janelas, propriedades de objetos, variáveis, menus, salvamento de arquivos e métodos gráficos.
2) É apresentado um passo-a-passo para criar um programa simples que mostra uma mensagem quando um botão é clicado, servindo como exemplo inicial.
3) Vários exemplos de aplicativos são fornecidos, como uma calculadora, jogo da velha, bloco de notas, jogo da forca e
1) O documento fornece instruções sobre como criar aplicativos no Microsoft Visual Basic 6.0, incluindo desenhar janelas, propriedades de objetos, variáveis, menus, salvamento de arquivos e métodos gráficos.
2) É apresentado um passo-a-passo para criar um programa simples que mostra uma mensagem quando um botão é clicado, servindo como exemplo inicial.
3) Vários exemplos de aplicativos são fornecidos, como uma calculadora, jogo da velha, bloco de notas, jogo da forca e
1) O documento fornece instruções sobre como criar aplicativos no Microsoft Visual Basic 6.0, incluindo desenhar janelas, propriedades de objetos, variáveis, menus, salvamento de arquivos e métodos gráficos.
2) É apresentado um passo-a-passo para criar um programa simples que mostra uma mensagem quando um botão é clicado, servindo como exemplo inicial.
3) Vários exemplos de aplicativos são fornecidos, como uma calculadora, jogo da velha, bloco de notas, jogo da forca e
Baixe no formato PDF, TXT ou leia online no Scribd
Fazer download em pdf ou txt
Você está na página 1de 110
Sumrio
PRIMEIROS PASSOS ______________________ 3
INCIO ___________________________________ 4 BARRA DE MENU E FERRAMENTAS _____________________ 5 ANATOMIA DE UMA JANELA _________________________ 10 MEU PRIMEIRO PROGRAMA ________________________ 11 Desenhar as janelas que se deseja usar ____________________11 Adaptar as propriedades dos objetos _____________________ 12 Escrever o cdigo para os eventos associados ______________ 16 EXEMPLO I - CALCULADORA ____________ 22 VARIVEIS _____________________________________ 26 EXEMPLO II - JOGO DA VELHA ___________ 33 DEPURAO ___________________________________ 39 QUADROS DE MENSAGEM __________________________ 40 EXEMPLO III - BLOCO DE NOTAS _________ 43 CRIANDO MENUS________________________________ 46 SALVANDO E ABRINDO ARQUIVOS ____________________ 56 MTODOS GRFICOS ____________________ 63 DESENHO DE PONTO _____________________________ 63 CORES _______________________________________ 66 LINHA ________________________________________ 67 CRCULOS _____________________________________ 72 CARREGANDO FIGURAS ___________________________ 75 EXEMPLO IV - JOGO DA FORCA __________ 78 EVENTO DO TECLADO ____________________________ 82 EVENTOS DO MOUSE _____________________________ 83 EXEMPLO V - CATLOGO ________________ 85 VARIVEIS COMPOSTAS E ARRAY ____________________ 87 CAIXAS DE DILOGO PADRO ______________________ 93 COMANDO DE IMPRESSO__________________________ 98 EXEMPLO VI - BANCO DE DADOS________ 100 CONTROLE DATA _______________________________ 100 LISTA DE EXERCCIOS __________________ 109 Pgina: 3 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 MICROSOFT VISUAL BASIC 6.0 PRIMEIROS PASSOS Vantagens: - Facilidade em alteraes e implementaes - Melhor Estruturao do cdigo Linguagens: - Turbo Pascal, Quick Pascal, Turbo C ++ e C/C ++ (Baseadas em Objetos) - Visual Basic (Orientada a Componentes - COM) O Visual Basic um padro de linguagem de programao baseada em objetos que qualquer pessoa pode aprender e utilizar, desenvolvendo rapidamente aplicativos visuais com grande velocidade. Ele juntamente com o Delphi formam o que se chama de ferramenta RAD (rapid application development) que permi- tem desenvolver aplicativos visuais rapidamente com o uso de componentes gr- ficos pr-definidos. Permite o uso de objetos e a criao de componentes, tendo a limitao de no podermos criar objetos a partir do VB. Ele trabalha com eventos que do incio alguma rotina de trabalho, ou seja, o programa fica parado at que um evento ocorra. Um programa tradicional, feito para ser executado em DOS, organizado em torno de estruturas de dados, com procedimentos e funes separadas para ma- nipular os dados. Pgina: 4 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Um programa orientado a objetos e eventos organizado em torno de um conjun- to de objetos, que so estruturas combinando dados e rotinas em uma mesma entidade. Um Objeto possui dados internos, que no podem ser acessados de fora dele e dados externos, tambm chamados de propriedades, que podem ser acessados de fora deste objeto. De maneira semelhante, ele possui rotinas inter- nas que so usadas apenas internamente e rotinas externas, tambm chamadas de mtodos, que podem ser acessadas externamente. Um mtodo uma rotina prpria do objeto que o d funcionalidade, isto , torna- o vivo, e as propriedades fazem o intercmbio entre o objeto e o programa. INCIO Quando iniciamos o Visual Basic 6.0, ele nos apresenta a janela New Project, onde escolhemos qual o tipo de aplicativo iremos desenvolver. Pgina: 5 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Standard EXE - Aplicao Windows padro. ActiveX EXE - Biblioteca de objetos que funcionam fora da aplicao. ActiveX DLL - Biblioteca de objetos que funcionam dentro da aplicao. ActiveX Control - Cria extenses da caixa de ferramentas na prpria lingua- gem. VB Application Wizard - Assistente na criao de aplicaes. VB Wizard Manager - Ajuda na criao de custom wizards. Data Project - Cria um projeto de banco de dados. IIS Aplication - Cria um aplicativo para servidor de informaes para internet. Addin - Criao de Add-Ins, adiciona funes ao ambiente de desenvolvimen- to. ActiveX Document DLL - Objetos para aplicativos Internet/Intranets. ActiveX Document EXE - Aplicao que requer um browser (Internet/Intranets) para operar. DHTML Application - Cria uma aplicaco DHTML composta por um projeto ActiveX DLL que automaticamente seleciona as referncias necessrias para desenhar uma pgina HTML dinmica. VB Enterprise Edition Controls - Aplicao Windows padro, com recursos adicionais. BARRA DE MENU E FERRAMENTAS Pgina: 6 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Janelas do Visual Basic Formulrio Entre os vrios tipos de objetos no VB, os formulrios e controles so os mais comuns. O Formulrio a janela que aparece no centro da tela do Visual Basic, formando a unidade bsica de um aplicativo, onde o usurio interagir enquanto trabalha com o aplicativo desenvolvido. Toolbox - Controles Controles so todos os objetos que podemos trabalhar, inserindo-os em um for- mulrio e/ou controlando os seus mtodos e propriedades. Um controle qual- quer objeto que o usurio possa manipular, desde que no seja uma janela (for- mulrio). Pgina: 7 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 A Caixa de Ferramentas (Toolbox), possui todos os controles que iremos pre- cisar para desenharmos nossa janela - formulrio - como um programa de dese- nho livre. Para incluir um controle ao formulrio, existem dois mtodos: 1. Click Duplo no cone do controle, na caixa de ferramentas. Que far com que o controle seja inserido no centro do formulrio com um tamanho padro. 2. Selecionar o cone na caixa de ferramentas, e depois dimension-lo no formu- lrio, arrastando e soltando o mouse na rea do cliente, no formulrio. Podemos dimensionar estes controles depois de inseridos a qualquer momento durante o desenvolvimento. Primeiro, selecionamos o controle dando um clique nele, em seguida, o dimensionamos arrastando um dos oito dimensionadores que circundam este objeto. Pgina: 8 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Properties - Propriedades Nesta janela definimos as caractersticas de cada objeto do aplicativo (botes de comando, quadros de texto, formulrios, e outros), escolhendo como eles sero apresentados. Cada um desses objetos possui um conjunto especfico de propri- edades que podem ser associadas a eles. Ao trabalharmos com diferentes obje- tos, a janela de propriedades nos permitir mudar as propriedades do objeto ou objetos atualmente selecionados. Existem propriedades que podemos mudar enquanto construmos nosso projeto, ou seja, em tempo de projeto, e outras propriedades que s podemos mudar du- rante a execuo do projeto, neste caso, em tempo de execuo. Na janela de propriedades acima, temos algumas das propriedades do formulrio inicial do VB. Ela possui duas guias, uma lista as propriedades por ordem alfab- tica e a outra por ordem de categorias. Na pasta por categoria observamos um sinal de + , usado para expandir a lista, ou um sinal de - para diminu-la. Nome - Contm o nome do objeto atualmente selecionado, este nome est na propriedade Name. Tipo - Nesta posio encontraremos qual o tipo do objeto selecionado, se ele um Form (formulrio), Command Button (boto de comando), Label (legen- da), ou ento um Text Box (quadro de texto). Pgina: 9 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Caixa de Objeto - Esta caixa mostra o objeto atualmente selecionado, atravs dela tambm podemos selecionar o objeto que queremos mudar as suas pro- priedades, basta dar um clique na seta que um menu de cortina se abrir, onde poderemos selecionar o objeto a trabalhar. Coluna de Propriedades - Exibe todas as propriedades que podemos modifi- car em tempo de projeto do objeto selecionado. Coluna de Valores - Exibe o valor da propriedade correspondente. Descrio - Apresenta uma breve descrio da propriedade. Project Explorer Esta janela mostra-nos todos os componentes do nosso projeto, de uma forma hierrquica semelhante ao Explorer do Windows, nela podemos gerenciar todos os arquivos do aplicativo e vrios projetos simultaneamente, quando trabalhados em grupos. Pgina: 10 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 ANATOMIA DE UMA JANELA Moldura - Os quatro lados da janela, que definem seu tamanho. Barra de Ttulo - Abaixo da moldura superior com nome da janela e documento corrente. Menu de Controle - A esquerda da Barra de Ttulo. Um boto com um cone que representa o programa. Botes de Tamanho - A direita da Barra de Ttulo. So dois botes, um com um trao e o outro com duas janelinhas ou uma janela desenhada. Se forem duas janelinhas, mostra que a janela est maximizada e se for uma janela um pouco maior, mostra que a janela est em seu tamanho normal e pode ser maximizada. O boto com um trao serve para minimizar a janela. Barra de Menu - Est abaixo da barra de ttulo e contm as opes de controle do aplicativo. rea do Cliente - a parte interna da janela, tambm chamada de rea do documento. No VB, o espao que temos para inserir os controles da nossa aplicao. Marcador - boto deslizante para rolar a tela. Janela - Uma Janela plena quando podemos dimension-la (mini, maxi e restaur-la) e mov-la. Pgina: 11 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 MEU PRIMEIRO PROGRAMA Para iniciar, vamos construir um programa que, quando for dado um clique num boto, ser mostrada uma mensagem. Existem trs passos principais, para a criao de uma aplicao no Visual Basic, que iremos seguir: Desenhar as janelas que se deseja usar Inserir no formulrio os controles que sero necessrios Adaptar as propriedades dos objetos Alterar as propriedades dos controles s necessidades da aplicao Escrever o cdigo para os eventos associados Esta a parte mais complexa do desenvolvimento, ela que d a funcionalidade ao programa, so as rotinas que comeam a ser executadas a partir de um evento. Desenhar as janelas que se deseja usar Pgina: 12 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 1. Comeamos inserindo um Label (Legenda) e um Boto de Comando no For- mulrio, de uma das duas maneiras indicadas anteriormente. 2. Observe que, quando o controle estiver selecionado, podemos arrast-lo para qualquer lugar no formulrio. Adaptar as propriedades dos objetos Para alterar a propriedade de um objeto, ele tem que estar selecionado (os oito pontos visveis), em seguida, procurar o nome da propriedade a ser alterada e selecionar (no caso de valores padro) o seu valor, ou ento, escrever um valor. Caso a Janela de Propriedades esteja oculta, pressione F4 ou d um clique no boto Properties Window ( ) na barra de ferramentas, para visualiz-la. 1 - Dimensione o formulrio da seguinte maneira: Selecione a propriedade Height (altura), e entre com o valor 2350. Selecione a propriedade Width (largura), e entre com o valor 2750. Pgina: 13 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Estes nmeros correspondem a Twips, esta unidade foi criada para que houves- se uma independncia do VB em relao aos dispositivos de entrada e sada de dados (impressoras, monitores e scanner) e que fosse mais precisa que estes aparelhos. Um Twip corresponde a 1/1440 de polegada. Altere tambm as propriedades Name e Caption. A propriedade Name ser a identificao do Objeto quando construirmos o cdigo da aplicao. E a proprie- dade Caption, a palavra que aparecer como ttulo da janela. Pgina: 14 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Para a propriedade Name h uma conveno indicada no manual do VB que iremos seguir neste curso; as trs primeiras letras indicam o tipo do objeto, e as seguintes, um conjunto de caracteres qualquer que identifique o objeto. De pre- ferncia, com a primeira letra maiscula para facilitar a leitura. A propriedade Name deve comear com uma letra e ter no mximo 40 caracteres e no pode conter espaos ou pontuao. Convenes de prefixos para nomes de objetos no Visual Basic Objeto Prefixo Exemplo Check box chk chkVerificar Combo box cbo cboLivros Command button cmd cmdCancelar Data dat datBiblio Directory list box dir dirDiretrio Drive list box drv drvDiscos File list box fil filArquivos Form frm frmIncio Frame fra fraOpes Grid grd grdPlanilha Horizontal scroll bar hsb hsbVolume Image img imgFigura Label lbl lblNome Line lin linSeparar List box lsl lslCdigos Menu mnu mnuEditar OLE ole oleObjeto1 Option button opt optGramas Picture box pic picQuadro Shape shp shpRetngulo Text box txt txtCliente Vertical scroll bar vsb vsbVolume Aps voc alterar estas quatro propriedades (Caption, Height, Name e Width) do formulrio, ele estar assim: Pgina: 15 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Agora, altere as propriedades do Label e do Boto de Comando seguindo as figuras. Pgina: 16 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Escrever o cdigo para os eventos associados O cdigo escrito na janela de cdigo, para acess-la, damos um duplo clique em qualquer objeto do projeto ou na janela Project Explorer selecionamos View Code ( ). Janela de Cdigo Nesta janela notamos 3 elementos importantes: 1. Nome do Objeto associado ao procedimento. 2. Nome do Evento que quando ocorrer, dar incio ao procedimento. 3. Procedimento que conter os cdigos Todo procedimento inicia tendo na primeira linha o seu nome e, na ltima, a declarao End Sub (final). A primeira linha segue o padro; Private Sub nome do objeto + _ + evento + ( ) Cada objeto tem um evento que mais comumente utilizado, e com este evento que o VB inicia a Janela de Cdigo, no impedindo que utilizemos outro ou mais de um evento. Pgina: 17 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Se for dado um Clique na seta do quadro de lista dos objetos, sero mostrados todos os objetos neste formulrio, e poderemos escolher em qual destes iremos trabalhar o cdigo. Da mesma forma, se dermos um Clique na seta do quadro de lista dos eventos, sero mostrados todos os eventos do Objeto escolhido, permitindo a seleo do evento para o qual queremos criar um procedimento. O nosso projeto Incio, mostrar uma mensagem no Label (objeto) com um Clique (evento) no Boto Iniciar (objeto). Ou seja, iremos alterar a proprieda- de Caption de lblMensagem, esta propriedade contm o que ser mostrado ao usurio. Pgina: 18 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Atribumos um valor a uma propriedade de um objeto seguindo o padro: objeto + . + propriedade + = + valor da propriedade Quando for dado um clique em Iniciar ser mostrada a mensagem Voc deu um Click em Iniciar.. Abra a Janela de Cdigo para o boto de comando, e digite o cdigo conforme a figura a seguir. Observe que aps a digitao de lblMensagem. mostrado um quadro de lista com todas as propriedades e mtodos associados ao objeto (lblMensagem - Label), quando parte da palavra digitada representar uma propriedade ou mtodo inequvoco, basta pressionar a barra de espao que o VB completar a sentena. Os mtodos e propriedades so representados pelos seguintes cones: - Propriedade - Mtodo No caso da propriedade Caption, basta digitar a letra C e o sinal de = . Pgina: 19 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Em seguida, clique sobre o boto Start da barra de ferramentas ( ), logo aps, d um clique no boto Iniciar para ver o resultado. Observe a posio do formulrio na tela, ele no est na mesma posio quando voc o estava projetando. Finalize a execuo atravs do boto End ( ). Para posicionar o formulrio na posio real em tempo de execuo, utilizamos a janela de layout (Form Layout Window), para acess-la d um clique no boto Form Layout Window ( ) da barra de ferramentas. Pgina: 20 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Clique sobre o desenho do formulrio e arraste-o para a posio desejada. Altere a dimenso do objeto lblMensagem para que toda a mensagem caiba na mesma linha. Execute e observe a mudana. Pare a execuo, e altere as propriedades Aligment e BorderStyle de lblMensagem. Pgina: 21 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Existem propriedades que possuem vrios valores, quando escolhemos Aligment e damos um clique na seta, aparecem os tipos de alinhamento para o texto, mas existem propriedades que possuem inmeras escolhas, neste caso, ao invs de uma seta, encontraremos trs pontos, o caso da propriedade Font. Quando selecionamos os trs pontos, aparece um Quadro de Dilogo para esco- lhermos o formato da fonte para a exibio da Mensagem. No projeto Incio, teste as alteraes de fonte observando as mudanas. Pgina: 22 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 EXEMPLO I - CALCULADORA Para iniciar um novo projeto, escolha a opo New Project... do menu File, ou pressione Ctrl+N, abrindo um programa do tipo Standard EXE Dimensione e insira os controles, utilizando a Janela de Ferramentas (Toolbox) no formulrio, como o exemplo abaixo. Caso a Toolbox no esteja visvel, seleci- one a opo Toolbox do menu View. Dimensionamos o formulrio no VB da mesma forma que no Windows dimensionamos as janelas. Siga a figura para alterar as propriedades assinaladas dos Objetos: As propriedades MaxButton = False e MinButton = False, desabilitam os botes de maximizar e minimizar da janela. Neste exemplo de projeto, digitaremos um nmero em txtNum1, outro em txtNum2 e quando dermos um clique em cmdIgual, o resultado da multiplicao aparecer em txtResultado. Para limpar os quadros de texto, clique em cmdLimpar. O projeto ir trabalhar basicamente com dois eventos : Clique em cmdIgual (=) Clique em cmdLimpar (Limpar) Pgina: 23 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Ento, para escrevermos o cdigo, damos um Duplo Clique no Boto cmdIgual, e a janela de cdigo ser mostrada. Entre com o cdigo conforme a figura a seguir: O editor de cdigo do Visual Basic 6, fornece dicas de uso das funes e procedures da linguagem, sempre que uma parte reconhecvel for digitada ele nos fornecer uma dica de utilizao. Pgina: 24 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Alterne para o procedimento cmdLimpar_Click. E entre com os comandos a seguir: Execute o projeto. Para utilizar, entre com um nmero em txtNum1, outro em txtNum2 e d um Click em =, que o resultado aparecer em txtResultado. Note que alternamos os campos com a tecla Tab, a ordem de tabulao corresponde ordem em que os controles foram colocados no formulrio. Esta ordem determinada pela propriedade TabIndex dos controles, caso o seu proje- to no esteja, coloque-o na seguinte ordem: Pgina: 25 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Objeto TabIndex txtNum1 1 txtNum2 2 cmdIgual 3 cmdLimpar 4 txtResultado 5 lblMultiplicao 6 Para alterar esta propriedade, basta selecionar o controle, Janela de Proprieda- des, procurar TabIndex e alterar o valor, o VB no aceita controles com TabIndex de mesmo valor. Execute o projeto e observe a alterao. Note que podemos alterar o valor de txtResultado mesmo aps a operao ter sido efetuada. Para evitar isso, defi- na as propriedades TabStop = False e Locked = True do txtResultado, e ver que o usurio no ter mais acesso com a tecla Tab ao txtResultado e nem poder edit-lo. Existem, nas aplicaes para Windows, botes de comando que so acionados tambm com a tecla Enter, chamados botes default. No nosso projeto, este boto ser o cmdIgual, para isso, defina a pro- priedade Default = True para esse objeto apare- cendo um contorno mais espesso ao seu redor, dando a indicao que se a tecla Enter for acionada, o comando ser executado. Pgina: 26 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 VARIVEIS Varivel um local onde podem ser guardados dados com possibilidade de alte- rao em tempo de execuo. O nome de uma varivel pode ter at 255 caracteres, tem que comear com uma letra e tem que ser nica. O nome pode conter nmeros e sublinhados e no pode ser uma palavra reservada. Existem vrios tipos de variveis, dependendo do tipo de dados que queremos que ela armazene. Tipo Nmero de Bytes Caracter Faixa Byte 1 0 a 255 Boolean 2 True ( -1 ) ou False ( 0 ) Date 8 1/Jan/100 a 31/Dez/9999 Integer 2 % -32.768 a 32.767 Long 4 & -2.147.483.647 a 2.147.483.647 Single 4 ! -3,402823E38 a -1,401298E-45 1,401298E-45 a 3,402823E38 Double 8 # -1,79769313486232E308 a - 4,94065645841247E-324 4,94065645841247E-324 a 1,79769313486232E308 Currency 8 @ -922,337,203,685,477.5808 a 922,337,203,685,477.5807 String varivel $ No se aplica Podemos usar certos caracteres para indicar o tipo da varivel desejada, quando us-la inicialmente. Por exemplo: i%, trco@. Como tipo bsico, o VB usa o tipo Single, portanto se tivermos uma varivel com o nome de Valor!, ser o mesmo que deixar como Valor. Formas de Declarar uma Varivel 1. Usar a varivel onde desejar. Na linha de cdigo onde for necessria usando um dos caracteres que identificam o tipo. 2. Usar as declaraes Dim, Private, Public ou Static, alocando um espao na memria para a varivel. Pgina: 27 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Dim NomeVarivel As tipo Private NomeVarivel As tipo Public NomeVarivel As tipo Static NomeVarivel As tipo Escopo e Tempo de Vida das Variveis Escopo so os pontos da aplicao de onde podemos acessar a varivel. Exis- tem 4 locais diferentes para declarar variveis. Local, a varivel ser usada apenas pelo procedimento onde ela foi de- clarada. Em nvel de Formulrio, a varivel poder ser acessada por todos os procedimentos do formulrio quando for declarada na seo geral (gene- ral) . Em nvel de Mdulo, a varivel poder ser acessada por todos os proce- dimentos do mdulo. Em nvel Publico, toda aplicao poder usar esta varivel. Toda vez que executamos um procedimento, suas variveis locais so reinicializadas. Para que a varivel retenha o seu valor, usamos a declarao Static. Mais adiante, veremos um exemplo desta declarao e das outras. FORMATAO DE TEXTO A funo Str$, transforma um nmero em texto, mas no padroniza a sua apre- sentao. Caso voc precise formatar um dado a ser exibido, use a funo; Format$(expresso [,formato] ) Onde: expresso = expresso numrica ou string a ser formatado. formato = a maneira como dever ser mostrada a expresso. Pgina: 28 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Formatando nmeros: Formato 5 positivo 5 negativo 5 decimal 0 5 -5 1 0,00 5,00 -5,00 0,50 #.##0 5 -5 1 #.##0,0 5,0 -5,0 0,5 $#.##0;($#.##0) $5 ($5) $1 $#.##0,00;($#.##0,00) $5,00 ($5,00) $0,50 0% 500% -500% 50% 0,00E+00 5,00E+00 -5,00E+00 5,00E-1 Em formato o nmero 0 ser mostrado ou trocado pelo caractere em sua posi- o, j o nirus (#) no ser mostrado. Podemos inserir smbolos na funo Format, como no exemplo: $ , % e E . Formatando Data e Hora: Formato Exibido d/m/yy 10/7/96 dd-mm-yyyy 01-Jun-1996 dd-ddd 02-dom hh:mm AM/PM 08:50 AM h:mm:ss a/p 8:50:20 a d/m/yy h:mm 03/12/95 9:30 General Date 06/09/96 9:40:18 Long Date Sexta, 9 de setembro de 1996 Medium Date 09-set-96 Short Date 09/09/96 Long Time 9:40:19 Medium Time (12 horas) 09:40 AM Short Time (24 horas) 09:40 MODIFICANDO A CALCULADORA No formulrio da calculadora, selecione o boto de comando cmdIgual e pressi- one a tecla Delete. Lembre-se que tnhamos um cdigo associado a este objeto e agora que ele sumiu, para onde foi o cdigo? Pgina: 29 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Chame a janela de cdigo, indo at a janela Project Explorer, e clique em ViewCode. No quadro de objetos (object) selecione a seo General, o cdigo o cmdIgual estar l como um procedimento geral. Procedimento geral aquele que pode ser chamado por qualquer outro procedi- mento do formulrio, funciona como uma sub-rotina. Ele no como um proce- dimento associado a um objeto executado a partir de um evento, e sim, quando chamado. Agora, deixe o formulrio frmCalculadora como o exemplo a seguir: Na figura aparecem as propriedades Name de cada objeto Pgina: 30 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Chame a janela de cdigo dando um clique duplo no formulrio ou na janela Project Explorer - View Code. Aparecer ento o procedimento Form_Load, v at o quadro Object e selecione (General), no quadro de Eventos procure o cdi- go do antigo cmdIgual (cmdIgual_Click) e altere o cabealho como no exemplo a seguir, observe que ao dar Enter, o procedimento que antes era geral, passou a ser associado a um novo objeto (cmdMultiplicar). Na ltima linha j estamos usando a funo Format$, para formatar o nmero a ser apresentado. Selecione todo o texto, menos o cabealho e End Sub, e copie (Ctrl + C). Chame o procedimento para outro boto de operao, cole o texto e altere o operador correspondente. Teste os vrios formatos de apresentao dos nmeros, alterando a forma de apresentao da funo Format$. Um aplicativo construdo em VB trabalha com vrios arquivos. Um arquivo para cada formulrio ou mdulo, um arquivo para o projeto e outros opcionais. Suas descries so as seguintes: O arquivo de projeto contm a localizao de todos os componentes (.vbp). Um arquivo para cada formulrio (.frm). Um arquivo de dados binrios para cada formulrio que contm os valores das propriedades dos controles no formulrio (.frx). Pgina: 31 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Um arquivo para cada mdulo de classe (.cls). Um arquivo para cada mdulo standard (.bas). Um ou mais arquivos que contm controles ActiveX (.ocx). Um nico arquivo de recurso (.res). Vamos salvar o nosso projeto de calculadora. No menu File, selecione Save Project, aparecer o quadro de dilogo de Salvar do Windows pedindo para dar um nome ao arquivo de formulrio, extenso .frm, d o nome de calculadora.frm e clique em Salvar. A seguir, aparecer o mesmo quadro pedindo para dar um nome ao arquivo de projeto, extenso .vbp, d o nome de Calculadora.vbp e clique em Salvar. O projeto estar salvo. Antes de fazer do projeto um arquivo executvel, vamos escolher um cone para o nosso projeto ser representado no Windows. Selecione a propriedade Icon do formulrio e clique no boto com reticncias tendo acesso ao quadro de dilogo Load Icon, escolhendo um cone que ser associado ao formulrio; Pgina: 32 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Escolha um cone e clique em Abrir. Quando o seu projeto aparecer no Windows, ele ser representado por este cone. Agora, vamos faz-lo executvel fora do VB, no Menu File, escolha Make EXE File..., aparecendo o quadro de dilogo para escolher o nome do arquivo executvel: Escolhido o nome do arquivo executvel, clique em Ok. Agora, voc tem um programa executvel em qualquer microcomputador que possua o sistema Windows 95, sem necessariamente ter o VISUAL BASIC instalado. Pgina: 33 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 EXEMPLO II - JOGO DA VELHA Para iniciar um novo projeto, selecione New Project... do menu File, ou Ctrl+N. Caso voc ainda no tenha salvo o seu projeto corrente, o VB abrir as janelas para salvar o projeto. E s ento iniciar o novo projeto. Vamos iniciar um projeto de Jogo da Velha, onde o usurio ir jogar contra o computador que no pensa as suas jogadas, trabalhando com nmeros aleat- rios - e ao final da partida ser mostrado um quadro de mensagem informando o ganhador. O objetivo conhecermos as estruturas condicionais e de repetio, to utilizadas nos programas. Insira um boto de comando no formulrio dimensionando-o como um quadrado, e altere suas propriedades como mostra a figura: O nosso Jogo da Velha possui 9 botes iguais, todos iro executar a mesma rotina quando o usurio der um clique em um deles. Para economizar recursos, vamos criar um Array de controle (ordem de controles), onde todos os botes tem o mesmo nome com ndices diferentes. Pgina: 34 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Para criar um Array de controle, selecione o boto e copie-o (Ctrl + C) e depois cole-o (Ctrl + V). Quando for dada a ordem de colar, o VB abrir um quadro de mensagem indicando que j existe um controle com o nome de cmdBot, e se voc quer criar ou no um Array de controle, responda Sim. O boto de comando ir aparecer no canto superior esquerdo do formulrio, depois s arrast-lo para a posio desejada. Para inserir os prximos botes, basta ir colando e o VB no perguntar mais sobre o Array de Controle. Posicione os botes da esquerda para a direita e de cima para baixo, pois assim o ndice deles coincidir com o cdigo na hora da verificao. Se voc observar a janela de propriedades (properties - cmdBot( ) ) dos botes, notar que alm do nome, eles possuem um ndice, este ndice est na propriedade Index de cada boto, caso voc tenha errado as posies, basta corrigir alterando essa propriedade. Pgina: 35 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Quando o projeto iniciar, o formulrio ser carregado na memria, neste fato ocorre o evento Load. Criamos para este evento um procedimento de inicio do jogo. Selecione o boto View Code para abrir a janela de Cdigos e entre com as declaraes Randomize e JogoNovo, responsveis respectivamente pela inicializao de nmeros aleatrios e o carregamento de um procedimento cha- mado JogoNovo. No formulrio temos a seo General, nesta seo colocamos os procedimentos e as variveis que sero solicitados por todos os procedimentos do formulrio. No nosso projeto, na seo General teremos o procedimento JogoNovo que dar incio a um novo jogo, e a varivel NmeroVezes, que servir para armazenar o nmero de vezes que jogamos - indicar se houve empate ou no. Para criar este procedimento, v at o Menu Tools e escolha a opo Add Procedure..., aparecer ento o seguinte quadro de dilogo: Pgina: 36 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Selecione as opes Sub e Public e entre com o nome do procedimento, em seguida, clique em OK. Digite o cdigo conforme figura a seguir: Todo bom programador inclui em seu cdigo linhas de comentrio que so muito teis quando for necessria uma manuteno do programa. Estas linhas contm descries a respeito de como o programa funciona, servindo tanto para o pro- gramador inicial quanto para outros que iro realizar a manuteno. Colocamos uma linha do comentrio no VB utilizando o caracter () antes de cada comentrio. Esta linha ficar destacada em verde no VB. Ex: Jogada inicial do micro Pgina: 37 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 A estrutura de repetio For... Next utilizada aqui para apagar o contedo dos botes. A funo Int e Rnd retornam, respectivamente, a poro inteira de um nmero, e um nmero aleatrio entre 0 (inclusive) e 1. Declaramos a varivel NmeroVezes na seo General - Declaraes, porque ela ser utilizada em dois procedimentos distintos - JogoNovo e cmdBot_Click. O seu valor permanecer at que o formulrio seja retirado da memria ou o programa finalizado. O prximo passo fazer o cdigo dos botes, d um duplo clique em qualquer um deles para exibir a janela de cdigo, entrando com o cdigo conforme texto abai- xo. A seguir, encontraremos o uso da estrutura condicional If... End If e a estru- tura de repetio Do Until... Loop. Procure entender as estruturas e tire todas as dvidas. Private Sub cmdBot_Click(Index As Integer) O parmetro Index informa o index do boto acionado NmeroVezes = NmeroVezes + 1 cmdBot(Index).Caption = X If cmdBot(0).Caption = X And cmdBot(1).Caption = X And cmdBot(2).Caption = X Then GoTo MensX If cmdBot(3).Caption = X And cmdBot(4).Caption = X And cmdBot(5).Caption = X Then GoTo MensX If cmdBot(6).Caption = X And cmdBot(7).Caption = X And cmdBot(8).Caption = X Then GoTo MensX If cmdBot(0).Caption = X And cmdBot(3).Caption = X And cmdBot(6).Caption = X Then GoTo MensX If cmdBot(1).Caption = X And cmdBot(4).Caption = X And cmdBot(7).Caption = X Then GoTo MensX If cmdBot(2).Caption = X And cmdBot(5).Caption = X And cmdBot(8).Caption = X Then GoTo MensX If cmdBot(0).Caption = X And cmdBot(4).Caption = X And cmdBot(8).Caption = X Then GoTo MensX Pgina: 38 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 If cmdBot(2).Caption = X And cmdBot(4).Caption = X And cmdBot(6).Caption = X Then GoTo MensX Do Until cmdBot(M).Caption = M = Int(Rnd * 9) Loop cmdBot(M).Caption = 0 If cmdBot(0).Caption = 0 And cmdBot(1).Caption = 0 And cmdBot(2).Caption = 0 Then GoTo Mens0 If cmdBot(3).Caption = 0 And cmdBot(4).Caption = 0 And cmdBot(5).Caption = 0 Then GoTo Mens0 If cmdBot(6).Caption = 0 And cmdBot(7).Caption = 0 And cmdBot(8).Caption = 0 Then GoTo Mens0 If cmdBot(0).Caption = 0 And cmdBot(3).Caption = 0 And cmdBot(6).Caption = 0 Then GoTo Mens0 If cmdBot(1).Caption = 0 And cmdBot(4).Caption = 0 And cmdBot(7).Caption = 0 Then GoTo Mens0 If cmdBot(2).Caption = 0 And cmdBot(5).Caption = 0 And cmdBot(8).Caption = 0 Then GoTo Mens0 If cmdBot(0).Caption = 0 And cmdBot(4).Caption = 0 And cmdBot(8).Caption = 0 Then GoTo Mens0 If cmdBot(2).Caption = 0 And cmdBot(4).Caption = 0 And cmdBot(6).Caption = 0 Then GoTo Mens0 If NmeroVezes = 4 Then MsgBox Partida Empatada, 64, Empate JogoNovo Exit Sub End If Exit Sub MensX: MsgBox Voc Ganhou, 64, Vencedor JogoNovo Exit Sub Mens0: MsgBox Eu Ganhei, 64, Vencedor JogoNovo Exit Sub End Sub Pgina: 39 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Terminando de digitar este procedimento, salve o formulrio e o projeto. Mas antes de execut-lo vamos ver um pouco de depurao. DEPURAO Usamos a depurao para encontrar erros lgicos ou de digitao responsveis pelo mau funcionamento do programa. Alguns erros o VB nos indica durante a digitao e outros durante a compilao, mas exixtem erros que o prprio progra- mador ter que descobrir utilizando as ferramentas de debug do VB. Para incluir um ponto de parada no programa basta dar um clique na barra cinza da esquerda na direo da linha que se deseja como ponto de parada. D um clique na linha mostrada na figura a seguir. Execute o programa pressionando F5, ou clique sobre o boto . Aps a jogada do usurio, o programa ir parar na linha marcada, sendo possvel exami- nar os valores das variveis. Pressione a tecla F8 para executar o programa passo-a-passo at a linha com a instruo Loop quando veremos os valores de algumas variveis. Existem duas formas de sabermos o valor de uma varivel ou propriedade de objeto. Uma delas e posicionando o ponteiro do mouse sobre ela e esperar al- guns instantes, que o seu valor ser mostrado pelo VB. Pgina: 40 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 A segunda maneira, escrever o nome da varivel ou da propriedade do objeto na janela Immediate precedido pelo ponto de interrogao. Aps pressionar a tecla Enter o valor ser mostrado pelo VB. Continue a execuo do programa pressionando F5, para retirar o ponto de para- da basta dar um clique no crculo vermelho desta linha. QUADROS DE MENSAGEM O Windows possui quadros padronizados de mensagem que servem para emitir avisos e recolher opes de tratamento dessas mensagens. Estes quadros so fceis de criar no VB com a declarao ou funo MsgBox. MsgBox ser uma declarao, quando no tratamos a resposta do usurio, e ser uma funo, quando esta resposta for tratada. Para construir um Quadro de Mensagem, use o seguinte padro: Declarao - MsgBox mensagem, tipo, ttulo Funo - MsgBox (mensagem, tipo, ttulo) Onde:mensagem - expresso mostrada dentro do quadro de dilogo. tipo - somatria de nmeros, conforme o que queremos que seja exibido no Quadro de Mensagem, seguindo a tabela a seguir. ttulo - ttulo do Quadro de Mensagem (barra de ttulo). Pgina: 41 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Argumento tipo para a Declarao/Funo MsgBox Valor Significado 0 Somente o boto de OK 1 Botes de OK e Cancelar 2 Botes Anular, Repetir e Ignorar 3 Botes Sim, No, Cancelar 4 Botes Sim, No 5 Botes Repetir e Cancelar 16 Sinal de Stop 32 Sinal de Pesquisa 48 Sinal de Aviso 64 cone de Informao 0 Primeiro boto com foco 256 Segundo boto com foco 512 Terceiro boto com foco 768 Quarto boto com foco Teste o projeto alterando o valor de tipo para MsgBox, faa a sua soma esco- lhendo um item de cada seo. Agora, vamos alterar o nosso projeto para que ele nos pergunte, ao final da par- tida, se queremos jogar novamente ou finalizar o programa. Para isso usaremos MsgBox como funo, o que nos retornar o valor do boto acionado pelo usu- rio. Altere o procedimento cmdBot_Click conforme texto a seguir: MensX: Resposta$ = MsgBox(Voc Ganhou, Deseja Jogar Novamente?, 36, Ven- cedor) If Resposta$ = 6 Then JogoNovo Else End End If Exit Sub Pgina: 42 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Mens0: Resposta$ = MsgBox(Eu Ganhei, Deseja Jogar Novamente?, 36, Vence- dor) If Resposta$ = 6 Then JogoNovo Else End End If Exit Sub End Sub A varivel Resposta$ (declarada implicitamente como String), conter a respos- ta do usurio que segue o padro da tabela abaixo; Valor Significado 1 Boto OK foi pressionado 2 Boto Cancelar foi pressionado 3 Boto Anular foi pressionado 4 Boto Repetir foi pressionado 5 Boto Ignorar foi pressionado 6 Boto Sim foi pressionado 7 Boto No foi pressionado No nosso caso, o programa verificar se o boto Sim foi pressionado, em caso afirmativo, iniciar novo jogo, seno finalizar. A mensagem aparece em uma nica linha no quadro de mensagem. Se quiser- mos que ela aparea dividida em duas ou mais linhas deveremos utilizar o caracter Chr(13) - Carriage Return, separando as linhas da mensagem. Experimente a alterao abaixo: Resposta$ = MsgBox(Eu Ganhei, Deseja + Chr(13) + Jogar Novamente?, 36, Vencedor) Pgina: 43 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 EXEMPLO III - BLOCO DE NOTAS O nosso prximo projeto ser um editor de texto simples do tipo caractere, com ele poderemos alterar o tipo e tamanho da fonte utilizada em todo o texto, recor- tar, colar e copiar partes selecionadas, e salvar e abrir nosso texto em um arquivo de acesso seqencial. Monte o formulrio conforme o exemplo, alterando as propriedades dos 5 objetos: No quadro de texto (txtTexto), a propriedade Text, possui uma caixa de texto onde digitamos o texto inicial deste objeto, temos tambm a propriedade Multiline = True para permitir que este quadro tenha vrias linhas, e a propriedade ScrollBars = Vertical, para possibilitar a paginao destas linhas quando ultra- passarem a rea do quadro. Pgina: 44 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Os botes de comando tem a propriedade Enabled = False para tornar o boto desabilitado ( cinza claro ), no permitindo a acesso a eles pelo usurio. Esta propriedade ser mudada em tempo de execuo quando tivermos algum texto a ser Recortado, Colado ou Limpo. Vamos ao Cdigo: Declare a varivel (CpiaTexto) que conter o texto que foi Recortado ou Copi- ado. cmdColar Copia a varivel CpiaTexto para o quadro de texto no local do cursor ou rea selecionada e devolve o foco para o quadro de texto, se o foco no fosse devol- vido ele ficaria com o boto que foi acionado. Pgina: 45 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 cmdLimpar Limpa o quadro de texto, limpando a propriedade Text e desabilita os botes cmdRecortar e cmdLimpar. O boto cmdColar no desabilitado porque ainda existe contedo na varivel CpiaTexto, que poder ser colado. cmdRecortar Atribui o texto selecionado, propriedade SelText, varivel CpiaTexto, limpa o texto selecionado e habilita o boto cmdColar. Pgina: 46 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Salve o Formulrio, o Projeto, e depois execute testando o funcionamento. Em nosso Bloco de Notas, as opes de edio de texto esto na forma de botes, mas no Windows essas opes esto na forma de Menu. Neste caso, vamos agora trabalhar com menu e transferir o cdigo dos botes para as opes do menu que iremos construir. Cada item de menu tambm um objeto e portan- to, tambm possui propriedades e responde a eventos. CRIANDO MENUS Selecione o formulrio (frmBloco) e escolha a opo Menu Editor... do menu Tools ou Ctrl+E, ou clique no boto Menu Editor ( ) da barra de ferramentas, aparecendo o quadro de dilogo Menu Editor para construirmos nosso menu. O Quadro Menu Editor possui as seguintes partes: Caption. O texto que aparecer escrito no menu ou item de menu. Para criar uma barra separadora em seu menu, basta digitar um hfen ( - ). Para o acesso por teclado usamos o e comercial (&) antes da letra que queremos que seja o atalho, como nos botes. Name. Contm o nome que ser dado ao objeto que o identificar nas linhas de cdigo. Pgina: 47 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Index. Nmero atribudo ao objeto para identific-lo caso seja usado como um control array. Anteriormente usamos control array em botes e o Index foi de- terminado automaticamente, mas para itens de menu, teremos que determin-los manualmente. Shortcut. Uma lista drop-down de onde poderemos escolher a tecla de atalho para o item. Exemplo: Colar = Ctrl + V. HelpContextID. Contm um valor numrico nico que ser usado para encon- trar uma referncia do objeto no arquivo de help. NegotiatePosition. Determina a posio em que o menu ir aparecer quando objetos de outras aplicaes estiverem ativos no formulrio. Checked. Seleciona se voc quer que aparea uma marca de check antes do item de menu. Enabled. Seleciona se voc quer que o item de menu responda aos eventos ou no. Desabilita ou habilita o item de menu. Visible. Seleciona se voc quer que o item de menu esteja visvel ou no. Use esses botes para mudar o nvel do item no menu, criando submenus. Podem ser criados at quatro nveis de submenus. Use esses botes para mudar a posio do item de menu. Botes: Next Move a seleo para a prxima linha. Insert Insere uma linha acima da linha atualmente selecionada. OK Fecha a Menu Editor e aplica todas as mudanas efetuadas. Cancel Fecha a Menu Editor e cancela as mudanas efetuadas. Pgina: 48 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 O nosso menu dever ficar da forma mostrada abaixo. Para os itens: itmRecortar, itmCopiar, itmColar e itmLimpar, deixe a propriedade Enabled desabilitada. Clique em OK, e verifique o formulrio, se voc der um clique em alguma opo de menu, aparecero os itens, e se der um clique em algum item de menu, aparecer a janela de cdigo deste item. O nosso Bloco de Notas ter a opo de alterar o nome da fonte, o tamanho e a aparncia das letras atravs de menu. No menu, cada item de nome da fonte ou tamanho, ter a mesma funo, ou seja, mudar as propriedades do txtTexto. Neste caso, criaremos um mesmo procedi- mento para vrios objetos utilizando para isso o recurso de Control Array. No projeto de jogo da velha usamos Control Array para os botes, e automaticamen- te o Index foi incrementado, para o menu, o incremento do Index no autom- tico, ento teremos que faz-lo manualmente. Pgina: 49 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Vamos acessar novamente a Menu Editor... e complement-la. Agora, nosso menu est pronto, clique em OK e verifique no formulrio a apre- sentao. Note que nos itens Tipo e Tamanho aparece uma seta para a direita indicando outro menu de opes. Ns tnhamos rotinas para Copiar, Recortar e Limpar mas na forma de botes, agora que temos na forma de menu, no precisamos mais dos botes. V at o formulrio, selecione cada um desses botes e delete-o, ao fazer isso, o cdigo associado ir para a seo general do formulrio. Selecione cada uma destas rotinas e altere o seu nome para que elas estejam associadas ao menu. Ns no precisaremos mais devolver o foco para o txtTexto, porque ao fazer uma seleo no menu, ele desaparece, ento o foco volta para o nico objeto do formulrio - txtTexto. Pgina: 50 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Aps alterar o nome do procedimento, tecle a seta de direo para baixo e o VB ir alterar o nome do objeto e do Evento. Faa o mesmo para os outros dois ex-botes, alterando o cdigo aonde so feitas referncias a estes botes. Note que teremos que acrescentar mais uma linha para itmCopiar. Private Sub itmLimpar_Click( ) txtTexto.Text = itmRecortar.Enabled = False itmLimpar.Enabled = False itmCopiar.Enabled = False End Sub Private Sub itmRecortar_Click( ) CpiaTexto = txtTexto.SelText txtTexto.SelText= itmColar.Enabled = True End Sub Pgina: 51 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Private Sub txtTexto_Change ( ) itmRecortar.Enabled = True itmLimpar.Enabled = True itmCopiar.Enabled = True End Sub Para construir o procedimento itmCopiar_Click, utilize o recurso de copiar (Ctrl+C), o procedimento itmRecortar_Click, e colar (Ctrl+V). Logo aps, delete a linha que apaga o texto em txtTexto. Private Sub itmCopiar_Click ( ) CpiaTexto = txtTexto.SelText itmColar.Enabled = True end Sub Salve e execute o projeto, verifique se os itens do menu Editar, os nicos que funcionam, ficam habilitados e desabilitados. Faremos agora o cdigo para os outros objetos. Private Sub itmNome_Click (Index As Integer) Select Case index Case 0 txtTexto.Font.Name = CourierNew Case 1 txtTexto.Font.Name = Roman Case 2 txtTexto.Font.Name = Modern Else txtTexto.Font.Name = Symbol End Select For i% = 1 To 3 itmNome(i%).Checked = False Next i% itmNome(Index).Checked = True End Sub Pgina: 52 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Quando damos um clique num item de Nome da Fonte, iniciado o procedimento itmName_Click, que recebe o Index do item acionado, esse Index armazenado em uma varivel de nome Index - (Index As Integer). Todo texto exibido no novo formato e a marca de verificao (Checked) aparece ao lado do nome da fonte selecionada. A declarao Select Case executa diferentes blocos de declaraes dependen- do do valor do Index. Estrutura: Select Case palavra teste Case lista de palavras 1 declaraes 1 Case lista de palavras 2 declaraes 2 End Select A declarao For...Next retira o Check do item anteriormente selecionado, mais fcil retirar de todos, a ter que procurar qual o item que tem o Check e depois retir-lo. E depois colocamos Check no item que foi clicado - itmName(Index).Checked = True. Private Sub itmSize_Click (Index As Integer) txtTexto.Font.Size = Val(itmSize(Index).Caption) For i% = 0 To 2 itmSize(i%).Checked = False Next i% itmSize(Index).Checked = True End Sub Para o procedimento itmSize_Click podamos tambm usar a declarao Select Case, mas no exemplo utilizada a propriedade Caption do item selecionado para alterar o tamanho da fonte. Os itens Negrito, Sublinhado e Itlico quando estiverem selecionados, devero apresentar um Check ao seu lado. Esta propriedade ser utilizada para alterar ela mesma, e depois alterar a apresentao da fonte. Pgina: 53 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Private Sub itmNegrito_Click( ) itmNegrito.Checked = Not itmNegrito.Checked txtTexto.Font.Bold = itmNegrito.Checked End Sub No incio itmNegrito.Checked = False, quando o usurio der um clique em itmNegrito, o valor da propriedade ser o inverso do que era - itmNegrito.Checked = True, e vice-versa, utilizando-se o operador lgico Not. O mesmo procedimento utilizado para Itlico e Sublinhado. Copie o cdigo da procedure itmNegrito_Click() e cole na procedure do itmItlico e itmSublinhado, feito isto utilize o recurso de substituir (Replace), do menu Edit. Pgina: 54 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Private Sub itmItlico_Click ( ) itmItlico.Checked = Not itmItlico.Checked txtTexto.Font.Italic = itmItlico.Checked End Sub Private Sub itmSublinhado_Click ( ) itmSublinhado.Checked = Not itmSublinhado.Checked txtTexto.Font.Underline = itmSublinhado.Checked End Sub Finalize a execuo utilizando o procedimento de evento itmSair_Click. Private Sub itmSair_Click ( ) End End Sub Salve e execute o projeto testando todos os itens, somente o menu Arquivo com as opes Abrir e Salvar, ainda no estar ativos. Existem objetos que no so incorporados ao formulrio, mas possuem proprie- dades e mtodos associados, o ClipBoard um desses objetos. Ns utilizare- mos o ClipBoard para armazenar o texto que foi Recortado ou Copiado substi- tuindo a varivel CpiaTexto utilizada anteriormente. O ClipBoard a prpria rea de transferncia do Windows, e possui os seguin- tes mtodos: Clear - Limpa o contedo do ClipBoar GetData - Retorna um grfico do ClipBoard GetFormat - Retorna um valor indicando qual o tipo de dado do ClipBoard GetText - Retorna um texto do ClipBoard SetData - Grava no ClipBoard um elemento grfico SetText - Grava no ClipBoard um texto Pgina: 55 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Para trabalhar com o ClipBoard no projeto Bloco de Notas, altere os seguintes procedimentos: Private Sub itmColar_Click ( ) if Clipboard.GetFormat (1) Then txtTexto.SelText = Clipboard. GetText (1) Else MsgBox No h texto no ClipBoard, 64, Erro End If End Sub O procedimento itmColar_Click verifica se h realmente um texto no ClipBoard antes de colar no quadro de texto txtTexto, caso no tenha um texto, exibida uma mensagem de erro. Private Sub itmRecortar_Click ( ) Clipboard.SetText txtTexto.SelText txtTexto.SelText = itmColer.Enabled = True End Sub Private Sub itmCopiar_Click ( ) Clipboard.SetText txtTexto.SelText itmColar.Enabled = True End Sub Para obter um melhor resultado, acrescente no procedimento mnuEditar_Click a verificao da existncia ou no de texto no ClipBoard. Private Sub mnuEditar_Click ( ) If Clipboard.GetFormat (1) Then itmColar.Enabled = True End If End Sub Salve e Execute o projeto. Para testar o funcionamento do ClipBoard, abra um editor de texto enquanto executa o projeto, copiando e colando textos entre eles. Faa um desenho no Paint do Windows, Copie e tente colar no Bloco de Notas, e ver que a mensagem No h texto no ClipBoard aparecer. Pgina: 56 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 SALVANDO E ABRINDO ARQUIVOS Os itens Abrir e Salvar do menu Arquivo quando selecionados em aplicaes para Windows, abrem outras janelas. Em nosso projeto de Bloco de Notas estas opes tambm iro abrir outras janelas ou formulrios. Primeiro vamos criar a janela de Salvar Arquivo. Por enquanto nosso projeto possui apenas um formulrio chamado frmBloco, para criar mais um formulrio - frmSalvar, escolha a opo Add Form do menu Project ou d um clique no boto da barra de ferramentas, para inserir um novo formulrio ao projeto. Apare- cer ento o quadro de dilogo Add Form para escolhermos o tipo de formulrio a ser adicionado. Escolha o tipo Form, e adicione neste novo formulrio os objetos como mostrado abaixo. Altere as propriedades dos objetos: Pgina: 57 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Digite o cdigo para os botes OK e Cancelar: Private Sub cmdOk_Click ( ) On Error GoTo Erro Open txtNomeArq.Text For Output As #1 Print #1, frmBloco.txtTexto.Text Close #1 frmSalvar.Hide Exit Sub Erro: MasBox Erro de Arquivo, 48, Bloco de Notas Close #1 End Sub A declarao Open txtNomeArq.Text For Output As #1, utilizada para abrirmos um arquivo do tipo seqencial. Sua sintaxe a seguinte: Open arquivo For modo As #nmero Onde: Arquivo - nome do arquivo a ser aberto Modo - a maneira como o arquivo ser aberto. Que pode ser: Append (Adicionar): Adiciona mais contedo no final de um arquivo do tipo seqencial. Input (Entrada): Abre um arquivo do tipo seqencial para leitura. Pgina: 58 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Output (Sada): Abre um arquivo do tipo seqencial para escrita. Random (Aleatrio): Abre um arquivo do tipo de acesso aleatrio, para leitura ou gravao Nmero - Associa um nmero ao arquivo como referncia para a apli- cao. Pode variar de 1 at 511. Ou seja, podemos ter at 511 arquivos abertos ao mesmo tempo. A declarao Print #1, frmBloco.txtTexto.Text, escreve o contedo do qua- dro de texto txtTexto do formulrio frmBloco no arquivo que foi aberto como nmero 1. Sua sintaxe a seguinte: Print # nmero, expresso Nmero - nmero com o qual o arquivo que queremos escrever nele, foi aberto na declarao Open. Expresso - cadeia de caracteres, nmeros ou no, que sero escritos no arquivo. Com a declarao Close #1, fechamos nosso arquivo aps a gravao do da- dos. Caso no fosse fornecido o nmero do arquivo a ser fechado, a declarao Close fecharia todos os arquivo abertos. O mtodo Hide, esconde um formulrio mas no o descarrega da memria. Para que o formulrio saia da memria e desaparea, usamos a declarao Unload. Ex: Unload frmSalvar A declarao On Error desvia a rotina do programa para um tratamento do erro. Caso esta declarao no exista, e ocorra um erro no momento de salvar o arquivo, o VB gera uma mensagem de erro e pra a execuo do programa, e isto muito desagradvel para o programador frente ao usurio. No nosso pro- jeto, caso ocorra um erro, ser mostrada uma mensagem e encerrado o procedi- mento. Private Sub cmdCancelar_Click ( ) frmSalvar.Hide End Sub Para que o formulrio frmSalvar aparea, devemos digitar o procedimento abai- xo associado ao objeto itmSalvar do frmBloco. Pgina: 59 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Private Sub itmSalvar_Click ( ) frmSalvar.Show 1 End Sub O mtodo Show mostra um formulrio. O nmero 1 aps Show, indica que o formulrio a ser mostrado ser do tipo Modal, ou seja, no poderemos alternar entre janelas antes de fech-lo. Caso queiramos que seja alternado, basta infor- mar o nmero 0 aps o mtodo Show. O mtodo Show antes de mostrar o formulrio, carrega-o na memria. Para que o formulrio seja carregado na memria e no aparea usamos a declarao Load. Ex: Load frmSalvar. Agora, vamos construir o formulrio para abrir um arquivo - frmAbrir. Primeiro insira um novo formulrio, em seguida, coloque os objetos alterando suas propri- edades conforme figura a seguir. Agora, nosso projeto consta de trs formulrios. Selecione o formulrio frmBloco e d um clique na opo Abrir do menu Arqui- vo, veremos a janela de cdigo para o procedimento de evento itmAbrir_Click. Que exibir o formulrio para a escolha de um arquivo a ser aberto, de acordo com o exemplo a seguir. Pgina: 60 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Private Sub itmAbrir_Click ( ) frmAbrir.Show 1 End Sub As caixas de Lista de Unidade, Diretrio e Arquivos ainda no esto integradas, ou seja, caso alteremos o diretrio, o contedo da caixa de arquivos no se altera. Experimente executar o projeto e escolha a opo Abrir no meu Arquivo para verificar. Para que as trs caixas fiquem em sincronismo, ns devemos alterar a proprieda- de Path das caixas de diretrio e de arquivo, quando houver mudana de escolha em alguma delas. Esta propriedade determina o caminho absoluto atual incluindo o nome do drive. Ex: C:\VB6\BITMAPS, indica que o diretrio atual o subdiretrio BITMAPS do diretrio VB6 na unidade C: . Private Sub drvDisco_Change ( ) dirDiretrio.Path = drvDisco.Drive End Sub No cdigo acima, toda vez que houver alterao (evento Change) na unidade atual, ser chamado o procedimento que altera a propriedade Path de dirDiretrio que ser o diretrio raiz da unidade selecionada na caixa de unidades, pois na propriedade Drive teremos a unidade atualmente selecionada. Feito isto, as caixas de lista de unidades e diretrio estaro sincronizadas, falta a caixa de lista de arquivo. Para sincroniz-la, s transferir a propriedade Path da dirDiretrio para a propriedade da filArquivos, como a seguir: Private Sub dirDiretrio_Change ( ) filArquivos.Path = dirDiretrio.Path End Sub As trs caixas esto agora sincronizadas, execute o projeto e alterne entre unida- des e diretrios. Nas aplicaes para Windows, quando queremos abrir um arquivo de uma janela do tipo Abrir, podemos faz-lo de duas formas: 1. Dando um clique no arquivo e outro no boto Ok. 2. Dando um duplo clique no arquivo selecionado. Pgina: 61 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 No VB no precisamos de dois procedimentos para estas duas funes. Um evento pode dar incio a outro evento. No projeto de Bloco de Notas, quando for dado um duplo clique no nome do arquivo, este evento dar partida ao seu procedimento (a seguir), que chamar o evento cmdOk_Click. Private Sub filArquivos_DblClick ( ) cmdOk_Click End Sub Entre com o seguinte cdigo para o boto cmdOk: Private sub cmdOk_click ( ) On Error GoTo Erro If Right$(dirDiretrio, 1) = \ Then Arquivo$ = dirDiretrio.Path + filArquivos.filename Else Arquivo$ = dirDiretrio.Path + \ + filArquivos.filename End If Open Arquivo$ For Input As #1 frmBloco.txtTexto.Text = Input$ (LOF(l) #1) Close #1 frmAbrir.Hide Exit Sub Erro: MsgBox Erro de Arquivo, 49, Erro Close #1 End Sub No cdigo, a funo Right$ - Right$(dirDiretrio.Path,1), verifica qual o ltimo caractre do caminho do diretrio selecionado. Ela retorna n caracteres da direita para a esquerda de um string, e sua sintaxe a seguinte: Right$(expresso, n) Onde: expresso - uma cadeia de caracteres numricos ou no. n - so quantos caracteres se quer retornar. Pgina: 62 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Ex: txtTexto.Text = Right$(impresso, 3), Ser exibido no quadro de texto as letras so. O cdigo verifica se o caminho atual possui \ no seu final, caso no exista, ele adiciona varivel Arquivo$ que contm o caminho e nome do arquivo a ser aberto com a declarao Open. A linha frmBloco.txtTexto.Text = Input$(LOF(1), #1), l o contedo do arquivo que foi aberto com o nmero 1, transferindo este contedo a uma varivel ou objeto, no nosso caso para o objeto - txtTexto. Input$ (n, #nmero) Onde: n - indica o nmero de caracteres a serem lidos do arquivo. #nmero - o nmero do arquivo a ser lido. A funo LOF, Input$(LOF(1),#1 ), retorna o tamanho em bytes de um arquivo aberto. LOF (nmero) Onde: nmero - o nmero do arquivo a ser lido. Falta o boto cancelar, que esconder o formulrio - frmAbrir, sem executar nada. Private Sub cmdCancelar_Click ( ) frmAbrir.Hide End Sub Salve e execute o projeto testando todas as opes apresentadas. Pgina: 63 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 MTODOS GRFICOS Embora o uso dos mtodos grficos - que permitem desenhos de linhas, crculos e animaes sejam complexos, poder ser divertido e til para quem deseja sofisticar seus programas. A seguir, conheceremos tais recursos atravs de exem- plos simples. O sistema de coordenadas do Visual Basic possui o seu ponto de incio (0,0) no canto superior esquerdo, ao contrrio do que ns estamos acostumados. Existem no VB, diversos tipos de escala, so elas: 1. Twip = 1440 twips por polegada; 567 twips por centmetro. (Default) 2. Point =72 points por polegada. 3. Pixel = Unidade do monitor ou resoluo da impressora. 4. Character = horizontal - 120 twips por unid.; vertical - 240 twips por unid. 5. Polegada 6. Milmetro 7. Centmetro Estas escalas so definidas para cada objeto grfico (formulrio, picture box e impressora), na propriedade ScaleMode. DESENHO DE PONTO Para desenharmos um ponto utilizamos o mtodo Pset; objeto.Pset [Step] (x,y) [,cor] Onde: Objeto - objeto onde o ponto ser desenhado, se for omitido o ponto ser desenhado no formulrio corrente. Step - especifica que as coordenadas sero relativas posio corrente, propriedades CurrentX e CurrentY. x,y - coordenadas horizontal e vertical Cor - especifica uma cor para o ponto, se for omitida, ser usada a cor da propriedade ForeColor do objeto. Pgina: 64 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Inicie um novo projeto, e digite o cdigo a seguir para o evento Load do Formu- lrio. Aperte a tecla F5 para rodar o projeto e observe se algum ponto aparece no centro do formulrio. O ponto no aparece, porque teremos que alterar a propriedade do formulrio AutoRedraw = True. Esta propriedade redesenha um grfico ou formulrio automaticamente quando houver alguma alterao nele ou, encoberto por outra janela. Quando usamos o evento Load para desenhar grficos, temos que deixar AutoRedraw = True. Altere a propriedade e execute o projeto novamente. Para desenharmos outro ponto distante do primeiro em 100 Twips, usamos a palavra Step (figura abaixo), e para mudarmos a dimenso do ponto, basta alte- rar o valor da propriedade DrawWidth do formulrio. Pgina: 65 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Mude a propriedade do formulrio ScaleMode = Point, e execute novamente o projeto. Caso o ponto no aparea no formulrio, basta redimensionar o formu- lrio durante a execuo, e observe o aumento da distncia entre os pontos com a mudana na escala. Teste os outros tipos de escala, alterando a propriedade ScaleMode do formulrio. Pgina: 66 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 CORES Para determinarmos a cor de um objeto grfico, temos 3 formas diferentes, so elas: 1. RGB (NRed, NGreen, NBlue), onde NRed, NGreen e NBlue podem variar de 0 a 255. Ponto vermelho: Pset (100,100), RGB(255,0,0) 2. Definir a propriedade ForeColor do objeto antes de desenhar o grfico, no alterando o que j estava desenhado. Ponto Magenta: ForeColor = RGB(226, 0, 127) Pset (100,100) 3. Usando a funo QBColor, que possui valores inteiros para as 16 cores mais utilizadas. Ponto Ciano: PSet (ScaleWidth / 2, ScaleHeight / 2), QBColor(11) Vamos fazer um exemplo utilizando os trs mtodos para cor, mas antes certifi- que-se que a propriedade DrawMode esteja com o valor 3-Copy Pen. Private Sub Form_Load ( ) PSet (50, 50), RGB(255,0,0) Vermelho ForeColor = RGB (255,0,255) PSet Step (200,0) Magenta PSet (ScaleWidth/2,ScaleHeight/2), QBColor (11) Ciano End Sub Pgina: 67 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 LINHA Para desenhar linhas, use o mtodo Line: [objeto.] Line [ [Step a ] (x1,y1) ] - [Step b ] (x2,y2) [, [cor], [B], [F] ] Onde: Objeto - objeto onde ser desenhada a linha (formulrio, picture box ou impressora). Step a - especifica que as coordenadas so relativas posio corrente, propriedades CurrentX e CurrentY. (x1,y1) - coordenadas do ponto inicial. Step b - especifica que as coordenadas do ponto final so relativas s coordenadas do ponto inicial. (x2,y2) - coordenadas do ponto final. Cor - especifica a cor que a linha ser desenhada. B - opo que desenha um retngulo usando as coordenadas de cantos opostos. F - especifica que o retngulo ser preenchido com a mesma cor usada para desenhar a borda do retngulo. Se no for usada, o retngulo ser preenchido com o valor da propriedade FillColor do objeto. Digite o cdigo abaixo, no esquecendo de alterar as propriedades do formulrio: AutoRedraw = True e BackColor = branco. Private Sub Form_Load() Dim SW As Integer, SH As Integer SW = ScaleWidth Largura do formulrio SH = ScaleHeight Altura do formulrio Line (SW/2, 50)-(50, 2*SH/3) L1 Line Step(0,0)-(SW/2, SH/2), RGB(255,0, 0) L2 Line Step(0,0)-Step(SW/2-50,SH/6), RGB(0,0,255) L3 Line (SW-50, 2*SH/3)-(SW/2,50), RGB(226,0,127) L4 End Sub Pgina: 68 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Note que a coordenada do ponto final da segunda linha (SW/2, SH/2) interpre- tado como um valor absoluto, enquanto a coordenada de ponto inicial (0,0) usa como referncia o CurrentX e CurrentY - (50, 2*SH/3). Para desenhar um retngulo, usaremos o mtodo Line com a opo B, preen- chendo este retngulo, usaremos tambm a opo F. Private Sub Form_Load ( ) Line (100,100) - (1500,1500), RGB (255,0,0), B Line (1700,100)-Step(1400,1400), RGB(0,100,0), BF End Sub Vamos alterar agora as propriedades de preenchimento do formulrio, FillColor=RGB(255,255,0) e FillStyle=3 - Vertical Line. Estas propriedades determinam a cor e o padro de preenchimento e podem ser modificadas tanto em tempo de projeto, quanto em tempo de execuo. Pgina: 69 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Entre com o seguinte cdigo: Private Sub Form_Load ( ) Line (100,100) - (1500,1500), RGB (255,0,0), B FillColor = RGB (255,255,0) FillStyle = 0 Line (1700,100)-Step(1400,1400), RGB(0,100,0), B End Sub Faa o exemplo abaixo para visualizar todos os tipos de preenchimento; Private Sub Form_Click ( ) Static I As Integer Dim SW As Integer, SH As Integer SW = ScaleWidth Largura do formulrio SH = ScaleHeight Altura do formulrio If I > 3 Then End Cls Limpa o formulrio FillStyle = I Line (SW/4, SH/5)-(3*SW/4, 2*SH/5),,B FillStyle = I + 4 Line (SW/4, 3*SH/5)-(3*SW/4, 4*SH/5),,B I = I + 1 End Sub Neste procedimento, quando damos um clique no formulrio, aparecero dois tipos de preenchimento, at o ltimo, quando o programa ser finalizado. A declarao Static I As Integer, declara a varivel I como um inteiro e o seu valor no reinicializado junto com o procedimento, o VB armazena o ltimo valor de I para ser utilizado na prximo vez que o evento Click ocorrer. Pgina: 70 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 A figura acima ilustra todos os tipos de preenchimento (FillStyle). Existem ainda as propriedades DrawStyle e DrawWidth, que veremos a seguir. DrawStyle Define o estilo da linha a ser desenhada no objeto grfico. Pode ser definida tanto em tempo de projeto, quanto em tempo de execuo. [objeto.] DrawStyle = estilo Estilos: 0 - slida 1 - tracejada 2 - pontilhada 3 - trao-ponto 4 - trao-ponto-ponto 5 - transparente 6 - interna Normalmente o VB usa como referncia o centro da linha, usando a propriedade DrawStyle=6, ele passa a usar a parte externa da linha como referncia. Entre com o cdigo a seguir para visualizar as opes de DrawStyle: Private Sub Form_Click ( ) Dim SW As Integer, SH As Integer SW = ScaleWidth SH = ScaleHeight For I% = 1 To 7 DrawStyle = I% - 1 Line (0, I%*SH/8)-(SW, I%*SH/8) Next I% End Sub Pgina: 71 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 DrawWidth Define a espessura da linha em pixel, a ser desenha no objeto grfico e pode variar de 1 at 32.767. Se a propriedade DrawStyle estiver entre 1 e 4 e a DrawWidth for maior que 1, o estilo passar para slido (DrawStyle=0). Ou seja, no conseguiremos desenhar linhas pontilhadas e tracejadas (modificando a propriedade DrawStyle) com espessura maior que 1 pixel. [objeto.] DrawWidth = tamanho Execute o exemplo abaixo para visualizar as opes: Private Sub Form_Load() Dim SW As Integer, SH As Integer Dim I As Integer, J As Integer SW = ScaleWidth SH = ScaleHeight DrawStyle = 1 For I = 1 To 11 Step 2 DrawWidth = I J = Int(I / 2) + 1 Line (0, J * SH / 7)-(SW, J * SH / 7) Next I End Sub Pgina: 72 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 CRCULOS Para desenhar crculos, usamos o mtodo Circle. Que desenha crculos, elipses ou arcos em um objeto grfico. [objeto,] Circle [Step] (x,y), radius , [cor], [start], [end], [aspect] Onde: Step - palavra que indica que a coordenada de centro ser relativa posio corrente. (x,y) - coordenadas de centro do crculo, elipse ou arco. Radius - raio do crculo, elipse ou arco. Cor - especifica a cor para o crculo Start/End - valores que especificam o incio e fim do arco a ser dese- nhado. Valores expressos em radianos, o default 0 radianos para Start e 2p radianos para End. Aspecto - indica a proporo entre os raios, sendo na elipse diferente de 1. No crculo perfeito o aspecto igual a 1. Faa o projeto Crculo conforme exemplo a seguir, para visualizar o mtodo Circle. Pgina: 73 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 As trs Vertical Scroll Bar serviro para modificar os parmetros do mtodo Circle. Ou seja, poderemos desenhar um crculo, elipse ou arco dentro do Picture Box. Existem cinco propriedades primrias das barras de paginao em que estamos interessados: Min, Max, Value, LargeChange e SmallChange. Onde: Min - valor numrico atribudo ao lado superior ou esquerdo da barra de paginao. Max - valor numrico atribudo ao lado inferior ou direito da barra de paginao. Value - valor correspondente posio do marcador na barra. Que est entre Min e Max. LargeChange - indica a quantidade que a propriedade Value dever variar toda vez que o usurio acionar a barra acima ou abaixo do marcador. SmallChange - indica a quantidade que a propriedade Value dever variar quando o usurio acionar as setas da barra de paginao. O procedimento Form_Load desenhar um crculo no centro Picture Box e de- pois atribuir valores s propriedades Value das barras de paginao. Private Sub Form_Load() Dim SW As Integer, SH As Integer SW = picCirculo.ScaleWidth SH = picCirculo.ScaleHeight picCirculo.Circle (SW/2, SH/2), SW/10, RGB(255, 0, 0) vsbRaio.Max = SW/2 vsbRaio.Value = SW/10 vsbArco.Value = 199 vsbAspecto.Value = 10 End Sub O evento mais utilizado com as barras de paginao, o evento Change, que ocorre toda vez que o usurio move o marcador. E como este evento ir redesenhar o crculo com os novos padres, devemos criar um procedimento geral de formulrio. Private Sub vsbArco_Change() RedesenhaCirculo End Sub Pgina: 74 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Private Sub vsbAspecto_Change() RedesenhaCirculo End Sub Private Sub vsbRaio_Change() RedesenhaCirculo End Sub Digite o cdigo do procedimento geral de formulrio RedesenhaCirculo. Public Sub RedesenhaCirculo( ) Dim SW As Integer, SH As Integer SW = picCirculo.ScaleWidth SH = picCirculo.ScaleHeight picCirculo.Cls Raio = vsbRaio.Value Fim = vsbArco.Value / 100 * 3.1415 Aspecto = vsbAspecto.Value / 10 picCirculo.Circle(SW/2,SH/2),Raio,RGB(255,0,0),0,Fim, Aspecto End Sub O procedimento acima ir redesenhar o crculo toda vez que o usurio mover o marcador de qualquer uma das barras de paginao. Para redesenhar o crculo, ele utilizar a propriedade Value das barras como parmetros. Pgina: 75 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 CARREGANDO FIGURAS Podemos carregar seis tipos de arquivos de figura: BMP (mapa de bits) GIF (graphical interchange format) ICO (cones) JPEG (joint photographics experts group) RLE (run-length encoded) WMF (windows metafiles) Inserimos figuras em, formulrios, quadros de figura e controle imagem. Exis- tem diferenas entre o controle imagem e o quadro de figura: Controle Imagem - No faz linhas nem crculos. Muda automaticamente de tamanho de acordo com a figura. Ajusta a figura de acordo com o seu tamanho se a pro- priedade Strech (esticar) = True. Permite redimensionar a figura depois de carregada. Requer menos recursos do sistema, mostrando figura mais rapidamente Para carregar uma figura em um objeto, use a funo LoadPicture atribuindo o nome do desenho na propriedade Picture do objeto. objeto.Picture = LoadPicture (caminho e nome da figura) A propriedade Picture pode ser modificada tanto em tempo de projeto quanto em tempo de execuo. Como exemplo, vamos construir o projeto semforo. Pgina: 76 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Altere a propriedade Autosize = True do Pictutre Box, para que ele ajuste o seu tamanho ao da figura que ser carregada. Selecione a propriedade Picture do Pictutre Box e escolha a figura C:\...\TrafficA.ico no quadro de dilogo Load Picture. Ajuste as coordenadas (propriedades X1, X2, Y1 eY2) e a largura do objeto Line, para um acerto com o Quadro de Figura. Quando o usurio der um clique no boto Mudar, o semforo mudar de estado. Vamos agora construir o cdigo para este evento. Private Sub cmdMudar_Click() Static Sinal As Integer If Sinal = 0 Then Picture1.Picture = LoadPicture(C:\...\TrafficB.ico) Sinal = 1 ElseIf Sinal = 1 Then Picture1.Picture = LoadPicture(C:\...\TrafficC.ico) Sinal = 2 ElseIf Sinal = 2 Then Picture1.Picture = LoadPicture(C:\...\TrafficA.ico) Sinal = 0 End If End Sub No exemplo anterior, toda vez que o usurio selecionar o boto Mudar, uma nova figura ser carregada no Picture1. Mas poderemos tambm colocar no formul- rio trs Picture Box, cada um com uma figura diferente e ir modificando a propri- edade Visible desses quadros. No nosso projeto de semforo, insira mais dois quadros de figura e posicione-os no mesmo local do primeiro, um em cima do outro definindo as propriedades Picture e Visible, como segue: Pgina: 77 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Picture1.Picture = C:\...\TrafficA.ico Picture1.Visible = True Picture2.Picture = C:\...\TrafficB.ico Picture2.Visible = False Picture3.Picture = C:\...\TrafficC.ico Picture3.Visible = False E tambm vamos eliminar o boto de comando, inserindo em seu lugar o controle Timer - . Este controle gera o evento Timer a intervalos de tempo determina- dos pela propriedade Interval. Esta propriedade expressa em milisegundos, se quisermos um intervalo de 2 segundos: Interval = 2000. Private Sub Timer1_Timer() Static Sinal As Integer If Sinal = 0 Then Picture1.Visible = True Picture3.Visible = False Sinal = 1 ElseIf Sinal = 1 Then Picture2.Visible = True Picture1.Visible = False Sinal = 2 ElseIf Sinal = 2 Then Picture3.Visible = True Picture2.Visible = False Sinal = 0 End If End Sub Execute o projeto alterando a propriedade Interval do Timer1, observando as mudana Pgina: 78 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 EXEMPLO IV - JOGO DA FORCA Neste exemplo voc aprender a trabalhar com botes de opo, controle Image, evento de teclado e evento de mouse, enquanto constri um divertido e simples jogo. Construa o fomulrio seguindo a figura abaixo. Tenha o cuidado de inserir primeiro o controle Frame e s depois os botes de opo dentro dele. No Windows usamos botes de opo quando temos que escolher entre opes mutuamente excludentes, ou seja, apenas uma das opes pode estar seleciona- da. Em um formulrio podemos ter somente um boto de opo selecionado de cada vez. Caso o projeto necessite de mais de um grupo de seleo, utilizamos o objeto Frame para separar os diferentes grupos. O jogo funciona da seguinte forma: 1. O usurio escolhe o nvel de dificuldade que deseja. 2. Clica no boto Iniciar. 3. O programa escolhe uma palavra de sua matriz. 4. O usurio digita uma letra qualquer. Pgina: 79 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 5. Esta letra mostrada na caixa de texto. 6. Se a letra digita estiver na palavra escolhida pelo programa, ela mostrada no Label correspondente, seno aparece uma parte da figura no controle Image. 7. Se o usurio acertou a palavra antes de seis tentativas, exibe mensagem que ganhou o jogo, seno a figura se completa e perde a cabea aps o usurio fechar uma caixa de mensagem. Caso o usurio queira uma dica, basta pressionar o boto do mouse junto com a tecla Ctrl sobre uma Label vazia, que ser mostrada a letra desta posio. Carregue as figura Fig0.gif at Fig6.gif nos controles Image seguindo o index de cada controle. Estas figuras GIF possuem transparncias o que facilita a monta- gem da imagem em partes separadas e sobrepostas. Comeamos criando os procedimentos gerais do formulrio: Public Sub ApagarFigura() Apaga a figura a move a cabea para a posio original For I = 0 To 6 imgFigura(I).Visible = False Next I imgFigura(6).Move 240, 1080 txtLetraDig.Text = End Sub Para mover um objeto usamos o mtodo Move que possui a seguinte sintaxe; objeto.Move left[,top[,width[,height] ] ] Onde: left - coordenada horizontal top - coordenado vertical width - nova largura height - nova altura Pgina: 80 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Public Sub MoverCabea() Move a cabea para baixo, com uma curva exponencial Dim X As Single, Y As Single For X = 0 To 840 Step 30 Y = (X ^ 2 * 0.002) + 1080 imgFigura(6).Move (X + 240), Y Next X End Sub Public Sub ApagarLetraLinha() Apaga as letras e as linhas For I = 0 To 5 lblLetra(I).Caption = linLinha(I).Visible = False Next I txtLetraDig.Text = End Sub Declare as variveis gerais para o formulrio: Private Palavras(2, 4) As String Matriz com as palavras Private Palavra As String Palavra selecionada Private Nivel As Integer Nvel escolhido Private Letras As Integer Nmero de letras da palavra Private Jogada As Integer Nmero da jogada Private AchouQuantas As Integer Nmero de letras corretas Quando o programa inicializado ocorre o evento Load para o formulrio. neste procedimento de evento que sero carregados os valores da matriz Pala- vras(2,4), onde as colunas representaro o nvel de dificuldade e as linhas tero as palavras de cada nvel. Tambm neste procedimento feita a inicializao dos controles Label, Image e Option Button. Private Sub Form_Load() Fcil Palavras(0, 0) = SAL Palavras(0, 1) = BACIA Pgina: 81 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Palavras(0, 2) = CABRA Palavras(0, 3) = COLHER Palavras(0, 4) = ABRIR Mdio Palavras(1, 0) = BACURI Palavras(1, 1) = BELEZA Palavras(1, 2) = CIDRA Palavras(1, 3) = LAGO Palavras(1, 4) = RIFA Difcil Palavras(2, 0) = ACEIRO Palavras(2, 1) = CHOUPO Palavras(2, 2) = REBOAR Palavras(2, 3) = MITRA Palavras(2, 4) = HERTZ Randomize Inicia gerador de nmeros aleatrios Nivel = 0 Seleciona nvel Fcil optNivel(0).Value = True Seleciona opo do nvel Fcil ApagarFigura ApagarLetraLinha End Sub Aps a inicializao do programa o usurio ter que escolher o nvel de dificulda- de, dando um clique em um dos botes de opo, armazenando o valor do nvel na varivel Nivel. Private Sub optNivel_Click(Index As Integer) O parmetro Index contm o valor da propriedade Index do boto escolhido Nivel = Index End Sub Quando o usurio der um clique no boto Iniciar, o programa gera um nmero aleatrio para a escolha da linha na matriz Palavras ( ). A linha escolhida junto com o nvel escolhido representaro a palavra escolhida, depois disso o programa mostrar somente as linhas que tero letras sobre elas. Private Sub cmdIniciar_Click() Dim NPal As Integer, I As Integer NPal = Int(Rnd * 5) Pgina: 82 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Palavra = Palavras(Nivel, NPal) A funo Len retorna a quantidade de caracteres Letras = Len(Palavra) For I = 0 To Letras - 1 linLinha(I).Visible = True Next I txtLetraDig.SetFocus Jogada = 0 AchouQuantas = 0 ApagarFigura End Sub EVENTO DO TECLADO O prximo passo ser o tratamento das letras digitas pelo usurio. Utilizamos o evento de teclado KeyPress que ocorre toda vez que uma tecla pressionada e depois liberada. Este evento estar ligado caixa de texto txtLetraDig e ser a alma do progra- ma. Ele recebe a letra digitada, verifica se existe na palavra escolhida, se existir mostra a letra, se no mostra uma parte da figura e aumenta a jogada. Quando terminadas as chances move a cabea para fora do corpo - na figura. A funo Mid$, retorna um String que parte de outro String. Mid$ (string, comeo [,comprimento] ) Onde: string - a cadeia de caracteres original comeo - especifica a partir de qual caractere comear a extrao. comprimento - indica quantos caracteres se deseja extrair. Ex: Palavra$ = Mid$ (Constituio,2,4) equivale a: Palavra$ = onst Private Sub txtLetraDig_KeyPress(KeyAscii As Integer) O parmetro KeyAscii envia o valor da tecla pressionada Dim Letra As String Armazena a letra a verificar Pgina: 83 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Dim AscLetra As Integer Contm o cdigo ASCII da letra Dim Achou As BooleanPode ser True ou False Achou = False For I = 1 To Letras Letra = Mid$(Palavra, I, 1) Asc retorna o valor na tabela ASCII da Letra AscLetra = Asc(Letra) If (KeyAscii=AscLetra) Or (KeyAscii-32=AscLetra) Then lblLetra(I - 1).Caption = Letra Achou = True AchouQuantas = AchouQuantas + 1 If AchouQuantas = Letras Then MsgBox Voc acertou ApagarLetraLinha End If End If Next I If Not Achou Then imgFigura(Jogada).Visible = True If Jogada = 5 Then imgFigura(0).Visible = False imgFigura(6).Visible = True MsgBox Voc errou MoverCabea ApagarLetraLinha End If Jogada = Jogada + 1 End If End Sub EVENTOS DO MOUSE Para finalizar a construo deste exemplo esto faltando os procedimentos de evento para os eventos do mouse que funcionaro como dica para o usurio. Os eventos utilizados so o MouseDown que ocorre quando um boto pressi- onado, e o evento MouseUp que ocorre quando um boto liberado. Ambos eventos enviam para o procedimento, qual boto foi pressionado, se alguma tecla de controle est pressionada (Alt, Ctrl, Shift) junto com o boto e a posio do mouse. Pgina: 84 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Private Sub objeto.MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single) Onde: Button - o boto pressionado, sendo Esquerdo = 0 ; Direito = 2 ; Central = 4 Shift - indica a tecla de controle, podendo ser um somatrio, sendo Shift = 1 ; Ctrl = 2 ; Alt = 4 X e Y - indicam a posio Private Sub lblLetra_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) O parmetro Index contm o index do lblLetra Dim I As Integer If Shift = 2 Then I = Index + 1 lblLetra(Index).Caption = Mid$(Palavra, I, 1) End If End Sub Private Sub lblLetra_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) lblLetra(Index).Caption = End Sub Pgina: 85 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 EXEMPLO V - CATLOGO Neste projeto, conheceremos a importncia das variveis compostas e array, o uso do comando de impresso, e trabalharemos com acesso a arquivos do tipo aleatrio, todas essas informaes sero apresentadas atravs de um catlogo de nomes e telefones. Inicie um novo projeto e crie o formulrio como a figura abaixo. Vamos construir um menu para o nosso catlogo. Selecione o formulrio Catlo- go e escolha a opo Menu Editor... do menu Tool, e monte-o conforme a tabela a seguir. Caption Shortcut Name &Arquivo mnuArquivo &Abrir Ctrl+A itmAbrir &Salvar Ctrl+S itmSalvar - itmSep1 &Imprimir Ctrl+P itmImprimir - itmSep2 Sai&r itmSair Pgina: 86 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Um mdulo contm as variveis e procedimentos que podero ser acessados por toda a aplicao, ou seja, qualquer outro procedimento de qualquer formulrio poder chamar um outro procedimento do mdulo. Ou ento, pode ser dado um valor a uma varivel em um formulrio e este valor ser lido por outro formulrio, quando esta varivel declarada no mdulo. Para inserir um mdulo ao projeto, basta escolher a opo Add Module do menu Project ou selecione o boto Add Module ( ) na barra de ferramentas. Abrindo o quadro de dilogo Add Module mostrado a seguir, escolha Module e Abrir.
Logo aps, digite o cdigo no editor de cdigo do mdulo, mostrado na figura abaixo. Pgina: 87 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 VARIVEIS COMPOSTAS E ARRAY No cdigo do mdulo construdo anteriormente, estamos declarando uma vari- vel composta (Registro) contendo os campos Nome, Telefone e Comentarios como String de tamanho fixo. Uma varivel do tipo String, no precisa ter o seu tamanho definido, a menos que estejamos preparando registros de arquivos. Declaramos tambm um Array Dinmico de varivel ( Dados() ). Quando declaramos um Array Dinmico estamos maximizando o uso da memria pois poderemos dimension-lo para o tamanho ideal a qualquer momento. Para redimensionar um Array Dinmico utilize a declarao ReDim informando a dimenso desejada. A varivel Dados() declarada como sendo do tipo Registro, declarado anterior- mente, desta forma teremos dentro da varivel Dados() os campos Nome, Tele- fone e Comentarios, que podero ser acessados usando o operador (.) ponto: Dados(5).Nome = Carlos Dados(5).Telefone = 981-0000 Dados(5).Comentarios = Bom pagador Neste Mdulo tambm estamos declarando a varivel TotalRegistros que con- ter o nmero total de registros armazenados e a varivel Ponteiro indicando o nmero do registro atual. Digite o cdigo para cada objeto e evento do formulrio catlogo (frmCatlogo), como os exemplos a seguir. Adicionar O procedimento de evento cmdAdicionar_Click, executar instrues de acordo com a seguinte situao: Quando a legenda do boto for Novo, apenas limpa as caixas de texto e muda a legenda para Adicionar. Pgina: 88 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Quando Adicionar, gravado o contedo das caixas de texto na varivel Da- dos() com o ndice do ltimo registro existente mais 1. E utilizamos o mtodo AddItem para adicionar um novo nome ao quadro de lista do formulrio frmProcurar, que ainda ser criado. O mtodo AddItem serve para adicionar um novo item a um Quadro de Lista ou Quadro Combo: controle.AddItem item [,index] Private Sub cmdAdicionar_Click() If cmdAdicionar.Caption = &Novo Then txtNome.Text = txtTelefone.Text = txtComentario.Text = cmdAdicionar.Caption = A&dicionar Else TotalRegistros = TotalRegistros + 1 Dados(TotalRegistros - 1).Nome = txtNome.Text Dados(TotalRegistros - 1).Telefone = txtTelefone.Text Dados(TotalRegistros-1).Comentarios=txtComentarios.Text frmProcurar.lstListaNomes.AddItem txtNome.Text cmdAdicionar.Caption = &Novo Ponteiro = TotalRegistros End If txtNome.SetFocus End Sub Procurar O boto Procurar ir abrir uma segunda janela para pesquisa dos dados deseja- dos Private Sub cmdProcurar_Click() frmProcurar.Show 1 End Sub Insira um novo formulrio, e deixe-o como a figura a seguir. Pgina: 89 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Com a janela de cdigo do formulrio frmProcurar exibida, selecione a opo Add Procedure... do menu Tools, para inserir um procedimento geral de formul- rio. D o nome de ObterItem para este procedimento. Digite o cdigo a seguir: Public Sub ObterItem( ) Dim As integer For I = 0 To TotalRegistros - 1 If RTrim$(Dados(I).Nome) = RTrim$(lstListaNomes.Text) Then Exit For Next I frmCatlogo.txtNome.Text = Dados(I).Nome frmCatlogo.txtTelefone.Text = Dados(I).Telefone frmCatlogo.txtEndereo.Text = Dados(I).Endereo frmProcurar.Hide End Sub A Estrutura de Repetio For...Next ir procurar em todos os campos Nome da varivel Dados( ) um Nome igual ao nome selecionado no quadro de lista e, quando achar, sair do loop (mantendo o valor de I), atribuindo os valores dos campos aos quadros de texto do frmCatlogo. Pgina: 90 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 A funo RTrim$ (expresso), elimina os espaos existentes aps o String. Esta funo tem outras semelhantes, LTrim$ (expresso) que elimina os espaos antes e, Trim$ (expresso) que elimina os espaos antes e depois do String. No procedimento acima usamos RTrim$, porque foi reservado um espao de trinta (30) caracteres para o campo Nome e na comparao entre expresses, o n- mero de espaos tambm comparado. A seguir, encontraremos os cdigos para os botes Cancelar e Ok, e a chamada para a procedure ObterItem aps um duplo clique sobre um dos nomes da lista. Private Sub cmdCancelar_Click() frmProcurar.Hide End Sub Private Sub cmdOk_Click() ObterItem End Sub Private Sub lstListaNomes_DblClick() ObterItem End Sub Toda vez que o formulrio frmProcurar for mostrado interessante que ele mos- tre uma lista atual de nomes. Para atualizar esta lista usamos o evento Activate, que ocorre toda vez que o formulrio se torna a janela ativa. Neste caso no usaremos o evento Load, pois este evento s ocorrer na primei- ra vez que esta janela for mostrada pois para escond-la usamos o mtodo Hide que no remove o formulrio da memria. Private Sub Form_Activate() lstListaNomes.Clear For i = 0 To TotalRegistros - 1 If Dados(i).Nome <> Then lstListaNomes.AddItem Dados(i).Nome End If Next i End Sub Pgina: 91 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 No formulrio frmProcurar, podemos substituir o quadro de lista por um quadro combo, porque ambos trabalham de forma semelhante. Para isto, selecione o quadro de lista e escolha a opo Delete no menu Edit para retirar este controle do formulrio. Insira no mesmo local um quadro Combo, como segue: O quadro Combo possui o mesmo nome do quadro de lista para no termos que alterar o cdigo. A propriedade Style, determina qual tipo de quadro combo iremos trabalhar, podendo ter os seguintes estilos: 0 - Dropdown Combo; inclui uma lista de queda e um quadro de texto. O usurio pode selecionar um item da lista ou digitar no quadro de texto. 1 - Simple Combo; inclui uma lista sempre visvel e um quadro de texto. 2 - Dropdown List; Mostra somente uma lista de queda onde o usurio escolhe- r o seu item. Atualizar O boto Atualizar atualiza o contedo do registro atual (Ponteiro) no formulrio frmCatalogo e no frmProcurar, removendo e depois adicionando o item relativo Ponteiro. Private Sub cmdAtualizar_Click() Dados(Ponteiro).Nome = txtNome.Text Dados(Ponteiro).Telefone = txtTelefone.Text Dados(Ponteiro).Comentarios = txtComentarios.Text O mtodo RemoveItem remove o item indicado em Ponteiro. Pgina: 92 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 O mtodo RemoveItem remove o item indicado frmProcurar.lstListaNomes.RemoveItem Ponteiro frmProcurar.lstListaNomes.AddItem txtNome.Text, Ponteiro txtNome.SetFocus End Sub Excluir O boto Excluir limpa os valores da varivel Dados () e substitui o registro vazio pelo registro subseqente. Nesta substituio utilizada a estrutura de repetio condicional While condio ... instrues ... Wend, que executa as instrues enquanto a condio for verdadeira. Private Sub cmdExcluir_Click() Dados(Ponteiro).Nome = Dados(Ponteiro).Telefone = Dados(Ponteiro).Comentarios = txtNome.Text = txtTelefone.Text = txtComentarios.Text = txtNome.SetFocus TotalRegistros = TotalRegistros - 1 While Ponteiro + 1 <= TotalRegistros Dados(Ponteiro) = Dados(Ponteiro + 1) Ponteiro = Ponteiro + 1 Wend End Sub Load e Resize Se voc reparar, abaixo na barra de menu dos aplicativos Windows existem duas linhas (cinza e branca) separando o menu da rea do cliente. Estas duas linhas sero construdas quando o formulrio for carregado na memria e sero redesenhadas quando este mesmo formulrio for redimensionado pelo cliente. Inclua o procedimento FazerBarra listado a seguir, no mdulo. Pgina: 93 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Public Sub FazerBarra() Dim SX As Integer SX = ScaleWidth frmCatalogo.Line (0, 0)-(SX, 0), RGB(100, 100, 100) frmCatalogo.Line (0, 1)-(SX, 1), RGB(255, 255, 255) End Sub Digite o seguinte procedimento para o evento Load do formulrio frmCatalogo. Private Sub Form_Load() ReDim Dados(100) Redimensiona a varivel Dados() FazerBarra TotalRegistros = 0 End Sub Quando o usurio redimensiona uma janela o evento Resize ocorre, redesenhando as linhas. Private Sub Form_Resize() FazerBarra End Sub Teste o programa inserindo alguns nomes e depois fazendo uma pesquisa no formulrio Procurar, e depois exclua alguns deles. CAIXAS DE DILOGO PADRO No exemplo do Bloco de Notas, construmos um quadro de dilogo para Salvar o arquivo e outro para Abrir um arquivo existente, neste projeto utilizaremos o controle Common Dialog que permite a utilizao das janelas padro do Windows. Antes de utilizar este componente devemos adicion-lo ao projeto utilizando o menu Projects opo Components..., selecionando a opo indicada na figura a seguir. Pgina: 94 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Insira o controle CommonDialog ( ) no formulrio, no se preocupando com sua posio pois ele no visvel em tempo de execuo. Usaremos este controle basicamente para abrir um arquivo e obter o nome de um arquivo a ser salvo. Defina as seguintes propriedades: Name= dlgArquivo CancelError = True Filter = Arquivo (*.dat)|*.dat|Texto (*.txt)|*.txt A propriedade Filter especifica os tipos de arquivos que sero mostrados na combo box de tipos de arquivo no dilogo. O controle CommonDialog pode mostrar as seguintes caixas de dilogo usando mtodos especficos. Mtodos Caixas de dilogo ShowOpen Show Open Dialog Box ShowSave Show Save As Dialog Box ShowColor Show Color Dialog Box ShowFont Show Font Dialog Box ShowPrinter Show Print or Print Options Dialog Box ShowHelp Invokes the Windows Help Engine Pgina: 95 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Iniciamos a construo do processo de salvar e abrir arquivos digitando alguns procedimentos no mdulo. Abrir arquivo Este procedimento abre uma caixa de dilogo para o usurio escolher um arquivo para abrir. E depois abre este arquivo no modo randmico, carregando seus registros na varivel Dados ( ). A leitura em um arquivo de acesso randmico feita com a declarao Get. Get #nmeroarquivo, nmeroregistro, varivel Onde: varivel - indica onde ser guardado o registro lido. nmeroregistro - opcional e indica o registro que queremos ler, no exemplo, a declarao Get incrementa automaticamente o nmeroregistro. Sub AbrirArquivo() On Error Resume Next Se algum erro ocorrer, executa a linha seguinte Dim NomeArquivo As String Dim NumeroRegistros As Integer Contm total de registros Dim Reg As Registro Usado apenas como referencia frmCatalogo.dlgArquivo.FileName = frmCatalogo.dlgArquivo.ShowOpen If Err <> 32755 Then Verifica se Cancel foi pressionado NomeArquivo = frmCatalogo.dlgArquivo.FileName End If Open NomeArquivo For Random As #1 Len = Len(Reg) NumeroRegistros = LOF(1) / Len(Reg) ReDim Dados(NumeroRegistros) Screen.MousePointer = 11 Muda ponteiro p/ ampulheta For I = 1 To TotalRegistros frmProcurar.lstListaNomes.RemoveItem 0 Next I For I = 1 To NumeroRegistros Get #1, , Dados(I - 1) frmProcurar.lstListaNomes.AddItem Dados(I - 1).Nome Next I Pgina: 96 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Close #1 TotalRegistros = NumeroRegistros frmCatalogo.txtNome.Text = RTrim$(Dados(0).Nome) frmCatalogo.txtTelefone.Text = RTrim$(Dados(0).Telefone) frmCatalogo.txtComentarios.Text = RTrim$(Dados(0).Comentarios) Ponteiro = 1 Screen.MousePointer = 0 Volta ponteiro ao normal End Sub Obter nome do arquivo Antes de salvar um arquivo, necessrio escolher um nome para ele. Mas para o sistema operacional o nome consta de todo o caminho para se chegar at o arquivo desejado. Por isso utilizaremos uma Common Dialog para escolher alm do nome, o local onde dever ser armazenado o arquivo de catlogo. Construiremos uma funo que abrir a caixa de dilogo para salvar retornando o nome escolhido pelo usu- rio. Toda funo retorna um valor aps ser executada, e este valor geralmente est associado uma varivel com o mesmo nome desta funo. Function ObterNomeArquivo(NomeArquivo As Variant) On Error Resume Next frmCatalogo.dlgArquivo.FileName = *.dat frmCatalogo.dlgArquivo.ShowSave If Err <> 32755 Then Se no Cancel, retorna o nome do arquivo ObterNomeArquivo = frmCatalogo.dlgArquivo.FileName Else ObterNomeArquivo = End If End Function Pgina: 97 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Salvar arquivo Para finalizar as rotinas com arquivos temos o procedimento SalvarArquivo (NomeArquivo As String) que salvar os registros contidos na varivel Dados ( ) em um arquivo randmico utilizando a declarao Put. Put #nmeroarquivo, numeroregistro, varivel Onde: nmeroregistro - o nmero do registro que queremos gravar, caso no seja informado, ser gravado o prximo registro do anteriormente gravado. varivel - o local onde encontram-se os dados a serem gravados no arquivo. Sub SalvarArquivo(NomeArquivo As String) On Error GoTo Erro_SalvarArquivo Se houver erro desvia para a linha Erro_SalvarArquivo Open NomeArquivo For Random As #1 Len = Len(Dados(1)) Screen.MousePointer = 11 For I = 0 To TotalRegistros -1 If Dados(I).Nome <> Then Put #1, , Dados(I) End If Next I Close #1 Screen.MousePointer = 0 Exit Sub Erro_SalvarArquivo: MsgBox Erro de arquivo, 48, Catlogo End Sub Voltando ao cdigo do formulrio frmCatalogo teremos que implementar os pro- cedimentos de evento para o menu com chamadas s rotinas escritas no mdulo. Private Sub itmAbrir_Click() AbrirArquivo End Sub Pgina: 98 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Private Sub itmSalvar_Click() Dim strNomeArquivo As String strNomeArquivo = ObterNomeArquivo(NomeArquivo) If strNomeArquivo <> Then Envia o nome do arquivo para ser salvo SalvarArquivo strNomeArquivo End If End Sub Private Sub itmSair_Click () End End Sub COMANDO DE IMPRESSO Agora, vamos incluir um comando para impresso. Inicie declarando a varivel Pagina como geral do formulrio frmCatalogo. Procedimento a seguir ir construir um cabealho no incio de cada pgina de impresso. Public Sub Cabealho() Pagina = Pagina + 1 Printer.Print Format$(Now, dd/mm/yyyy); Tab(70); Pg.:; Pagina Printer.Print Printer.FontSize = 12 Printer.Print Tab(13); Nome; Tab(35); Telefone; Tab(60); Comentrios Printer.Line (0, Printer.CurrentY)-(Printer.ScaleWidth, Printer.CurrentY) Printer.CurrentX = 0 Pgina: 99 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Printer.CurrentY = 800 Printer.FontSize = 10 End Sub O procedimento acima comea imprimindo a data atual e o nmero da pgina, usando o mtodo Print para o objeto Printer. O mtodo Print tambm se aplica para Formulrios e PictureBox da mesma forma que para a impressora. A sintaxe deste mtodo a seguinte: [objeto,]Print [Tab(n)] [expresso] [ ; | , ] Onde: objeto - objeto onde desejamos imprimir uma expresso, que pode ser form, picture box ou printer. tab(n) - nmero opcional para indicar o nmero de colunas antes de comear a impresso. expresso - nmero ou cadeia de caracteres que se deseja imprimir. (; | ,) - caracteres que determinam o local do cursor para a prxima impresso. O (;) faz a impresso ser imediata, sem espaos, e a (,) faz o cursor passar para a prxima zona de tabulao antes de imprimir. Digite o cdigo para o item de menu imprimir: Private Sub itmImprimir_Click() Dim TamanhoPapel As Integer Pagina = 0 TamanhoPapel = Printer.ScaleHeight - 2880 Cabealho For i = 1 To TotalRegistros If Printer.CurrentY >= TamanhoPapel Then Printer.NewPage Cabealho End If Printer.Print RTrim$(Dados(i).Nome) Printer.Print Tab(36); RTrim$(Dados(i).Telefone) Printer.Print Tab(60); RTrim$(Dados(i).Comentarios) Printer.Print Next i Printer.EndDoc End Sub Pgina: 100 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 A varivel TamanhoPapel contm a rea de impresso, ou seja, o comprimento do papel (ScaleHeight) menos duas polegadas (2880Twips). O mtodo NewPage faz a impressora avanar para a prxima pgina quando o limite de impresso for atingido. E o mtodo EndDoc finaliza o documento libe- rando a impresso. EXEMPLO VI - BANCO DE DADOS CONTROLE DATA
O Controle Data permite que voc crie programas que acessem banco de dados como a Access, FoxPro, dBase, Paradox. Com o uso deste controle podemos economizar muitas linhas de cdigo. Ele permite ao usurio visualizar registro por registro, ir para o ltimo ou o primeiro registro de uma tabela, mostrando o contedo dos campos atravs de outros controles. Os controles que podem exibir informaes do Controle de Dados so: CheckBox, Label, TextBox, Image Control e PictureBox. Estes controles so ligados ao Controle Data atravs da sua propriedade DataSource, como veremos adiante. O Visual Basic possui o utilitrio Visual Data Manager, por onde poderemos criar um banco de dados para ser usado em nosso projeto exemplo. Para iniciar o Visual Data Manager, escolha a opo Visual Data Manager... do menu Add- Ins, aparecendo a janela mostrada abaixo. Pgina: 101 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Escolha a opo New... do menu File, e siga a figura abaixo para abrir a janela Select Microsoft Acess DataBase to Create. D o nome de Mveis.mdb e escolha Salvar, aparecendo a janela de construo do banco de dados - Database: C:\Mveis.mdb. Pgina: 102 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 A partir desta janela adicionaremos nossa tabela. Uma tabela composta de linhas (registros) e colunas (campos). No momento que estivermos criando uma tabela nova, definiremos quais os campos que faro parte dela e quais os tipos de dados que podem ser armazenados em cada campo. Clique com o boto direito do mouse em cima da janela DataBase Window, para podermos construir a nossa tabela. Selecione a opo New Table, para abrir a janela Table Structure. Pgina: 103 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Entre com o nome da tabela - Mveis. E com os campos, acionando o boto Add Field, aparecendo o quadro de dilogo Add Field, como mostra a tabela abaixo: Pgina: 104 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Siga a tabela abaixo, para a definio dos campos; aps definir um campo seleci- one o boto OK, e aps entrar com todos os campos, feche o quadro de dilogo. Nome do Campo Tipo de Dado Tamanho Cdigo Integer 2 Descrio Text 20 Fornecedor Text 20 Aps entrar com todos os campos, d um clique em Close, retornando janela Table Structure. Aps conferir todos os campos, construa a tabela (Build the Table), e feche (Close). Ao retornar, selecione a tabela Mveis e clique com o boto direito do mouse escolhendo opo Open (abrir), para inserirmos dados em nossa tabela, atravs da janela Table: Mveis. Pgina: 105 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Digite um registro. Logo aps, d um clique no boto Update e depois em Add, e assim sucessivamente at completar todos os registros mostrados na tabela abaixo: Cdigo Descrio Fornecedor 1001 cama casal rampazzo 1002 cama beliche rampazzo 1003 cama solteiro rampazzo 1004 cama beliche c/ gaveta rampazzo 2001 mesa quadrada santos andir 2002 mesa redonda santos andir 2004 mesa oval santos andir 3001 cadeira giratria santos andir 3006 cadeira gir. c/ roda sutran 4005 sof sutran Aps digitar todos os registro acima feche a tabela (Close), e tambm o Visual Data Manager escolhendo a opo Exit no menu File. Pgina: 106 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Agora, construa o formulrio mostrado abaixo: A propriedade DatabaseName do controle Data faz a ligao entre o controle e o banco de dados existente. Quando selecionamos a propriedade DatabaseName surge um quadro de dilogo para escolhermos qual o banco de dados ser vincu- lado a este controle, no nosso projeto escolheremos o banco que acabamos de criar, ou seja, Mveis.mdb. A propriedade RecordSouce define qual tabela do banco de dados selecionado ser utilizada pelo controle Data, no nosso casso s existe a tabela mveis, caso existissem mais tabelas, elas seriam mostras na lista da propriedade. Os quadros de texto possuem as propriedades DataSource e DataField para fazerem o vnculo com o controle Data. A propriedade DataSource define com qual controle data o quadro de texto estar relacionado, neste projeto existe ape- nas um controle Data, e a propriedade DataField determina qual o campo da tabela o quadro de texto estar vinculado. Pgina: 107 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 Construa o cdigo: Private Sub cmdSair_Click() End End Sub Private Sub cmdPesquisar_Click() Data1.RecordSource = Select * from Mveis where Cdigo > 1000 And Cdigo < 2000 Data1.Refresh End Sub O programa pode utilizar instrues SQL (Structured Query Language) para selecionar alguns registros a serem exibidos. Esta linguagem foi criada para ser uma linguagem padro de consulta, atualizao e manipulao de banco de da- dos, no nosso projeto usaremos a linguagem SQL para extrair registros selecio- nados. Lembre-se que a propriedade RecordSouce original do controle Data toda a tabela Mveis, atravs do comando Select (SQL) recuperamos todos os registros que satisfaam a seguinte condio: 1000 < Cdigo < 2000. O mtodo Refresh atualiza o contedo do controle Data aps a pesquisa. Private Sub cmdAdicionar_Click() Data1.Recordset.AddNew txtCdigo.SetFocus End Sub A propriedade RecordSet contm os registros atuais que o programa pode acessar. Como esta propriedade representa os registros do nosso banco de da- dos, e ns queremos inserir um novo registro, devemos adicionar este registro a esta propriedade e para isso usamos o mtodo AddNew. Quando o usurio der um clique no boto Adicionar, todos os quadros de texto ficaro em branco aguardando uma entrada de dados, para que estes dados en- trem no banco de dados, basta alternar algum registro. Private Sub cmdExcluir_Click() Data1.Recordset.Delete Data1.Recordset.MoveNext End Sub Pgina: 108 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 O procedimento acima apaga - Delete - o registro atualmente selecionado e move - MoveNext - para o prximo registro da tabela. Private Sub txtCdigo_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then txtDescrio.SetFocus End Sub Grande parte dos usurios est acostumada a pressionar a tecla Enter quando finaliza um campo, mas no Windows para alternarmos entre objetos utilizamos a tecla Tab. Para contornar este problema, deveremos criar o procedimento acima que parte do evento KeyPress (ato de pressionar e soltar uma tecla no teclado) que retorna o cdigo da tecla pressionada (KeyAscii), o procedimento verifica se foi pressionada a tecla Enter (KeyAscii=13) e, se foi, muda o foco para o prxi- mo quadro de texto. Private Sub txtDescrio_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then txtFornecedor.SetFocus End Sub Private Sub txtFornecedor_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then cmdAdicionar.SetFocus End Sub Salve e execute o projeto verificando o seu funcionamento. Pgina: 109 Visual Basic 6.0
Celta Informtica - F: (11) 4331-1586 LISTA DE EXERCCIOS 1 - Inclua, no primeiro exemplo, um boto de comando para sair do programa. Utilize a declarao End na procedure deste boto. 2 - Na calculadora, troque o quadro de texto txtResultado, por um Label. E inclua um boto de sada. 3 - Ainda na calculadora, coloque um Label onde sero exibidas a data e hora do sistema, quando o usurio calcular o resultado. Use as funes Time e Date. 4 - Crie um quadro de mensagem para que Jogo da Velha questione quem comea a jogada. 5 - No Bloco de Notas, inclua mais um quadro de texto e um boto para trans- ferir o texto selecionado de um quadro para outro. 6 - Crie uma seqncia de pontos utilizando a estrutura de repetio For...Next. 7 - A partir da seqncia construda no item 5, altere as cores dos pontos de uma forma aleatria. 8 - Construa um tringulo equiltero e outro retngulo, utilizando o mtodo Line. 9 - Altere o tipo de trao e cor, para o tringulo construdo anteriormente 10 - Utilizando como base o programa para desenhar crculos, altere-o para que faa retngulos (lados opostos com mesma medida). 11 - O tempo de alterao do semforo de rua diferente do que foi construdo, o vermelho e verde duram mais que o amarelo. Insira outro controle Timer para controlar esta nova mudana. 12 - Inclua no jogo da forca mais um grupo de opes para escolha do idioma. Contruindo uma matriz com palavras deste segundo idioma. 13 - Faa com que o evento MouseDown mostre a letra com uma cor diferente da normal. 14 - Faa com que a cabea de figura da forca suba e desa numa trajetria retilnea, alterando a frmula do Y. 15 - No Despertador, coloque mais um boto de opo e outro quadro de texto para a funo soneca. No quadro de texto dever estar o intervalo de soneca. 16 - Para o exerccio Catlogo, crie mais um campo para a cidade e desenvol- va um formulrio de procura por telefones. 17 - No exerccio Controle de Dados, crie mais uma tabela para os clientes com Cdigo, Nome, Endereo e Telefone. 18 - Desenvolva o formulrio para trabalhar com esta tabela. 19 - Na instruo SQL, procure clientes. Celta Informtica http://www.celtainformatica.com.br
Excel Sem Segredos: O Guia Ilustrativo Completo para Iniciantes para Aprender qualquer Fundamental, Fórmula, Função e Gráfico em Menos de 5 Minutos com Exemplos Simples e Reais