Você está na página 1de 59

TUTORIAIS DE VISUAL BASIC

1. Introduo
Pgina:

123456

Componentes do Visual Basic Projects Um projecto uma coleco de forms, controlos, referenciados para uma automatizao de servidores, num cenrio de criao de aplicaes, e informaes de verso. Forms Um form a janela que mostrada no desktop do Windows, ou dentro de uma MDI form (Multiple Document Interface). Um form pode conter "controls". Tanto os "controls" como os cdigos associados, so armazenados num ficheiro com extenso FRM. Controls Um control uma ferramenta para mostrar ou receber informaes do utilizador. Exemplo de controls so: caixas de texto, botes, etiquetas, grelhas, etc. Os controls, so apresentados/disponibilizados dentro de uma toolbox e tm uma extenso OCX. Code Modules O code, um cdigo origem escrito para fazer os controls e forms responder a uma interao do utilizador, serve para declarar variveis, constantes, procedimentos ou funes, declaraes, chamar API's do Windows, loops, estruturas condicionais, etc. So guardados em ficheiros com extenso BAS Class Modules Permite criar os nossos prprios objectos. O Visual Basic permite a criao de classes completas com propriedades e mtodos. So guardados em ficheiros com a extenso CLS. Resource Files Os ficheiros de recurso permitem guardar recursos do Windows, tais como strings, bitmaps, cursores, icons, etc.. Podes ler estes recursos a pedido. Hierarquia das aplicaes em Visual Basic Aplicaes

Propriedades das aplicaes

Forms

Propriedades Propriedades de procedimentos Eventos Outros procedimentos

Controls

Propriedades Eventos

Modulos

Procedimentos

Classes

Propriedades Propriedades de procedimentos Mtodos Outros procedimentos

Resource Files

Documentos ActiveX

Componentes ActiveX Os trs passos para criar uma aplicao No importa que tipo de aplicao queres criar, quase sempre seguirs os mesmos passos para o fazer. 1. Criar um Interface 2. Fixar as propriedades para os controls 3. Escrever o cdigo 1. Introduo
Pgina:

1 23456

O Ambiente do Visual Basic Este tipo de ambiente aparece com melhor aspecto com uma resoluo do ecran de 800x600 ou superior. A imagem que se segue a primeira que te aparece quando teclares no icon do Visual Basic

Clica em OK para abrir um projecto novo Standard EXE. O teu ambiente de desenvolvimento aparecer como o que se segue

Menu Bar

Permite-te executar todas as funes no toolbar, assim como seleccionar outras funes

Toolbar

O toolbar contm icon's localizados horizontalmente situado no topo da janela de desenvolvimento do Visual Basic

Toolbox

uma caixa vertical situada no lado esquerdo do ecran de desenho e onde se podem encontrar os

controls Form

o objecto principal que se cria para o utilizador comunicar com a aplicao. todos os controls so colocados em forms.

Project Window

Mostra a lista de todos os forms e modulos que criam a tua aplicao

Properties Window

A janela de propriedades permite-te personalizar o aspecto ou comportamento de um control particular ou de um form. Com duplo-click nas propriedades, aparece uma lista enumerada ou um campo tipo boleano.

Immediate Window

normalmente vista quando h uma quebra na aplicao. Usa-se em modo de debugging

Online Help

Teclando F1, em qualquer altura, aparece o Hlep do Visual Basic. uma ajuda sensitiva ao contexto. Pode mostrar a juda do objecto que contenha o focus no modo de desenvolvimento.

O Ambiente do Visual Basic

PictureBox

Este controlo pode mostrar grficos de ficheiros bitmap, icon, ou metafile, assim como JPEG ou ficheiros GIF. Ele corta grfico se o controlo no suficiente grande para mostrar a imagem completa LabelControl um controlo grfico que podes usar para mostrar texto, que um utilizador no pode alterar directamente TextBox Control

Algumas vezes chamado campo de edio ou controlo de edio, mostra/recebe informaes digitadas pelo utilizador. Este controlo permite alterar uma das suas propriedades Multiline para True, de modo a serem mostradas/recebidas vri linhas de texto. Frame Control Permite identificar um grupo de controlos. Pode-se usar uma Frame para tornar uma janela mais funcional. CommandButton Control Usa-se este comando para comear, interromper ou finalizar um processo. CheckBox Control

Usa-se este controlo para dar ao utilizador a possibilidade de tornar uma opo verdadeira ou falsa, sim ou no. Pode usa se em grupos para mostrar multiplas escolhas, onde o utilizador pode seleccionar uma ou mais. OptionButton Control Mostra uma opo que pode ser alterada para on/off. Usa-se em grupo para o utilizador poder seleccionar somente uma. ComboBox Control

Combina as caracteristicas de uma TextBox e de uma ListBox. Os utilizadores podem introduzir informaes na TextBo ou seleccionar um item de uma lista. ListBox Control Mostra uma lista de item's na qual o utilizador pode seleccionar uma ou mais. HScrollBar, VScrollBar Controls Propiciam uma fcil navegao numa lista longa de items, ou numa quantidade larga de informao. Timer Control Pode executar um cdigo em intervalos de tempo regulares. Invisivel para o utilizador, util para um processo em background.

DriveListBox Control

Permite ao utilizador seleccionar um disco vlido durante a execuo do processo. Usa-se este controlo para mostrar a lis dos drives vlidos existentes no sistema. DirListBox Control Mostra as directorias e os caminhos "Paths". Usa-se este control para mostrar a lista hierarquica dos directrios. FileListBox Control Lista os ficheiros de um directrio especfico. Pode seleccionar-se o tipo de ficheiros que se pretende visualizar. Shape Control um controlo grfico mostrado como um rectngulo, quadrado, oval crculo, rectngulo arredondado, ou quadrado arredondado. Line Control um controlo grfico que permite mostrar uma linha horizontal, vertical ou diagonal. Image Control Este controlo pode mostrar grficos de ficheiros bitmap, icon, ou metafile, assim como JPEG ou ficheiros GIF. Com a propriedade Stretch alterada para True, o contentor ajustado ao tamanho da imagem. Data Control Proporciona acesso a dados armazenados numa base de dados. Permite navegar de registo a registo, visualizar o 1 ou o ultimo. NOTA: Podem ser utilizados mais controlos, clicando em Project, Components, ou usando em simultneo as teclas CRTL+T. Na caixa de dilogo, seleccionar os componentes que queremos integrar na nossa aplicao. O Ambiente do Visual Basic

A janela de propriedades encontra-se no lado direito do teu ambiente de trabalho. Aqui podes modificar as caracteristicas de um objecto e o seu interface com o utilizador. A ttulo de exemplo iremos apontar algumas das propriedades mais comuns de um Form. Name Nome a atribuir ao Form Caption Palavra ou frase que aparece no topo esquerdo do Form KeyPreview

