Escolar Documentos
Profissional Documentos
Cultura Documentos
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
Forms
Controls
Propriedades Eventos
Modulos
Procedimentos
Classes
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
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
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.
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.
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
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
* = / ^ + 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
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
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
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.
1 2 3 4 5 6 7
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:
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
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:
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
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:
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:
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:
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
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".
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
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
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:
No se pode adaptar a outro projecto Debug (testar projecto pao a pao) dificil Dificuldades de modificao por outro programador
Total controlo sobre todos os aspectos do processo Melhor utilizao em multiutilizador Cdigo genrico reutilizavel em diferentes projectos Poder ser alterado por outro programador
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:
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.