Especifica se o Form deve receber o evento key antes de todos os controlos nele contidos. No exemplo que se segue alterando a propriedade KeyPreview para TRUE e codificando o evento do Form KeyPress, d tecla ENTER a mesma funo da tecla TAB

Height Altura da janela Left Distancia da janela margem esquerda do monitor Top Distancia da janela margem superior do monitor Width Largura da janela

Para poder controlar estas 4 ultimas propriedades deve utilizar o Form Layout Window, para posicionar a janela na posio correcta. Colocando o cursor sobre a janela e clicando com o rato, fixaremos a posio que queremos onde ela aparea, em Run Time.

Clica em View seguido de Project Explorer, aparece na face lateral direita do teu ambiente de trabalho o Project Window. Nesta janela podemos ver e sobre uma prespectiva hierarquica os Forms, Modules, Controls, Property Pages ou Objects Documents, do projecto que estamos a construir.

O Ambiente do Visual Basic

A Notao Hngara

A caracteristica principal desta notao dar ao programador uma ajuda preciosa na elaborao dos nomes das variveis que iro ser utilizadas no seu projecto. No entanto, esta uma notao puramente opcional e deve ser encarada exclusivamente como um mtodo. O importante utilizar nomes curtos e simultaneamente significativo e faceis de recordar. A tabela que se segue alm do exemplo desta notao contem os valores limites das variveis.
PREFIXO TIPO DE VARIVEL VALORES

bln int lng str dtm dbl

Boolean Integer Long String Date/Time Double

True / False -32,768 a 32,767 -2,147,483,648 a 2,147,483,647 0 a +/- 2 bilies de caract. 01/01/1000 a 31/12/9999 Positovo=4.940656458412465E-324 a 1.79769313486231E+308 Negativo=-1.79769313486231E+308 a

-4.940656458412465E-324 Positivo=2.802597E-45 a 3.402823E+38 sng Single Negativo=-3.402823E+38 a -2.802597E-45

Operadores Matemticos, Relaccionais e Lgicos:


SINAL SIGNIFICADO

* = / ^ + MOD \ > >= <= < <> AND NOT OR XOR Estruturas de Deciso : If condio1 Then cdigo da condio1 se a mesma for verdadeira

Multiplicao Subtrao atribuio Diviso potenciao Soma Resto da diviso Quociente inteiro Maior que Maior ou Igual Menor ou Igual Menor que Diferente Se ambas as expresses forem verdadeiras o resultado verdadeiro Se a expresso for falsa, o resultado verdadeiro. Se a expresso for verdadeira, o resultado falso Se algumas das expresses for verdadeira, o resultado verdadeiro Se uma das expresses for verdadeira, o resultado verdadeiro. Se ambas forem verdadeiras ou falsas, o resultado falso.

ElseIf condio2 Then cdigo da condio2 se a mesma for verdadeira ElseIf condio3 Then cdigo da condio3 se a mesma for verdadeira Else cdigo se nenhuma das condies anteriores for verdadeira End If Ciclos : Do Until condio1 cdigo.... ( O ciclo mantem-se at que se verifique a condio ) Loop

Do While condio2 cdigo.... ( O ciclo mantem-se enquanto se verificar a condio2 ) Loop

For indice = inicio To fim cdigo.... ( O ciclo mantem-se desde inicio at fim ) Next indice

While condio (executa uma srie de instrues enquando a condio condio nula, tratado como falsa) cdigo.... Wend

for verdadeira ou falsa. A

Select Case Executa um dos vrios grupos de instrues, dependendo do valor destas. Select Case expresso (expresso numrica ou string) Case expres1 Cdigo.... relativo expres1 Case expres1 Cdigo.... relativo expres2 End Select

Seguinte

Criao de Menus A criao de menus, muito fcil com o Visual Basic. Para comearmos, clicamos no Menu Editor da Toolbar, ou Tools seguido de Menu Editor, ou ainda usando CTRL+E. Dever aparecer a imagem que se segue:

Os campos de preenchimento obrigatrio so Caption, que o nome que nos aparece no menu, e o campo Name, o nome atribuido a cada um dos "Captions". Vamos criar um menu fictcio para poderes perceber a sua lgica, tentado fazer uma imagem igual que se segue:

Algumas explicaes importantes: O caracter "&" que aparece no inicio da maioria das palavras, vai "provocar" que a letra a seguir aparea em sublinhado, indicando um atalho para esse procedimento. Premindo a tecla "ALT" + a letra sublinhada, acederemos directamente a ele. Os caracteres "...", que aparecem em algumas linhas significam um sub-menu, e obtm-se clicando na seta para a direita. Esta a situao de um menu Drop-Down. Quando se clica na palavra "me", cai/aparece um outro menu que permanece at que o utilizador o feche ou clique numa das suas opes. O caracter "-", que aparece entre "...&Amigos e ...&Cidades" tem como objectivo "separar" duas opes do respectivo sub-menu. Depois de executares estas instrues, e fizeres F5 (para executar o projecto) poders experimentar ver algo parecido com isto

As palavras "Pgina Principal", aparecem porque altermos as propriedades "Caption" do Form. Experimenta fazer o mesmo. POPUP Menu Admite que pretendes registar e listar as pessoas qua "no gostas", o que no se torna agradvel aparecer no menu algo parecido com isto. Ento vamos utilizar o chamado POPUP menu, quando na janela principal, clicares por exemplo com o boto direito do rato. Para isso codificas o "Evento" MOUSE UP do Form com o seguinte cdigo: If Button = 2 then PopupMenu mnucautelas (Nome da caixa Name) End If

Para isso acrescentas ao nosso menu j conhecido uma linha chamada "Cautelas", com o Name mnucautelas, tendo o cuidado de desactivar a Check Box Visible por forma a que esta palavra no nos apaream no menu principal. Acrescentamos 2 sub-menus "Gesto de inimigos" e Listar inimigos". Tecla em F5, e quando o Form se abrir, clica no boto direito do rato. Aparecer qualquer coisa como o que se segue:

Seguinte

Criao de uma ToolBar Para tornar mais apelativo o nosso projecto, podemos/devemos criar uma ToolBar por baixo do menu, anteriormente criado, onde sero mostrados botes com imagens, que faro pelo menos as operaes mais comuns do nosso projecto. Observemos a imagens seguinte:

Para acrescentarmos alguns objectos nossa a conhecida ToolBox, clicmos em Project e em seguida, Components. Activmos a Check Box Microsoft Windows Common Controls 5.0 (SP2), o que fez aparecer na ToolBox pelo menos mais 2 componentes (ToolBar e ImageList) que vo ser importantes para

aquilo que nos propomos fazer. Para colocarmos qualquer destes objectos no nosso Form, fazemos duplo-click no objecto, ou click para o tornarmos activo, "desenhando-o" de seguida no Form. Coloquemos ento estes dois objectos no Form. Aps a colocao dos objectos no Form, clicamos com o boto direito do rato em ImageList seguido de Properties. No 1 separador (General) podemos definir o tamanho das imagens. Cliquemos em 16X16, e em seguida no boto Aplicar. Depois no separador Imagens, para podermos inserir as imagens. Observemos a imagem seguinte:

Clicando no boto Insert Picture, inserimos as imagens *.ICO ou *. BMP existentes no nosso sistema, terminando com click no boto OK. Podemos fechar a janela de Page Properties, para irmos agora trabalhar o outro objecto, ToolBar, clicando nele com o boto direito do rato e em seguida em Properties. Observemos a imagem seguinte:

No separador General e na ComboBox ImageList relacionaremos a ToolBox com a ImageList1. De seguida clicamos no separador Buttons para trabalhar as imagens previamente inseridas no objecto ImageList1.

Com Insert Button, inserimos botes na ToolBar. Na caixa de texto Image inserimos o numero da imagem, e se quizermos uma ajuda ao contexto, na caixa ToolTipText digitaremos o significado do boto (Esta frase aparece quando colocamos o rato pior cima da imagem). Depois de inseridas as imagens que seleccionmos, clicamos em OK, para termos uma imagem semelhante que se segue:

Se teclarmos em F5 podemos observar o efeito do que acabmos de fazer. Note que o objecto ImageList, no aparece em RunTime, s em DesignTime. Message Box, Dialog Box

Uma Message Box, mostra uma caixa de dilogo e espera que o utilizador click num boto, retornando um valor indicad do boto que foi clicado. A sintax a seguinte : MsgBox(Mesagem, Botes, Titulo)

Para o exemplo de cima, escrevemos a seguinte linha de cdigo: Dim resp As Integer resp = MsgBox("Texto da mensagem", vbAbortRetryIgnore + vbCritical + vbDefaultButton1, "Titulo da mensagem")

De seguida publicaremos uma tabela com as caracteristicas dos botes, assim como dos valores retornados consoante o boto que o utilizador clica.
CONSTANTE VALOR DESCRIO

vbOKOnly vbOKCancel vbAbortRetryIgnore vbYesNoCancel vbYesNo vbRetryCancel VbCritical vbQuestion vbExclamation vbInformation vbDefaultButton1 vbDefaultButton2 vbDefaultButton3 vbDefaultButton4 vbApplicationModal vbSystemModal

0 1 2 3 4 5 16 32 48 64 0 256 512 768 0 4096

Mostra o boto de OK Mostra botes de Ok e Cancel Mostra botes de Abortar, Tentar, Ignorar Mostra botes de Sim, No, Cancel Mostra botes de Sim e No Mostra botes de Tentar e Cancelar Mostra o icon de Perigo Mostra o icon de Interrogao Mostra o icon de Exclamao Mostra o icon de Informao Coloca em defeito o 1 boto Coloca em defeito o 2 boto Coloca em defeito o 3 boto Coloca em defeito o 4 boto Aplicao modal. O utilizador deve responder caixa de mensagem antes de continuar a trabalhar na aplicao. Sistema modal. Todas as aplicaes so suspensas at que o utilizador responda caixa de mensagens.

A funo MsgBox retorna os seguintes valores:


CONSTANTE VALOR BOTO

vbOK vbCancel vbAbort vbRetry vbIgnore vbYes vbNo

1 2 3 4 5 6 7

OK Cancel Abort Retry Ignore Yes No

Dialog Box A Message Box serve para informar o utilizador de algo que se passou, e espera um click para executar uma aco. Com a Dialog Box pretendemos que o utilizador intruduza uma determinada informao para completar uma tarefa. Por exemplo, se pretendermos fazer um Backup (segurana) de uma Base de dados da nossa aplicao, podemos pedir ao utilizador que digite o nome da base de dados destino. Atendamos ao exemplo seguinte:

Para o exemplo acima, escrevemos as seguintes linhas de cdigo:

Dim Stexto as String mens = " DIGITE O NOME DA BASE DE DADOS " tit = " SISTEMA DE SEGURANA" Stexto = InputBox$(mens, tit)
Seguinte

Drag and Drop Drag and drop, significa arrastar e largar, e tem a utilidade que a tua imaginao quizer atingir, mas com certeza ser a execuo de um comando aquando da libertao do objecto arrastado. Observa a imagem seguinte:

Crimos dois objectos Image. Um atribuimos-lhe o nome de Image1, altermos as propriedades Picture e inserimos uma cara sorridente, e a propriedade DragMode para 1=Automatic. outra altermos a propriedade Picture e inserimos a imagem de um barril para queimar resduos. Se fizermos click sobre a 1 imagem (Image1), mantivermos o boto esquerdo do rato premido e o arrastarmos sobre a image2 aparece uma chama, como mostra a imagem que se segue.

Ao libertarmos a chama sobre a image2, o barril de resduos incendeia-se. E como no queremos ser incendiarios, fazemos aparecer uma imagem de chuva, que apaga o fogo quando clicamos nela.

Para executar o que acabmos de fazer tivemos que codificar alguns Eventos dos objectos referenciados que passarei a expor: Private Sub Form_load() Image3.Visible = False Label6.Visible = False End Sub Private Sub Image2_DragDrop(Source As Control, X As Single, Y As Single) Image2.Picture = LoadPicture("c:\icons\trash02B.ico") Image3.Visible = True Label6.Visible = True End Sub Private Sub Image3_Click() Image2.Picture = LoadPicture("c:\icons\trash02A.ico") Image3.Visible = False Label6.Visible = False End Sub

Nota : a negrito esto assinalados os nomes dos eventos codificados. Variveis Variveis, so espaos que reservamos em memria para guardar determinados valores durante a execuo de uma determinada tarefa ou programa. Existem 3 tipos de variveis, conforme a tabela que se segue:

AMBITO

DECLARAO

VISIVEL EM

Procedure Module

Private, em procedure, Sub, ou Function Private, na seco de

Somente onde declarada Em cada procedimento do Form ou Modulo

declaraes de um Form, ou modulo (.frm, ou .bas) Global Public, na seco de declaraes de um Modulo (.bas) Em toda a aplicao

Arrays

Um tipo especial de variveis so os Arrays (Tabelas). Este tipo permite referirmo-nos a uma srie de variveis com o mesmo nome. So, como deves calcular, extremamente utilizadas em programao, por isso importante que entendas o seu funcionamento. Podemos dividi-las em 2 categorias:

Unidimensionais ou vectores Multidimensionais

E dentro destas podero ser ainda:


Fixas Dinmicas

Iremos agora dar alguns exemplos do que acabmos de expor: Dim numero(30) As Integer Dim caracter () as String Dim numero(4, 9) As Integer ' Vector numrico fixo com 31 Elementos ' Vector de texto dinmico ' Tabela com 5 X 10 elementos

No esquecer, que o 1 elemento da Tabela tem o indice = 0. Erase nomearray O elemento nomearray, o nome do elemento/varivel a ser apagado. importante saber se uma tabela de comprimento fixo ou dinmico, porque o comportamento do Erase, depende do tipo de tabela. Para melhor compreenso vamos observar a imagem que se segue:
TIPO EFEITO DO ERASE NUMA TABELA DE ELEMENTOS FIXOS

Numerica Fixa String Fixa De Objectos

Coloca cada elemento da tabela = 0 Coloca cada elemento da tabela nulo ("") Coloca cada elemento com o valor especial "Nothing"

Nas tabelas dinmicas o Erase liberta a memria. Antes de nos podermos referir a este tipo de tabela novamente usaremos o comando ReDim, para redimensionar a tabela. Events

Imaginemos um Form com vrios objectos dispostos estratgicamente. Quando fazemos duplo-click sobre um desses objectos despoletamos a abertura de uma janela onde podemos codificar os diferentes eventos (objectos que respondem d uma forma adequada quando o utilizador interage com eles). Observemos a imagem seguinte:

GotFocus Ocorre quando um objecto recebe o focus. Quer seja pela aco do utilizador, da tecla TAB, pelo Click do rato ou ainda pela utilizao do mtodo SetFocus. Nota: Um objecto s pode receber o Focus se as propriedades Enabled e Visible estiverem True. LostFocus Ocorre quando um objecto perde o Focus. Quer seja pela aco do utilizador, da tecla TAB, pelo Click do rato ou ainda pela utilizao do mtodo SetFocus. Click Ocorre quando o utilizador pressiona e liberta o boto do rato sobre o objecto. Num Form, este evento ocorre quando o utilizador o executa na rea do Form. Este evento est tipicamente relaccionado com os objectos CommandButton (Botes), Menus ou PicturesBox. DblClick

O duplo-click ocorre quando o utilizador pressiona, liberta, volta a pressionar e a libertar o boto do rato sobre um objec dentro de um determinado limite de tempo, findo o qual, o objecto reconhece somente o evento click. Mtodo SetFocus

Move o Focus para um controlo ou um Form especfico. Propriedade SelStart Indica ou fixa a posio de insero de um texto a seleccionar Propriedade SelLength Indica ou fixa o numero de caracteres seleccionados Funo Len Indica o numero de caracteres de uma string Falei neste mtodo, propriedades funo aqui, porque nos exemplos que se seguem eles iro ser aplicados.

Criemos uma janela para testar algo simples e ao mesmo tempo importante nos nossos projectos. Utilizmos 10 objectos. 4 objectos Label, onde escrevemos "Letras Maiusculas", "Letras Minusculas", "S Numricos" e "S Alfabticos" alterando as propriedades Caption. 4 objectos TextBox. Onde altermos as propriedades Text, que ficaram "vazias" 2 objectos CommandButton. Onde altermos as propriedades Caption para "Voltar ao inicio" e "Terminar". Outra das propriedades que altermos a todos os objectos, foi a propriedade TabIndex, que indica a ordem pela qual os objectos sero sequencialmente acedidos. Assim:

1 caixa de texto TabIndex=0 2 caixa de texto TabIndex=1 3 caixa de texto TabIndex=2

4 caixa de texto TabIndex=3 Boto "Voltar ao inicio" TabIndex=4 Boto "Terminar" TabIndex=5

No altermos as propriedades Name, porque achmos no se justificar neste momento. Codificao: 1. Private Sub Text1_GotFocus() Text1.Text="" Text2.Text="" Text3.Text="" Text4.Text="" End Sub 2. Private Sub Text1_KeyPress(KeyAscii As Integer) KeyAscii = Asc(Ucase$(Chr$(KeyAscii))) End Sub 3. Private Sub Text2_KeyPress(KeyAscii As Integer) KeyAscii = Asc(Lcase$(Chr$(KeyAscii))) End Sub 4. Private Sub Text3_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case vbKeyDelete Case vbKeyBack Case 48 To 57 Case Else Beep KeyAscii = 0 End Select End Sub 5. Private Sub Text4_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case vbKeyDelete Case vbKeyBack Case 65 To 90 Case 97 To 122 Case Else Beep KeyAscii = 0 End Select End Sub 6. Private Sub Command1_Click() Text1.SetFocus End Sub 7. Private Sub Command2_Click() End End Sub

Comentrios: Ponto 1: Quando a caixa de texto "Text1" tem o Focus, "esvazia/limpa" o conteudo de todas as caixas de texto. Ponto 2: A funo Ucase$ transforma em maiusculas todos os caracteres. Ponto 3: A funo Lcase$ transforma em minusculas todos os caracteres. Ponto 4: S permite caracteres Ascii compreendidos entre 48 e 57, que correspondem aos carateres numricos, mais o Delete e o Backspace. Ponto 5: S permite caracteres Ascii compreendidos entre 65 e 90, e entre 97 e 122 que correspondem aos carateres alfabticos, mais o Delete e o Backspace. Ponto 6: Activando o Evento Click, transfere o Focus para a 1 caixa de texto Ponto 7: Activando o Evento Click, termina o programa

Faamos agora uma pequena alterao no evento GotFocus da 1 caixa de Texto, de modo a no apagar o que escrevemo anteriormente. Apagamos as 4 linhas do Ponto 1, a vamos substitui-las por: Text1.SelStart = 0 Text1.SelLeght=Len(Text1.Text) Se no evento GotFocus das caixas, Text2, Text3 e Text4, fizermos a mesma coisa, iremos obter o resultado acima mostrado, com todo e texto seleccionado, sempre que "navegamos" de caixa de texto em caixa de texto o que permite manter o mesmo texto ou escrever um novo. Procedimentos e Funes:

Procedimentos so linhas de cdigo, usadas para responder a eventos ou executar algumas aces. Os procedimentos no retornam valores, e so identificados pela palavra Sub, na sua declarao. Todos os procedimentos devem comear com uma letra, e podem conter letras, numeros e o carater underscore. Funes so usados quando se pretende executar clculos, ou testar valores. Nas funes retorna sempre algo. Um exemplo testar uma data e retornar o valor verdadeiro ou falso (True / false), dependendo da data estar certa ou errada.

Mostramos de seguida algumas das funes mais comuns que podem ser utilizadas. A lista completa de funes pode ser encontrada em "The Language reference Book".
Funes Descrio

Chr, Chr$ Asc Str, Str$ Format, Format$ Val Date, date$ Now Time, Time$ InputBox, InputBox$ MsgBox LCase, LCase$ UCase, UCase$ Space, Space$ String, String$ Len InStr Left, Left$ LTrim, LTrim$ Mid, Mid$ RTrim, RTrim$ Right, Right$ Trim, Trim$ IsDate IsNull IsNumeric Beep

Converte valores ANSI numa string Converte uma string num valor ASCII Converte um numero numa string Converte um numero numa string formatada Converte uma string num numero Obtem a data do sistema Obtem a data e a hora do sistema Obtem o hora do sistema Mostra uma caixa de input, espera uma string do util. Mostra uma caixa de mensagens Converte uma string em caracteres minusculos Converte uma string em caracteres maiusculos Insere espaos repetidos entre duas strings Converte numa string uma varvel Retorna o comprimento de uma string Determina se uma string est dentro doutra string Retorna uma poro esquerda de uma string Anula os espaos esquerda de uma string Procura uma string contida noutra string Anula os espaos direita de uma string Retorna uma poro direita de uma string Anula espaos esquerda e direita de uma string Valida se uma data vlida Valida se uma varivel nula Valida se uma varivel numrica Emite um som

Ole Objects

Os objectos linkados e embebidos so uma forma de podermos aceder a aplicaes Windows, dentro dos nossos proprios projectos. Fazendo duplo click neste simbolo obteremos uma caixa dentro do nosso Form, como a imagem que se segue:

Esperando uns segundos, aparece uma 2 imagem, para inserirmos um objecto

Nesta imagem seleccionamos o Documento do Microsoft Word, e activamos a CheckBox "Mostrar como cone". Fazemos click em Ok, para encerrar esta caixa de dilogo. Se seguirmos o mesmo critrio para o Microsoft Excel, podemos obter uma imagem semelhante que se segue:

Inserimos uma Label onde escrevemos "ACEDER AO MICROSOFT WORD, OU AO MICROSOFT EXCEL", alterando 2 propriedades:

Alignement 2-Center Font = 12

Fazendo click sobre o simbolo do Word, vamos alterar 3 propriedades:


Appearence 0 - Flat BorderStyle 0 - None BackStyle 0 - Transparent

Fazemos a mesma coisa com o simbolo do Microsoft Excel. Teclamos em F5 para o projecto correr, e verificaremos que com duplo-click, acederemos ao Microsoft Word, ou ao Microsoft Excel. Uma outra forma de actuarmos activar a opo "Criar a partir de ficheiro", o que provoca o aparecimento de uma outra caixa de texto onde iremos indicar o "caminho" do ficheiro que queremos mostrar, activando a CkeckBox Procurar.

O que observamos quando corremos a aplicao, o conteudo do ficheiro prviamente seleccionado. Se fizermos duplo-click na caixa de texto, abrimos a respectiva aplicao, podendo fazer as alteraes que

julgarmos convenientes.

ComboBox e ListBox A ComboBox deve ser usada quando o utilizador pretende ter uma lista predefinida de valores. Algumas vezes tambem usada para adicionar valores. Vamos adicionar as capitais de distrito de Portugal, de modo a que um utilizador possa seleccionar uma. Propriedades Importantes: A tabela que se segue mostra uma lista de propriedades, mais utilizadas
PROPRIEDADE DESCRIO

List ListCount ListIndex Name Sorted Style Text

Lista de todos os elementos Numero de elementos Numero do elemento seleccionado Nome do objecto ( com o prefixo cbo ) Ordenao dos elementos Simple, DropDown, ou DropDown List Valor do elemento seleccionado

Normalmente, e para carregarmos os elementos de uma ComboBox, fazemo-lo no procedimento Form_Load() do Form. Observemos a imagem que se segue:

Alteramos a propriedade Name da ComboBox para cbocapitais, Sorted para True, para ser listada alfabticamente, apesar de serem introduzidos aliatoriamente, e a propriedade Style para 2 - DropDown List.

Observemos as duas imagens que se seguem, quando teclamos em F5 para correr o projecto.

Quando clicamos na Seta invertida da 1 imagem, aparece-nos a lista, ordenada alfabeticamente. Se clicarmos num dos nomes que nos aparece na 2 lista, a ComboBox fecha-se e na janela aparece o nome que clicmos, como mostra a imagem seguinte:

1 Projecto Constroi um pequeno projecto, cujo objectivo pegar nos valores introduzidos em Escudos (PTE) e transform-los em Euros (EUR). Clica em Project da Toolbar, seguido de Components e activa a CheckBox "Microsoft Mask Edit Control 6.0", seguido de OK, o que te far aparecer na ToolBox mais um objecto.

Para este projecto, clica em File da Toolbar, New Project. Ser aberta uma caixa de dilogo cujo projecto por defeito ser o Standard EXE. bastar clicares em OK. Abrir-se- um novo Form. Alteras a propriedade Caption para "Valores em Euros a partir de PTE". Adicionas uma TextBox, com o nome txtpte e uma MaskEdBox com o nome maskeuro. Duas Labels a indicar o que significa cada uma das caixa e dois botes. O 1 ter o nome de cmdfim com a propriedade Caption= "TERMINAR" e a letra "T" sublinhada. O 2 com o nome de cmdoutro, e a propriedade Caption="OUTRO CLCULO", sendo o 1 "O" sublinhado. Fixa a janela no meio do Ecran.

MaskEdBox

Tenta fazer este projecto sem ajuda, recorrendo unicamente aquilo que j aprendeste. De seguida irei mostrar-te a imagem do projecto, assim como o cdigo utilizado.

Private Sub cmdfim_Click() End End Sub Private Sub cmdoutro_Click() txtpte.SetFocus End Sub Private Sub Form_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then SendKeys "{tab}" KeyAscii = 0 End If End Sub Private Sub txtpte_GotFocus() txtpte.Text = "" MaskEdBox1.Text = ""

End Sub Private Sub txtpte_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case vbKeyDelete Case vbKeyBack Case 48 To 57 Case Else Beep KeyAscii = 0 End Select End Sub Private Sub txtpte_LostFocus() If txtpte <> "" Then txtpte.Text = Format(txtpte.Text, "Currency") MaskEdBox1.Text = txtpte.Text / 200.482 End If End Sub Espero que tenhas tido sucesso. Base de Dados - Access 97 Definiremos uma base de dados, como um conjunto de uma ou mais tabelas. As tabelas so um conjunto de registos com as mesmas caracteristicas, e os regitos um conjunto de campos com dados uteis para o utilizador. Existem vrios produtos para criar base de dados. Neste caso iremos utilizar o Microsoft Access 97. Antes de iniciarmos este tutorial, vamos criar uma pasta na raiz do nosso disco "C" a que chamaremos "tutoriais". Quando clicamos no icon do Access 97, abrimos uma caixa de dialogo como mostra a figura que se segue:

Clicamos na Opo "Base de dados vazia" e de seguida no boto OK. A 2 caixa de dilogo mostra-nos o espao onde iremos escrever o nome da nossa base de dados, neste caso "amigos.mdb", seguido do boto "Criar".

Na janela que se segue e teclando em "Novo" comearemos a criar as nossas tabelas.

Seleccionamos "Vista de estrutura" seguido do boto OK.

Boto para definir a chave Primria

Boto para atribuir nome aos Indices

Crimos a 1 tabela da nossa base de dados, qual atribuimos o nome de "Amigos", clicando em Ficheiro, seguido de Guardar existente na ToolBar. Assinalmos a 1 linha e clicmos no boto para definir a chave primria qual atribuimos o nome de "chavenumero". Esta chave nica na tabela, no pode haver 2 registos com a mesma chave primria. Atribuimos uma chave secundria ao campo "nome", permitindo que o mesmo podesse ter (duplicao autorizada), pois pode haver 2 ou mais pessoas com o mesmo nome. Crimos ainda uma 2 tabela que chammos de pessoal que ir conter os nossos dados. Com uma nica chave a que chammos "chavecodigo", como poderemos ver na imagem que se segue:

TABELA

NOME DO CAMPO

TIPO / COMPRIMENTO

Pessoal

codigo nome morada codpostal tel tm

Numero - Inteiro longo Texto com 50 caracteres Texto com 50 caracteres Texto com 50 caracteres Texto com 9 caracteres Texto com 9 caracteres Numero - Inteiro longo Texto com 50 caracteres Texto com 50 caracteres Texto com 50 caracteres Texto com 1 caracteres Texto com 9 caracteres Texto com 9 caracteres Texto com 1 caracteres Memo, at 65.535 caracteres data

Amigos

numero nome morada codpostal sexo tel tm estcivil relatorio dtnasc

Terminmos a criao da nossa Base de Dados. Agora o nosso prximo objectivo podermos trabalh-la dentro de um projecto em Visual Basic.

PROJETO 1 Este nosso projecto chamar-se- "Agenda" e tem como obectivo registar dados dos nossos amigos, sendo o numero de acesso, chave principal, ou primria, o numero do bilhete de identidade. Para que possamos pessoalizar este projecto, teremos uma outra Tabela onde iremos registar os nossos dados pessoais, cujo campo "name" aparecer em todas as janelas. Data Control Existem duas formas de trabalharmos com uma Base de Dados num projecto

em Visual Basic. Uma usarmos o objecto Data Control, existente na ToolBox (Imagem acima), outra fazermos a abertura "manual" da Base de Dados e das Tabelas. Existem vantagens e desvantagens em cada um dos processos. Vamos tentar esquematizar ambos os casos para uma compreenso mais facilitada. Data Control - Vantagens:

Escrever poucas linhas de cdigo Rapidez de execuo do processo Projectos pequenos

Data Control - Desvantagens:


No se pode adaptar a outro projecto Debug (testar projecto pao a pao) dificil Dificuldades de modificao por outro programador

Abertura Manual - Vantagens:


Total controlo sobre todos os aspectos do processo Melhor utilizao em multiutilizador Cdigo genrico reutilizavel em diferentes projectos Poder ser alterado por outro programador

Abertura Manual - Desvantagens:


Todo o processo tem que ser escrito Exige maior responsabilidade do programador

Em face do exposto, ns optamos definitivamente pela abertura manual. Continuando com a anlise do nosso projecto, iremos criar 3 janelas. A 1 ter um menu e icons de modo a podermos terminar ou aceder s outras janelas com facilidade, e chamar-se- FrmPrincipal. Teremos uma janela para registar os nossos dados pessoais (FrmPessoal), e uma outra para registar os dados dos nossos amigos(FrmAmigos). Quando clicarmos em "Terminar" devemos, atravs de uma caixa de dilogo, perguntar se queremos mesmo terminar, dando a opo de cancelarmos a operao. Na janela de "Amigos" vamos utilizar 2 Frames. Uma para sexo, com dois OptionButtons, e uma outra para Estado Civil com seis OptionButtons, onde a propriedade Caption ser alterada para (Casado, Solteiro, Viuvo, Separado, Divorciado, Outra)

2 PROJETO

Quando inicimos um novo projecto. standard.EXE, clicmos em Projects, Components, e activmos as CheckBox "Microsoft Windows Common Controls 5.0 (sp2)" e "Microsoft Tabbed Dialog Control 6.0", para fazermos aparecer na ToolBox 2 objectos importantes: ImageList e Toolbar.

Com o boto direito do rato, sobre o objecto ImageList, clicmos em Properties para aparecer a caixa de dilogo anterior. No separador "General" definimos o tamanho das nossa imegens, neste caso 16X16. Nesta caixa de dilogo inserimos 3 imagens de icons que queremos fazer aparecer por baixo no Menu, para dar um aspecto mais apelativo nossa pgina principal. Terminmos com OK.

Com o boto direito do rato, sobre o objecto toolbar, clicmos em properties para aparecer a caixa de

dilogo que se segue. No separador "Geral" fizemos corresponder o objecto ImageList com a toolbar. No separador Buttons, inserimos as imagens, preenchendo a caixa "ToolTipText" com o valor que queremos que nos aparea quando apontamos com o boto do rato. Finalizmos com OK.

No final a nossa pgina principal ter este aspecto. De notar que o objecto ImageList, no aparece quando o projecto est a correr.

Clicmos ainda em Project, Add Module, a que chammos "amigos.bas" onde introduzimos o cdigos que se segue: Option Explicit Global DBenc As Database Global etiqueta As String Global tblpes As Recordset Global tblami As Recordset Sub abrirBD() Set DBenc = OpenDatabase("c:\projectos\tutoriais\amigos.mdb") Set tblpes = DBenc.OpenRecordset("pessoal") Set tblami = DBenc.OpenRecordset("amigos") End Sub Sub fecharBD() tblpes.Close tblami.Close DBenc.Close End Sub O cdigo correspondente nossa janela principal o que se segue:

Option Explicit Dim resp As Integer Private Sub Form_Load() etiqueta = "ESTA A MINHA AGENDA" Call abrirBD End Sub Private Sub mnupessoal_Click() frmpessoal.Show End Sub Private Sub mnuterminar_Click() resp = MsgBox("Pretende Terminar?", vbOKCancel + vbQuestion + vbDefaultButton2, "Projecto de Agenda") Select Case resp Case 1 Call fecharBD End End Select End Sub Private Sub nnuamigos_Click() frmamigos.Show End Sub Private Sub Toolbar1_ButtonClick(ByVal Button As ComctlLib.Button) Select Case Button.Index Case 1 resp = MsgBox("Pretende Terminar?", vbOKCancel + vbQuestion + vbDefaultButton2, "Projecto de Agenda") Select Case resp Case 1 Call fecharBD End End Select Case 2 frmamigos.Show Case 3 frmpessoal.Show End Select End Sub Propriedades alteradas na janela frmprincipal:

Name : frmprincipal Caption : Agenda Pessoal WindowState : 2 - Maximized

tblpes![morada] = txtmorada.Text tblpes![codpostal] = txtcodpostal.Text tblpes![tel] = txttel.Text tblpes![tm] = txttm.Text tblpes.Update End Sub Sub mostrar() txtcodigo.Text = tblpes![codigo] txtnome.Text = tblpes![nome] txtmorada.Text = tblpes![morada] txtcodpostal.Text = tblpes![codpostal] txttel.Text = tblpes![tel] txttm.Text = tblpes![tm] End Sub Private Sub cmdactualizar_Click() Call gravar txtcodigo.SetFocus End Sub Private Sub cmdapagar_Click() tblpes.Delete txtcodigo.SetFocus End Sub Private Sub cmdgravar_Click() tblpes.AddNew Call gravar txtcodigo.SetFocus End Sub Private Sub cmdnovo_Click() txtcodigo.SetFocus End Sub Private Sub cmdsair_Click() Unload Me End Sub Private Sub Form_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then SendKeys "{TAB}"

KeyAscii = 0 End If End Sub Private Sub Form_Load() Label1.Caption = etiqueta End Sub Private Sub txtcodigo_GotFocus() txtcodigo.Text = "" txtnome.Text = "" txtmorada.Text = "" txtcodpostal.Text = "" txttel.Text = "" txttm.Text = "" cmdgravar.Enabled = False cmdactualizar.Enabled = False cmdapagar.Enabled = False End Sub Private Sub txtcodigo_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case vbKeyDelete Case vbKeyBack Case 48 To 57 Case Else Beep KeyAscii = 0 End Select End Sub Private Sub txtcodigo_LostFocus() tblpes.Index = "chavecodigo" tblpes.Seek "=", txtcodigo.Text If Not tblpes.NoMatch Then cmdactualizar.Enabled = True cmdapagar.Enabled = True tblpes.Edit Call mostrar Else cmdgravar.Enabled = True txtnome.Text = "." txtmorada.Text = "." txtcodpostal.Text = "." txttel.Text = "0" txttm.Text = "0" End If

End Sub Private Sub txtcodpostal_GotFocus() txtcodpostal.SelStart = 0 txtcodpostal.SelLength = Len(txtcodpostal.Text) End Sub Private Sub txtcodpostal_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase$(Chr$(KeyAscii))) End Sub Private Sub txtmorada_GotFocus() txtmorada.SelStart = 0 txtmorada.SelLength = Len(txtmorada.Text) End Sub Private Sub txtmorada_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase$(Chr$(KeyAscii))) End Sub Private Sub txtnome_GotFocus() txtnome.SelStart = 0 txtnome.SelLength = Len(txtnome.Text) End Sub Private Sub txtnome_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase$(Chr$(KeyAscii))) End Sub Private Sub txttel_GotFocus() txttel.SelStart = 0 txttel.SelLength = Len(txttel.Text) End Sub Private Sub txttel_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case vbKeyDelete Case vbKeyBack Case 48 To 57 Case Else Beep

KeyAscii = 0 End Select End Sub Private Sub txttm_GotFocus() txttm.SelStart = 0 txttm.SelLength = Len(txttm.Text) End Sub Private Sub txttm_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case vbKeyDelete Case vbKeyBack Case 48 To 57 Case Else Beep KeyAscii = 0 End Select End Sub

A segunda janela do projecto apresentar o aspecto que acabaste de ver. 7 caixas de texto com a propriedade Name alterada para os nomes que aparecem dentro delas. 5 botes chamados respectivamente cmdgravar, cmdactualizar, cmdapagar, cmdnovo e cmdsair. Nestes botes e na propriedade Caption fizemos aparecer os nomes mostrados. Um objecto SSTab com 3 separadores cujas propriedades Caption foram alteradas para Sexo, Estado Civil, Memrias.

A imagem anterior e a que se segue so as duas imagem do separador SSTab. Convem aqui referir, a existncia de uma Frame em cada separador onde so inseridas os OptionButtons. No primeiro caso com a propriedade Name=Option1, para constituir um array, e no segundo caso com a propriedade Name=Option2, para constituir um segundo array.

Propriedades alteradas neste Form: Name : frmamigos Caption : Gesto de amigos KeyPreview : True O cdigo correspondente a este Form o que se segue:

Option Explicit Sub gravarBD() tblami![numero] = txtnumero.Text tblami![nome] = txtnome.Text tblami![morada] = txtmorada.Text tblami![codpostal] = txtcodpostal.Text tblami![tm] = txttm.Text

tblami![tel] = txttel.Text tblami![dtnasc] = txtdatnasc.Text If option1(0).Value = True Then tblami![sexo] = "M" Else tblami![sexo] = "F" End If If Option2(0).Value = True Then tblami![estcivil] = "C" ElseIf Option2(1).Value = True Then tblami![estcivil] = "S" ElseIf Option2(2).Value = True Then tblami![estcivil] = "V" ElseIf Option2(3).Value = True Then tblami![estcivil] = "X" ElseIf Option2(4).Value = True Then tblami![estcivil] = "D" ElseIf Option2(5).Value = True Then tblami![estcivil] = "O" End If tblami![relatorio] = txtmem.Text tblami.Update End Sub Sub mostrarBD() txtnumero.Text = tblami![numero] txtnome.Text = tblami![nome] txtmorada.Text = tblami![morada] txtcodpostal.Text = tblami![codpostal] txttel.Text = tblami![tel] txttm.Text = tblami![tm] txtdatnasc.Text = tblami![dtnasc] txtmem.Text = tblami![relatorio] If tblami![sexo] = "M" Then option1(0).Value = True Else option1(1).Value = True End If If tblami![estcivil] = "C" Then Option2(0).Value = True ElseIf tblami![estcivil] = "S" Then Option2(1).Value = True ElseIf tblami![estcivil] = "V" Then Option2(2).Value = True ElseIf tblami![estcivil] = "X" Then Option2(3).Value = True ElseIf tblami![estcivil] = "D" Then Option2(4).Value = True

ElseIf tblami![estcivil] = "O" Then Option2(5).Value = True End If End Sub Private Sub cmdactualizar_Click() Call gravarBD txtnumero.SetFocus End Sub Private Sub cmdapagar_Click() tblami.Delete txtnumero.SetFocus End Sub Private Sub cmdgravar_Click() tblami.AddNew Call gravarBD txtnumero.SetFocus End Sub Private Sub cmdoutro_Click() txtnumero.SetFocus End Sub Private Sub cmdsair_Click() Unload Me End Sub Private Sub Form_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then SendKeys "{TAB}" KeyAscii = 0 End If End Sub Private Sub Form_Load() Label1.Caption = etiqueta End Sub Private Sub Picture1_Click()

tblami.MoveLast Call mostrarBD End Sub Private Sub Picture2_Click() tblami.MoveFirst Call mostrarBD End Sub Private Sub Picture3_Click() tblami.MoveNext If tblami.EOF Then tblami.MoveLast End If Call mostrarBD End Sub Private Sub Picture4_Click() tblami.MovePrevious If tblami.BOF Then tblami.MoveFirst End If Call mostrarBD End Sub Private Sub txtcodpostal_GotFocus() txtcodpostal.SelStart = 0 txtcodpostal.SelLength = Len(txtcodpostal.Text) End Sub Private Sub txtcodpostal_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase$(Chr$(KeyAscii))) End Sub Private Sub txtdatnasc_GotFocus() txtdatnasc.SelStart = 0 txtdatnasc.SelLength = Len(txtdatnasc.Text) End Sub Private Sub txtdatnasc_LostFocus() If txtdatnasc.Text <> "" Then If Not IsDate(txtdatnasc.Text) Then

MsgBox ("A Data Introduzida No Vlida") txtdatnasc.SetFocus End If End If End Sub Private Sub txtmorada_GotFocus() txtmorada.SelStart = 0 txtmorada.SelLength = Len(txtmorada.Text) End Sub Private Sub txtmorada_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase$(Chr$(KeyAscii))) End Sub Private Sub txtnome_GotFocus() txtnome.SelStart = 0 txtnome.SelLength = Len(txtnome.Text) End Sub Private Sub txtnome_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase$(Chr$(KeyAscii))) End Sub Private Sub txtnumero_GotFocus() txtnumero.Text = "" txtnome.Text = "" txtmorada.Text = "" txtcodpostal.Text = "" txttel.Text = "" txttm.Text = "" txtdatnasc.Text = "" txtmem.Text = "" SSTab1.Tab = 0 Option2(0).Value = False Option2(1).Value = True Option2(2).Value = False Option2(3).Value = False Option2(4).Value = False Option2(5).Value = False option1(0).Value = True option1(1).Value = False cmdgravar.Enabled = False cmdactualizar.Enabled = False

cmdapagar.Enabled = False End Sub Private Sub txtnumero_LostFocus() tblami.Index = "chavenumero" tblami.Seek "=", txtnumero.Text If Not tblami.NoMatch Then cmdactualizar.Enabled = True cmdapagar.Enabled = True tblami.Edit Call mostrarBD Else cmdgravar.Enabled = True txtnome.Text = "." txtmorada.Text = "." txtcodpostal.Text = "." txttel.Text = "0" txttm.Text = "0" txtdatnasc.Text = Date txtmem.Text = "." End If End Sub Private Sub txttel_GotFocus() txttel.SelStart = 0 txttel.SelLength = Len(txttel.Text) End Sub Private Sub txttel_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case vbKeyDelete Case vbKeyBack Case 48 To 57 Case Else Beep KeyAscii = 0 End Select End Sub Private Sub txttm_GotFocus() txttm.SelStart = 0 txttm.SelLength = Len(txttm.Text) End Sub

Private Sub txttm_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case vbKeyDelete Case vbKeyBack Case 48 To 57 Case Else Beep KeyAscii = 0 End Select End Sub

A imagem que acabmos de apresentar, utiliza o objecto DataControl,(Este objecto deve ter a propriedade Visible=False, para no aparecer durante o Runtime) e o objecto DBGrid (Project/Components/Microsoft Data Bound Grid Controls 5.0 (sp3), o que permite visualizar, alterar, apagar e mesmo adicionar registos tabela sem practicamente linhas de cdigo, alterando somente as propriedades AllowAddNew, AllowDelete e AllowUpdate para "True". Acrescentmos um Form ao qual chammos frmdb, e adicionmos um novo item ao Menu, de forma a podermos aceder a este Form. Propriedades alteradas no objecto DataControl: DataBaseName : c:\tutoriais\amigos.mdb RecordSource : Amigos Visible : False Propriedades alteradas no objecto DBGrid1: Com o boto direito do rato clicamos neste objecto e de seguida em Retrieve Fields, de modo que todos os

campos da tabela em questo (amigos) fiquem adicionados a esta grelha. DataSource : Data1 Caption : TABELA DE AMIGOS ScrollBars : 3 - Both Fixed Row : 1 Fixed Col : 0 Neste caso justifica-se plenamente a utilizao do objecto DataControl.

DBGrid

DataControl

Compilao de um projecto: Tudo aquilo que escrevemos, nossa propriedade intelectual. Ns no gostamos que algum que no teve qualquer trabalho possa aceder, alterar e at mesmo comercializar aquilo que tanto trabalho nos custou a fazer. Assim temos a hiptese de compilar o nosso projecto, quer dizer, transformar aquilo que qualquer programador entende, em linguagem s intendvel pelo computador, de modo a podermos garantir a nossa propriedade. Para isso e ainda com o projecto aberto, faz click em File seguido de Make amigos.exe. Isto ir transformar o nosso projecto num ficheiro executvel. Se no precisarmos de o distribuir, bastar clicar neste executvel, para que o nosso projecto funcione. Se quizermos distribuir o nosso projecto, h que criar um Setup de instalao, para o mesmo funcionar noutro computador. Em VB6, clica em Package And Deployment Wizard, que um assistente que te ajuda a conseguir este objectivo. Observa a figura que se segue:

Clicando em Package, e seguindo as opes do assistente, poderemos criar um conjunto de ligaes, seces, referencias externas e funes, que sero geradas a partir do nosso projecto. originando um objecto que contem cdigo mquina.

No final se queremos instalar o projecto noutro equipamento, basta clicarmos em Setup, para abrirmos uma caixa de dilogo como a que se segue, dando-nos a escolher as opes de instalao.

Você também pode gostar