Escolar Documentos
Profissional Documentos
Cultura Documentos
Visual Basic - Livro
Visual Basic - Livro
Sumrio
1.
INTRODUO .............................................................................................................1
2.
3.
4.
5.
6.
DATE ................................................................................................................................ 39
DATAVALUE ....................................................................................................................... 39
FORMAT ............................................................................................................................ 39
PROJETO COMENTADO ......................................................................................................... 39
7.
8.
9.
IV
11.1.1. Propriedades dos ObjetosErr e Error ...............................................................................75
11.1.1.1. Propriedade Description .............................................................................................75
11.1.1.2. Propriedades HelpFile/HelpContext ..............................................................................75
11.1.1.3. Propriedades Number.................................................................................................75
11.1.1.4. Propriedades Source ..................................................................................................75
11.1.1.5. Propriedades LastDLLError..........................................................................................75
11.1.2. Mtodos do Objeto Err...................................................................................................75
11.1.2.1. Mtodo Clear.............................................................................................................75
11.1.2.2. Mtodo Raise ............................................................................................................76
11.2. ERROS RELACIONADO A BANCO DE DADOS .............................................................................. 76
11.3. ERROS RELACIONADO A ARQUIVO ......................................................................................... 77
11.4. ROTINA PARA TRATAMENTO DE ERROS ................................................................................... 77
VI
VII
ndice de Figuras
FIGURA 1. INTERFACE MDI (MUTIPLE DOCUMENT INTERFACE) DO VISUAL BASIC 6.0 .................................................3
FIGURA 2. INTERFACE SDI (SINGLE DOCUMENT INTERFACE) DO VISUAL BASIC 6.0 ....................................................3
FIGURA 3. TELA DE SELEO DE UM NOVO PROJETO, COM OS DIVERSOS MODELOS.......................................................6
FIGURA 4. ORGANOGRAMA SIMPLIFICADO DE UMA APLICAO. ............................................................................17
FIGURA 5. JANELA DE PROPRIEDADES DO VISUAL BASIC. ...................................................................................17
FIGURA 6. MENU EDITOR DO MICROSOFT VISUAL BASIC. ...............................................................................21
FIGURA 7. CAIXA DE CONTROLES ACTIVEX PERSONALIZADOS, LOCALIZADOS NO SISTEMA. ...........................................25
FIGURA 8.MICROSOFT WINDOWS COMMON CONTROL 6.0 .................................................................................26
FIGURA 9. A- CONFIGURAES DO TAMANHO DAS IMAGENS; B- COLEO DE IMAGENS INSERIDAS NO IMAGELIST. .............28
FIGURA 10. CONTROLE LISTVIEW, EXIBINDO CONES PEQUENOS..........................................................................29
FIGURA 11. CONTROLES PROGRESSBAR'S EXIBINDO OS DOIS VALORES DA PROPRIEDADES SCROLLING (0
CCSCROLLINGSTANDARD E 1- CCSCROLLINGSMOOTH) ...............................................................................30
FIGURA 12. CONTROLE STATUSBAR, EXIBINDO VRIAS INFORMAES ADICIONAIS....................................................31
FIGURA 13. CONTROLE STATUSBAR DO PROCESSADOR DE TEXTOS MICROSOFT WORD............................................31
FIGURA 14. CONTROLES TOOLBAR'S ALINHADOS NO TOPO DA JANELA E EM BAIXO E COM A PROPRIEDADE STYLE 1 TBRFLAT E
0 TBRSTANDARD, RESPECTIVAMENTE..................................................................................................32
FIGURA 15. CAIXA DE PROPRIEDADES GERAL DE UMA BARRA DE FERRAMENTAS (ABA GENERAL).....................................34
FIGURA 16. CAIXA DE PROPRIEDADES DOS BOTES DE UMA BARRA DE FERRAMENTAS (ABA BUTTONS). ...........................34
FIGURA 17. CAIXA DE PROPRIEDADES DOS BOTES DE UM CONTROLE TREEVIEW (ABA GENERAL). .................................35
FIGURA 18. EXEMPLO DE UM CONTROLE TREEVIEW, COM UM NODE PAI (CONES) E 4 NODES FILHOS. LINESTYLE IGUAL A 1
TVWROOTLINE. ..............................................................................................................................36
FIGURA 19. CONTROLE SLIDER ..................................................................................................................37
FIGURA 20. INTERFACE DA CALCULADORA DE IDADE .........................................................................................40
FIGURA 21. CAIXA DE DILOGO DE CONTROLE VERSES E INFORMAES DO APLICATIVO. ...........................................41
FIGURA 22. TELA DE INFORMAES DE UM PROJETO.........................................................................................43
FIGURA 23. ESTRUTURA DO BANCO DE DADOS COM QUATRO TABELAS....................................................................48
FIGURA 24. ORGANOGRAMA SIMPLES DE UM BANCO DE DADOS. AS LINHAS PONTILHADAS INDICAM O RELACIONAMENTO ENTRE
AS TABELAS....................................................................................................................................53
FIGURA 25. HIERARQUIA DE CLASSES DAO ...................................................................................................54
FIGURA 26. LAYOUT PARA PESQUISA DE DADOS DO PROGRAMA LIZARO VISUAL BASIC DICAS V3.0 ................................63
FIGURA 27. CONTROLE MICROSOFT CHART 5.0 ..............................................................................................69
FIGURA 28. GRFICO DE RECEITAS/DESPESAS DE ABRIL A JUNHO APRESENTANDO A MDIA DE CADA MS. ........................71
FIGURA 29. GRFICO CRIADO COM DADOS DE ENTRADA MANUAL, EXIBINDO AS ESTATSTICAS. .....................................72
FIGURA 30. GRFICO PLOTADO A PARTIR DOS DADOS DE UM BANCO DE DADOS ACCESS 97 .........................................74
FIGURA 31. TELA INICIAL DO SETUP WIZARD QUE ACOMPANHA O VISUAL BASIC 5.0. ................................................81
FIGURA 32. TELA INICIAL DO PACKAGE AND DEPLOYMENT WIZARD QUE ACOMPANHA O VISUAL BASIC 5.0 ......................82
FIGURA 33. FIGURA DO EDITOR DE SCRIPT DO INNO SETUP COMPILER V3.0. ..........................................................84
FIGURA 34. INTERFACE DO PROGRAMA ISTOOL 3.0 EM PORTUGUS (BR) ..............................................................85
FIGURA 35.JANELA PARA INICIAR UM NOVO ARQUIVO........................................................................................93
FIGURA 36. TELA DO WIZARD PARA ESPECIFICAR O CAMINHO E O NOME DO PROJETO. ...............................................94
FIGURA 37. LISTAGEM DE ARQUIVOS HTML, QUE IRO FAZER PARTE DO ARQUIVO DE AJUDA. ......................................94
FIGURA 38. JANELA DO PROJETO RECM CRIADO, COM AS OPES E LISTAGEM DE ARQUIVOS CRIADOS. ..........................95
FIGURA 39. JANELA DE OPO PARA CRIAO OU ABERTURA DE UMA RQUIVO DE CONTEDO. .......................................95
FIGURA 40. JANELA DE ADIO DE TPICOS E DE LIGAMENTO (LINK) COM O ARQUIVO CORRESPONDENTE. .......................96
FIGURA 41. JANELA DE "LINKAGEM" DE ARQUIVO AO TPICO DO CONTEDO. A LISTAGEM EXIBIDA POR TTULO DO ARQUIVO.
..................................................................................................................................................96
VIII
FIGURA 42. ABA DE CONTENTS, COM SUA APARNCIA FINAL LISTANDO TODOS OS TPICOS CRIADOS..............................97
FIGURA 43. JANELA HTMLHELP API INFORMATION COM A ADIO DO ARQUIVO DE CABEALHO INSECTA.H. ...................98
FIGURA 44. JANELA DE LIGAO DA DEFINIO (IDH_MAIN), COMO O ARQUIVO HTML (INSECTA.HTM). .......................98
FIGURA 45. CONE DO CRYSTAL REPORTS V4.6. ........................................................................................... 101
FIGURA 46. JANELA PARA CRIAO DE UM RELATRIO NOVO NO CRYSTAL REPORTS................................................. 101
FIGURA 47. JANELA CREATE REPORT EXPERT, COM A OPO O PASSO 1: SELEO DE TABELAS NO CRYSTAL REPORTS ...... 102
FIGURA 48. PASSO 3: SELEO DE CAMPOS A SEREM EXIBIDOS NO RELATRIO DO CRYSTAL REPORTS. ......................... 103
FIGURA 49. PASSO 4: SELEO DOS CAMPO DE ORDENAO DO RELATRIO E TIPO DE ORDENAO NO CRYSTAL REPORTS. 103
FIGURA 50. PASSO 8: ESPECIFICAO DE TTULO E SELEO SE ESTILO DO RELATRIO NO CRYSTAL REPORTS................ 104
FIGURA 51. JANELA DO MODO DE DESENHO DO CRYSTAL REPORT. ..................................................................... 104
FIGURA 52. JANELA PAR INSERO DE NOVO(S) CAMPO(S) AO RELATRIO NO CRYSTAL REPORTS................................ 105
FIGURA 53. BARRA DE FERRAMENTAS DE FORMATAO DO TEXTO DOS CAMPOS NO CRYSTAL REPORTS. ........................ 105
FIGURA 54. MENU SUSPENSO PARA FORMATAO DO CAMPO (FONTE, FORMATO, BORDAS, ETC.) NO CRYSTAL REPORTS .... 106
FIGURA 55. JANELA DE ALTERAO DO FORMATO DO CAMPO NO CRYSTAL REPORTS. ............................................... 106
FIGURA 56. ALTERAO DE BORDA E CORES DE BORDA E TEXTO DO CAMPO DO CRYSTAL REPORTS. ............................. 106
FIGURA 57. BARRA DE FERRAMENTAS PARA INSERO DE FIGURA, LINHA E CAIXA (RESPECTIVAMENTE) DO CRYSTAL REPORTS.
................................................................................................................................................ 107
FIGURA 58. JANELA DE EDIO DE FRMULA DO CRYSTAL REPORTS .................................................................... 107
FIGURA 59. BARRA DE FERRAMENTAS NA JANELA DE VISUALIZAO DO CRYSTAL REPORTS. ....................................... 109
FIGURA 60.JANELA DE VISUALIZAO DE UM RELATRIO PELO CRYSTALREPORT ACTIVEX CONTROL............................. 109
FIGURA 61. CONTROLE ACTIVEX EM DESIGN-TIME. ....................................................................................... 113
IX
ndice de Cdigos
CDIGO 1. EXEMPLO DE DECLARAO DE VARIVEIS NO VISUAL BASIC....................................................................7
CDIGO 2. PROCEDIMENTO PARA EXIBIO DO FORMULRIO FRMMAIN....................................................................9
CDIGO 3. CDIGO EXTENSOS PARA ALTERAR A PROPRIEDADE CAPTION E BACKCOLOR, DO FORM2 E EXIBI-LO. ................18
CDIGO 4. CDIGO MAIS PRTICOS ATRAVS DA FUNO SHOWFORM PARA ALTERAR A PROPRIEDADE CAPTION E BACKCOLOR,
DO FORM2 E EXIBI-LO. .....................................................................................................................18
CDIGO 5. ESTE
CDIGO 6. LINHA DE COMANDO PARA RETORNAR A SEGUNDA IMAGEM DA COLEO DA IMAGELIST1 PARA O CONTROLE
PICTURE1. ....................................................................................................................................28
CDIGO 7, LINHA DE COMANDO PARA RETORNAR A SEGUNDA IMAGEM (CONE) DA COLEO DA IMAGELIST1 PARA O CONTROLE
PICTURE1. ....................................................................................................................................28
CDIGO 8. ROTINA SIMPLES PARA EXIBIR O PROGRESSO DE UM CONTROLE PROGRESSBAR...........................................30
CDIGO 9. LINHA
CDIGO 38. CDIGO PARA EXTRAIR DADOS DE UM BANCO DE DADOS ACCESS 97, LISTANDO O NMERO DE PESQUISADORES
POR ESTADO. .................................................................................................................................73
CDIGO 39. ROTINA COMPLETA PARA INTERCEPTAO, EXIBIO E ARMAZENAMENTO DE ERRO DE UMA APLICAO ............80
CDIGO 40. EXEMPLO DE COMO ABRIR UM ARQUIVO DE AJUDA ATRAVS DE API ......................................................88
CDIGO 41. EXEMPLO DE COMO ABRIR O BROWSER OU EDITOR DE E-MAIL PADRO ..................................................88
CDIGO 42.EXEMPLO DE COMO ENCONTRAR O DIRETRIO DE INSTALAO DO WINDOWS E DE SISTEMA ........................89
CDIGO 43. EXEMPLO DE COMO DETECTA R ALETRA DO DRIVE DO CD ...................................................................90
CDIGO 44. EXEMPLO DE COMO ESCREVER E OBTER INFORMAES DE UM ARQUIVO INI.............................................91
CDIGO 45. ESTRUTURA
IDENTIFICAO NUMRICA.
................................................................................................................98
CDIGO 46. CLASSE CLSHELPCHM, CRIADA PARA ACESSAR ATRAVS DE API AO ARQUIVO DE AJUDA CHM, PELO VISUAL BASIC
..................................................................................................................................................99
CDIGO 47. CODGO PARA EXIBIR O ARQUIVO DE AJUDA ATRAVS DO EVENTO CLICK, DE UM COMMANDBUTTON, CHAMADO
CMDHELP. ................................................................................................................................... 100
CDIGO 48. CODGO PARA EXIBIR O CONTEXTO ESPECFCO DO ARQUIVO DE AJUDA ATRAVS DO EVENTO CLICK, DE UM
COMMANDBUTTON, CHAMADO CMDHELP. ............................................................................................. 100
CDIGO 49. TEXTO DA FRMULA "NOME" INSERIDA NO RELATRIO DO CRYSTAL REPORTS........................................ 107
CDIGO 50. ENVIO DE VALOR PARA UMA FRMULA DO CRYSTALREPORT .............................................................. 108
CDIGO 51. FILTRAGEM DE DADOS NO CRYSTALREPORTS ATRAVS DO VISUAL BASIC.............................................. 108
CDIGO 52. CDIGO PARA IMPRESSO DIRETA DO RELATRIO SEM VISUALIZAO PRVIA NO CRYSTAL REPORTS. ........... 108
CDIGO 53. CDIGO PARA VISUALIZAR UM RELATRIO. .................................................................................. 109
CDIGO 54. CDIGO PARA EXPORTAR UM ARQUIVO NO FORMATO DO WORD. ........................................................ 110
CDIGO 55. EXPORTANDO UM ARQUIVO PARA UMA MENSAGEM DE E-MAIL............................................................. 111
CDIGO 56. CDIGO DO CONTROLE ACTIVEX PARA ESPECIFICAR E RETORNAR AS PROPRIEDADES. ............................... 114
CDIGO 57. CDIGO PARA EXIBIR A ARQUIVO DE AJUDA ESPECFICO ATRAVS DA API WINHELP NO CONTROLE ACTIVEX. . 114
XI
ndice de Tabelas
TABELA 1. CONTROLES BSICO E SUAS DESCRIES. ..........................................................................................4
TABELA 2. TIPO DE VARIVEIS SUA CAPACIDADE DE USO. .....................................................................................6
TABELA 3. SUGESTO DE PREFIXO PARA IDENTIFICAO DO TIPO DE VARIVEL...........................................................7
TABELA 4. FUNES INTERNAS DO VISUAL BASIC PARA CONVERSO DE DADOS. .........................................................7
TABELA 5. PREFIXOS PARA NOMES DOS OBJETOS MAIS UTILIZADOS EM APLICAO (SUGESTO DA MICROSOFT E DO AUTOR) 14
TABELA 6. PRINCIPAIS PROPRIEDADES DE UM FORMULRIO.................................................................................16
TABELA 7. CONSTANTES, VALORES E DESCRIO DO PROPRIEDADE VIEW DO CONTROLE LISTVIEW. ...............................28
TABELA 8. PROPRIEDADES DO CONTROLE LISTVIEW. ........................................................................................29
TABELA 9. CONSTANTES, VALORES E DESCRIO DA PROPRIEDADE STYLE DO CONTROLE STATUSBAR.............................31
TABELA 10. AS CONSTANTES PARA
XIII
Dedicatria
Dedico a presente obra a DEUS, pela concesso de minha
vida, a minha me por aceitar est tarefa rdua, a minha
filha pela pacincia e por suportar as incansveis e
exageradas hora que fico na frente do computador.
William Costa Rodrigues
Agradecimentos
A todos aqueles que direta ou indiretamente
participaram e incentivaram-me na confeco da
presente obra.
Meus humildes e sinceros agradecimentos.
William Costa Rodrigues
1. INTRODUO
O Microsoft Visual Basic uma poderosa linguagem de programao, e tem uma grande
vantagem em relao s outras linguagens, por ser do mesmo fabricante do sistema operacional
Microsoft Windows tem uma maior integrao com o mesmo. Outra vantagem e que os
programas gerados pelo Visual Basic, para serem ser executados necessitam da biblioteca
Msvbvm50.dll ou Msvbvm60.dll e outros arquivos de extenso de aplicativos. Na prtica a
vantagem o seguinte, os programas tm tamanhos menores e so executados, compartilhando
este arquivos (bibliotecas e ActiveX).
As interfaces de usurio grficas, ou GUIs (pronuncia "gis", do Ingls Graphic Interfaces
User), revolucionaram a indstria da microinformtica. Elas demonstram que a frase "Uma figura
vale por mil palavras" verdadeira para a maioria dos usurios de computadores. Em lugar do
estranho prompt do DOS C:> que os usurios observavam durante muito tempo (e que assustou
muitos deles), voc presenteado com uma rea de trabalho cheia de cones e com programas
que utilizam mouse e menus.
Embora alguns programadores tenham apresentado sentimentos contraditrios a respeito
das GUIs, os iniciantes gostam delas, e assim de se esperar que os programas Windows sejam
baseados no modelo GUI (e que tenham a aparncia e proporcionem a sensao certa). Portanto ,
se voc precisar desenvolver um programa para qualquer verso Windows, desejar Ter uma
ferramenta para desenvolver com eficincia aplicativos fundamentados em GUIs, e o Visual Basic
a ferramentas mais indicada, por possui facilidade na sntese de cdigo e interface amigvel,
prxima dos aplicativos do Windows.
Os exemplos e dicas aqui exibidos so de parte de exemplos de livros, do Help do Visual
Basic, dicas da Internet (VBAccelerator.com www.vbaccelerator.com de Steve MacMahon,
vbbrasil.com www.vbbrasil.com.br, VBMania www.vbmania.com.br, Jos Carlos Macorati Site
Pessoal www.macoratti.net e etc.).
Uma recomendao bastante pertinente para que pretende programar por em dia o
Ingls, pois todos os comandos os arquivos de ajuda (Help) e a maioria da documentao para as
linguagens de programao esto em Ingls. Outra recomendao sempre que possui dvidas
acesse o arquivo de Ajuda ou o Books Online que vm junto com o Visual Basic.
Para quem no possui uma verso registrada do Microsoft Visual Basic poder adquirir
gratuitamente no site da Microsoft a verso mais simplificada: Visual Basic Control Create. Apesar
de muito bsica possvel criar executveis simples e componentes ActiveX, com a mesma
facilidade das outras verses (Standard, Professional e Enterprise).
Controle/Descrio
Pointer No verdade no se trata de um Controle, mas sim uma
ferramenta que serve para dimensionar e mover Controles.
PictureBox Permite exibir figuras (bmp, ,jpg, gif, wmf, emf) e cones.
Label Etiqueta ou rtulo, exibe um texto para identificao outros
controles no formulrio.
TextBox Este controle permite ao usurio digitar texto.
Frame Moldura utilizada para agrupar controles dentro de um
formulrio.
CommandButton Controle que permite o usurio realizar uma
operao, atravs de linhas de comando pr-determinadas.
CheckBox Pode assumir valores falso ou verdadeiro. Em um mesmo
Formulrio vrios CheckBox's podem assumir o valor verdadeiro ao
mesmo tempo.
OptionButton Pode tambm assumir valores falso/verdadeiro, mas
em um mesmo Formulrio somente um OptionButton pode assumir o
valor verdadeiro.
ComboBox Combina caixa de texto com caixa de listagem. O usurio
pode digitar a informao como tambm pode encolher da lista.
ListBox Exibe uma lista de itens que o usurio pode selecionar.
HScrollBar e VScrollBar Permite selecionar com o mouse um
determinado valor numa faixa de valores.
Timer Controla intervalos de tempo determinados pelo programador
em milisegundos.
DriveListBox Exibe os drivers do computador.
DirListBox Exibe as pastas (diretrios) do computador.
FileListBox Exibe os arquivos de uma pasta (diretrio).
Shape Permite exibir vrias formas geomtricas num formulrio.
Line Permite traar linhas dentro do formulrio.
Image Permite exibir figuras (bmp, jpg, gif, wmf, emf) e cones, ainda
permitindo que seja dimensionado de acordo com a necessidade do
programador.
Data Permite acessar diversas base de dados.
OLE permite incorporar objetos ou arquivos no formulrio.
Standard EXE Este o projeto padro. Atravs do qual o programador inicia um novo
projeto baseado na construo de um aplicativo executvel comum;
ActiveX EXE Este projeto permite que o aplicativo gerado possa de utilizado ou distribudo
pela Internet;
ActiveX DLL Este tipo de projeto permite a criao de executveis do tipo DLL (Dynamic
Link Libary, ou seja Biblioteca de Vnculo Dinmico). Sua construo permite a utilizao dos
cdigos nela construdos, em projeto futuros;
ActiveX Control Permite a criao de controles personalizados de acordo com a
necessidade de funes e controles para outros projetos, minimizando assim o excesso de
programao;
VB Application Wizard Este projeto dispara o assistente de criao de aplicativos do Visual
Basic, permitindo a criao de formulrios chaves de uma aplicao como a tela de entrada
SplashScreen, formulrio das informaes do sistema, vnculo com base de dados, ente outros;
VB Enterprise/Professional Edition Controls Este tipo de projeto permite que o
programador elabore um aplicativo com base em todos os controles disponveis para as
verses Professional e Enterprise;
Addin Permite a elaborao de Add-ins que podero ser utilizados pelo Visual Basic, para
automatizar tarefas repetitivas e/ou complexas;
ActiveX Document DLL Permite criar DLLs do tipo ActiveX que podem ser utilizadas na
Internet para exibir ou capturar dados;
ActiveX Document EXE Permite que seja criado documentos para utilizao na Internet.
Capacidade
True ou False
0 a 256
-922.337.203.685.477,5808 a -922.337.203.685.477,5807
Qualquer expresso de data vlida.
(Valores negativos)
-1,79769313486232 E-308 a -4,94065645841247 E-324
(Valores positivos)
4,94065645841247 E-324 a 1,79769313486232 E-308
-32.768 a 32.767
-2.147.483.648 a 2.417.483.647
(Valores negativos)
-3,402823 E-38 a -1,401298 E-45
(Valores positivos)
1,401298 E-45 a 3,402823 E-38
Qualquer tamanho
Alguns padres podero ser seguidos para facilitar a identificao do tipo de varivel, o
seja, antes do nome da varivel o programador poder inserir uma letra ou duas letras que
identifique o tipo de varivel. Veja uma sugesto na Tabela 3.
Tabela 3. Sugesto de prefixo para identificao do tipo de varivel.
Tipo de Varivel
Boolean
Byte
Currency
Date
Doubl
Integer
Long
Single
String
Variant
Letra/Prefixo
b
by
c
dt
d
i
l
sg
s
v
Exemplo
bFinalizar
byLetter
cReal
dtAniversario
dJuros
iIndice
lTitulo
sgLetra
sEndereco
vCEP
Transforma
Transforma
Transforma
Transforma
Transforma
Transforma
Transforma
Descrio
uma expresso numrica em um nmero inteiro por arredondamento.
uma expresso numrica em um inteiro longo por arredondamento.
uma expresso numrica em preciso simples.
uma expresso numrica em preciso dupla
uma expresso numrica em moeda.
qualquer expresso string.
uma expresso variante.
Funo
CBool
CByte
CDate
Descrio
Transforma uma expresso em booleana (verdadeira/falsa)
Transforma uma expresso numrica em um byte.
Transforma uma expresso compatvel em uma data vlida.
2.8. Exerccios
1. Quais controles abaixo so bsico da biblioteca padro do Visual Basic?
( ) PictureBox
( ) RichTextBox
( ) ProgressBar
( ) Image
( ) Label
( ) TabStrip
( ) Timer
( ) ListBox
( ) OLE
( ) ComboBox
De acordo com os tipos de projeto do Visual Basic qual dos tipos encaixa-se na descrio
seguinte: "Permite a criao de controles personalizados de acordo com a necessidade de
funes e controles para outros projetos, minimizando assim o excesso de programao"
( ) StandardEXE
( ) ActiveX EXE
( ) ActiveX Control
( ) AddIn
4. Defina o projeto do tipo StandardEXE.
________________________________________________________________________________
________________________________________________________________________________
5. Qual das variveis do Visual Basic, listadas abaixo, retorna o valor verdadeiro/false
(True/False).
( ) String
( ) Variant
( ) Boolean ( ) Long
( ) Integer
( ) Single
6. Qual das variveis do Visual Basic, listadas abaixo, retorna o maior valor numrico.
( ) Byte
( ) Variant
( ) Boolean ( ) Long
( ) String
( ) Single
7. Qual das variveis do Visual Basic, listadas abaixo, retorna o menor valor numrico.
( ) Integer
( ) Variant
( ) Byte
( ) Long
( ) String
( ) Single
8. Declare uma varivel publica (Public) do tipo String, atribua uma valor a esta varivel e por fim
converta esta para uma varivel longa (Long)
10
11
3.1.1.1.2 IIF
Varivel=IIF(<condio>, <valor true>, <valor false>)
Considerada uma variante da funo anterior, tambm chamada de Se Imediato nas
verses em Portugus do Microsoft Access e Excel, est instruo permite que o programador
coloque uma instruo If... Then... Else End If em uma nica linha de cdigo, permitindo que
atribua diferentes valores a variveis ou objetos, dependendo do resultado da expresso.
Esta instruo avalia o valor da clusula <condio> e se o valor for verdadeiro, retorna
para varivel o resultado da expresso contida na clusula <valor true>. Caso o resultado de
<condio> seja falso, <varivel> preenchida com o valor da clusula <valor false>.
3.1.1.1.3 Select Case
Select Case <condio>
Case <resultado 1>
Declarao 1
Case <resultado 2>
Declarao 2
Case Else
Declarao 3
End Select
Considerada uma variante estrutura If... Then... Else, a instruo Select Case permite
que o programador faa apenas um teste <condio> no incio da instruo Select Case e
tome vrias decises dependendo do valor retornado.
Esta instruo geralmente utilizada quando existem inmeras possibilidades de
tratamento do valor gerado pela clusula <condio>, como o caso das rotinas de tratamento
de erro em tempo de execuo ou ativao de botes de uma ToolBar (Barra de Ferramentas),
onde nesse caso a resultado geralmente o valor Key ou o valor Index de cada boto.
Verifique que esta estrutura oferece uma sada caso nenhum valor retornado (resultado)
seja verificado pelos Case's da instruo, assim o valor retornado poder ser atribudo na
expresso Case Else (Declarao 3).
Exemplo: O lao For... Next..., abaixo, faz com que a varivel IntJ sela incrementada de 1 a
t 100, de 5 em 5 unidades (forando a execuo do lao por 20 vezes consecutivas):
Dim IntJ as Integer
For IntJ = 1 To 100 Step 5
<executar as instrues>
Next IntJ
12
A especificao do nome da varivel contadora dentro da clusula Next ( como Next IntJ
opcional) opcional basta escrever Next para fechar o lao. No entanto, ela melhora
significativamente a compreenso do cdigo e, portanto, amplamente recomendada.
3.1.1.2.2 Do... Loop
Do
Declarao
Loop
A instruo Do... Loop convencional executada continuamente. Voc deve colocar uma
condio de teste no interior do lao, atravs de uma instruo If... Then... Else, para fazer com
que ela termine sua execuo, enviando uma instruo do tipo Exit Do.
Exemplo: No exemplo a seguir, a instruo Do... Loop executada continuamente, ate que
o valor da varivel fCancelar seja verdadeiro.
Do
DoEvents
If fCancelar Then
Exit Do
End If
Loop
Muito cuidado na hora de utilizar uma instruo Do... Loop, pois se o valor que determina o
final do lao no for alcana o lao seja executado infinitamente, fazendo com que a aplicao seja
paralisada, provocando um Bug, consequentemente travando o computador.
As estruturas Do... Loop possuem diversas variantes e so utilizadas para fazer com que o
cdigo seja executado seguidamente, at que uma determinada condio seja verdadeira. Esta
condio pode ser testada no incio ou no fim do lao, e normalmente utilizada com as clusulas
While (enquanto) ou Until (at).
3.1.1.2.3 Do While... Loop
Do While <condio>
Declarao
Loop
Nesta variante, as instrues dentro do lao Do... Loop sero executadas enquanto
(While) o valor de <condio> for verdadeiro. Isto significa que, se o valor de <condio> for
falso antes do incio do lao, as declaraes contidas em seu interior no sero executadas.
3.1.1.2.4 Do Until... Loop
Do Until <condio>
Declarao
Loop
Apesar desta instruo ser muito semelhante a anterior anterior, o teste feito em um
momento diferente. Neste caso, o lao ser executado at que o valor <condio> seja
verdadeiro, o que inverte a situao anterior, ou seja, as declaraes no interior do lao sero
executadas apenas se o valor de <condio> for falso.
13
Exemplo: No exemplo a seguir, voc pode utilizar a estrutura For... Each para alterar a
propriedade Enabled (ativado) de todos os controles do tipo TextBox (Caixa de Texto) do
formulrio frmMain, tornando-os indisponveis.
For Each ctl In frmMain
If TypeOf ctl Is TextBox Then
ctl.Enabled = False
End IF
Next
A clusula For... Each cria automaticamente uma varivel chamada ctl (uma abreviao de
control ou controle), e faz um lao por todos os controle do formulrio frmMain, desativando todas
as caixas de texto, sem importar quantas elas so. Verifique que o teste para saber se o controle
mesmo uma caixa de texto (TextBox), realizado pela clusula If TypeOf Is TextBox Caso o valor
retornado seja verdadeiro o controle testado desabilitado, ou seja, o controle uma caixa de
texto, se o controle for um boto (CommandButton) este no ser desabilitado pois no um
TextBox.
3.1.1.2.7 With... End With
With <coleo>
Declarao
End With
Esta estrutura permite que o programador referencie diretamente cada elemento ou
propriedade de uma coleo (ou matriz), sem a necessidade de especificar o caminho completo
(ou ndice) para cada elemento da coleo.
A estrutura With... End With, muito utilizada para permitir a alterao de diversas
propriedades de um nico controle ou formulrio do Visual Basic ou Access.
Exemplo: para alterar diversas propriedades de uma Caixa de Texto (TextBox) chamada
txtxValorTotal, utiliza-se a estrutura With... End With, da seguinte forma:
With txtValorTotal
.Locked = False
.MaxLenght = 30
14
.TabStop = True
.Visible = True
End With
Prefixo
out
tab
tvw
tlb
hsb
fsb
vsb
stb
cmd
opt
cdl
cbo ou cmb
dbc
icb ou cbi
Exemplo
outChart
tabDados
tvwNome
tlbMain
hsbPicture
fsbTextBox
vsbPicture
stbMain
cmdClose
optSend
cdlOpenFile
cboName
dbcState
icbIconSmall
Objeto/Componente
Caixa de Mscara (MaskEditBox)
Caixa de Texto (TextBox)
Caixa de texto formatado (RichTextBox)
Caixa de Verificao (CheckBox)
Contador de tempo ou temporizador (Timer)
Controle de animao (Animation)
Controle de Dados (DataControl)
Controle de grfico (MSChart)
CoolBar
DTPicker
Figura (PictureBox)
Forma (Shape)
Formulrio (Form)
Formulrio MDI (MDIForm)
Grade (Grid)
Grade do Bando de Dados (DBGrid)
Imagem (Image)
Legenda (Label)
Linha (Line)
Lista (Listbox)
Lista de arquivos (FileListBox)
Lista de diretrios (DirListbox)
Lista de Drive (DriveListBox)
Lista de imagens (ImageList)
Lista de visualizao (ListView)
Listagem de Banco de dados (DBList)
Menu
Mdulo (Module)
Mdulo Classe (Class Module)
Moldura (Frame)
MothView
MS Flex Grid
MS Tab
OLE
Pgina de propriedades (Property Page)
Painel Tridimensional (3D Panel)
ProgressBar (Barra de progresso)
Relatrio (DataReport)
Resource File
Slide (Slider)
UpDown
User Control
15
Prefixo
msk
txt
rtf
chk
tmr
ani
dat ou dtc
grf
clb
dtp
pic
shp
frm
mdi
grd
dbg
img
lbl
lnh
lst
flb
drl
dvl
iml
lvw
dbl
mnu ou
smnu
mod
cls
fra
mvw
fgd
tab
ole
ppg
pnl
pbr
drp
res
sld
upd
ctl
Exemplo
mskPhone
txtName
rtfFile
chkSaveSetting
tmrShowAll
aniAviFile
datDBase
grfDBase
clbMain
dtpMonth
piclogo
shpSquare
frmMain
mdiMain
grdName
dbgTitle
imgIcon
lblTitle
lnhVertical
lstEmail
filBitmap
drlSource
dvlSource
imlIcons32
lvwTitles
dblAuthor
mnuFile ou
smnuProperty
modAPIs
clsTypeFile
fraTitles
mvwCalendar
fgdAuthor
tabConfig
oleWord
ppgFont
pnlGroup
pbrLoadfile
drpTitles
resIcons
sldConfig
updCopies
ctlButton
16
Descrio
Define o nome do formulrios (vide prefixos de nome de
objetos Quadro 4)
Define a aparncia do formulrio se 0 Flat ou 1 3D
Define a cor do fundo do formulrio
Define o tipo borda que o formulrio exibir: 0 None; 1
Fixed Single; 2 Sizable; 3 Fixed Dialog
Define o texto que ser exibido na barra de ttulo do
formulrio
Define se o formulrio ir exibir ou no os botes de
minimizar, maximizar, fechar e o cone da janela.
Define se o formulrio estar ativo ou no
Define a fonte que o formulrio ir exibir
Define a cor da fonte no formulrio
Define a altura do formulrio
Define o cone que o formulrio exibir
Define a posio a esquerda do monitor que o formulrio
ir se posicionar
Exibe ou oculta o boto fechar do formulrio
Define se o formulrio ser "Child - filho" ou no de uma
formulrio MDIForm
Exibe ou oculta o boto minimizar do formulrio
Exibe o cursor personalizado do formulrio
Exibe o cursor do formulrio: 0 Default; 1 Arrow; 2
Cross; 3 I-Bean; 4 Icon; 5 Size; 6 Size NE SW; 7
Size N S; 8 Size NW SE; 9 Size W E; 10 Up Arrow;
11 Hourglass; 12 No Drop; 13 Arrow or Hourglass;
14 Arrow and Question; 15 Size All; 99 Custom
Define se o formulrio ser mvel ou no
Define a imagem que ser exibida no fundo do formulrio
Define a posio que o formulrio ser exibido na tela: 0
Manual; 1 CenterOwner; 2 CenterScreen; 3
Windows Default
Define a posio no parte superior do monitor que o
formulrio ir se posicionar
Define se o formulrio ser visvel ou no
Define a largura do formulrio
Define como o formulrio ser exibido em run time
(tempo de execuo) 0 Normal; 1 Minimized; 2
Maximided
Valor Padro
Form1
1 3D
&H8000000F&
2 Sizable
Form1
True
True
MS Sans Serif
&H80000012&
3570
0
True
False
True
(None)
0 Default
True
(None)
3 Windows
Default
0
True
4770
0 Normal
Sistema operacional
API's
DL L's
ActiveX's
17
modMa in
mdulo In icial da aplicao
frmMain
m enus
frmCad astro
Banco de d ados
Mdulos Classes
User Control
controles
Imp ressora
Arqu ivo
con troles
menus
18
inmeros eventos, do que procedimentos idnticos, escritos vrias vezes ao longo das linhas de
cdigos.
Private Sub cmdOpcao1_Click()
Form2.Caption = "Exibindo a primeira opo"
Form2.BackColor = vbWhite
Form2.Show
End Sub
Private Sub cmdOpcao2_Click()
Form2.Caption = "Exibindo a segunda opo"
Form2.BackColor = vbBlack
Form2.Show
End Sub
Private Sub cmdOpcao3_Click()
Form2.Caption = "Exibindo a terceira opo"
Form2.BackColor = vbRed
Form2.Show
End Sub
Cdigo 3. Cdigo extensos para alterar a propriedade Caption e BackColor, do Form2 e exibilo.
Private Sub cmdOpcao1_Click()
Call ShowForm(Form2, "Exibindo a primeira opo", vbWhite)
End Sub
Private Sub cmdOpcao2_Click()
Call ShowForm(Form2, "Exibindo a segunda opo", vbBlack)
End Sub
Private Sub cmdOpcao3_Click()
Call ShowForm(Form2, "Exibindo a terceira opo", vbRed)
End Sub
'Num Mdulo, podem ser inserido na janela Code do Form
Public Function ShowForm(frm As Form, sCaption As String, cColor As
ColorConstants)
With frm
.Caption = sCaption
.BackColor = cColor
.Show
End With
End Function
Cdigo 4. Cdigo mais prticos atravs da funo ShowForm para alterar a propriedade
Caption e BackColor, do Form2 e exibi-lo.
3.3.2. Mdulos Classe (Class Module)
Os mdulos classe (ou simplesmente Class), diferem dos mdulos padro na forma como
seus dados so armazenados. Eles existem separadamente para cada instncia de classe (isto ,
para cada objeto criado de uma classe).
Num mdulo padro, as variveis declaradas pblicas so visveis em qualquer lugar do
projeto. J num mdulo classe, elas podero ser acessadas apenas se uma varivel de objeto
contiver uma referncia a uma instncia particular de uma classe.
19
20
Comment o mtodo ShowComment, ser carregado para exibir o dado do objeto. A caixa de
mensagem mostra o texto "Acionado por uma funo pblica", demonstrando que a rotina pblica
GetComment configurou a propriedade Comment do objeto que lhe foi passado, e que a "string"
pblica est visvel dentro de Class1.
O boto Command2, apensa chama o mtodo ShowComment, da segunda instncia de
Class1. Os dois objetos tm acesso varivel pblica "string", mas a propriedades Comment do
segundo objeto est em vazia (em branco), porque chama a rotina pblica GetComment comente
da propriedade Comment alterada para o primeiro objeto.
3.4. Menu Editor
Toda a aplicao necessita de menus. Po exemplo o Microsoft Word, possui cerca de 9
menus padro, contendo cada menu uma srie de submenus. Entretanto necessrio planejar
bem o menus que faro parte da aplicao pois uma mau planejamento poder levar sua aplicao
ao fracasso. A Figura 6, o menu editor. Iremos discutir um pouco cada campo para que voc
possa saber a funo de cada um.
Caption Especifica o texto que dever aparecer no menu. Para criar uma tecla de atalho
associando a tecla Alt mais uma letra do valor caption, basta inserir o smbolo & antes da
letra desejada. Ex.: &Arquivo, ser exibido em run-time (tempo de execuo) Arquivo.
Quando o usurio da aplicao pressionara conjuntamente as teclas ALT+A o menu ser
selecionado;
Name Especifica o nome do menu. Este dever possuir um valor nico, ou seja, no
podero existir dois ou mais menus com o mesmo nome, salvo se for atribudo valor
seqencial no campo Index;
Index Se for especificado um valor seqencial no campo index possvel dar a vrio menu
o mesmo nome;
Shortcut Especifica a tecla de atalho do menu. Somente submenus podero conter teclas
de atalho de acordo com a lista do campo;
WindowsList Esta opo e muito importante para aplicao MDI e lista as janelas abertas
pela aplicao, porm est opo dever ser especificada somente para um men;
Estas setas possibilitam criar o remover uma hierarquia. Ex.. Na Figura 6 o submenu
&Novo, foi criado clicando no boto , para remov-lo basta clicar no boto ;
21
( ) Click
( ) Resize
( ) Load
( ) Left
( ) Top
( ) BackColor
22
Next
7. Correlacione os controles aos prefixos sugeridos pela Microsoft e pelo Autor.
(1) CommandButton
( ) fra
(2) Frame
( ) lbl
(3) DBCombo
( ) lvw
(4) TreeView
( ) cdl
(5) ToolBar
( ) dbc
(6) Timer
( ) hsc
(7) ListBox
( ) dat
(8) StatusBar
( ) pgb
(9) ProgressBar
( ) msk
(10) CommonDialog
( ) pic
(11) DataControl
( ) cmd
(12) RichTextBox
( ) lst
(13) MaskEditBox
( ) tmr
(14) PictureBox
( ) rtf
(15) HScroolBar
( ) stb
8. Assinale V (verdadeiro) ou F (falso) nas descries das propriedades do formulrio:
( ) BorderStyle Define o tipo borda que o formulrio exibir.
( ) O valor padro da propriedade ControlBox False.
( ) StartUpPosition - Define a posio que o formulrio ser exibido na tela: 0 Manual; 1
CenterOwner; 2 CenterScreen; 3 Windows Default
( ) Height define a largura e Width define a altura do formulrio.
( ) WindowState Define como o formulrio ser exibido em run time (tempo de execuo) 0
Normal; 1 Minimized; 2 Maximided
9. Qual a diferena bsica ente um mdulo padro (Module) e um Mdulo Classe (Class Module)
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
10. Qual dos dois cdigo abaixo tem maior rapidez no momento da escrita dos cdigos.
Cdigo 1 ( )
Private Sub cmdShowAbout_Click()
23
String,
wState
As
Cdigo 2 ( )
Private Sub cmdShowAbout_Click()
frmAbout.Caption = "Sobre..."
frmAbout.WindowState = vbNormal
frmAbout.BackColor = vbWhite
frmAbout.Show 1, Me
End Sub
Private Sub cmdShowCredits_Click()
frmCredits.Caption ="Crditos..."
frmCredits.WindowState= vbMaximized
frmCredits.BackColor= vbBlack
frmCredits.Show 1, Me
End Sub
11. Especifique descritivamente com criar uma seqncia de menus contendo o menu Arquivo,
com submenus Novo, Abrir, Fechar, Salvar, Salvar Como... e Sair. Cada menu dever possui
uma teca de atalho associada a tecla Alt e um Shortcut.
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
_______________________________________________________________________________
24
25
Tecnologia da Microsoft que utiliza componentes externos para desempenhar tarefas dentro de uma
aplicao, minimizando assim o tamanho do executvel e aumentando assim a velocidade de execuo
desta tarefas.
26
Para inserir uma imagem aps ligar o controle ImageList a um controle ToolBar o programador somente
poder inserir a imagem aps a ltima inserida e nunca entre duas imagem j inseridas.
4
Somente ser possvel remover a imagem caso o controle ImageList no esteja ligado a um controle
ToolBar.
27
coleo ListImages comea em 1), para retornar a imagem correta. A partir da a linha de cdigo
abaixo carrega a segunda imagem da coleo da ImageList1 para a Picture1.
Na Figura 9a podemos ver as configuraes do tamanho das imagens que iro compor a
coleo, devemos ressaltar que o tamanho dever ser escolhido antes de iniciar a insero de
imagens coleo, pois o controle no permite modificar este valor aps Ter sido inserida pelo
menos uma imagem, a opo UseMaskColor retorna ou seta a mascara de cor que a coleo ir
utilizar, veja exemplo no Cdigo 5. Na Figura 9b pode ser verificado dois campos Key e Tag. O
campo Key dever ser nico e Case Sensitive, ou seja, h diferena entre info e Info, pois h
diferena na primeira letra. Para evitar erros recomenda-se que todos os valores sejam em
minsculo, sabe-se que o valor setado pode conter qualquer letra, nmero ou smbolos. Ex:
info@/1. Entretanto seria mais fcil somente info1. O campo Tag serve para que qualquer
configurao extra possa ser especificada (setado). Desta forma o campo Tag em qualquer
controle serve para dar maior flexibilidade ao programador na hora de especificar um valor, alm
das variveis que podem ser declaradas, mas a propriedade Tag acaba sendo mais flexvel.
Private Sub Form_Load()
Dim imgX As ListImage
' Load bitmaps.
Set imgX = ImageList1.ListImages. _
Add(, "No", LoadPicture("bitmaps\assorted\Intl_No.bmp"))
Set imgX = ImageList1.ListImages. _
Add(, , LoadPicture("bitmaps\assorted\smokes.bmp"))
Set imgX = ImageList1.ListImages. _
Add(, , LoadPicture("bitmaps\assorted\beany.bmp"))
ScaleMode = vbPixels
' Set MaskColor property.
ImageList1.MaskColor = vbGreen
' Set the form's BackColor to white.
Form1.BackColor = vbWhite
End Sub
Private Sub Form_Click()
Static intCount As Integer ' Static variable to count images.
' Reset variable to 2 if it is over the ListImages.Count value.
If intCount > ImageList1.ListImages.Count Or intCount < 1 Then
intCount = 2 ' Reset to second image
End If
' Overlay ListImage(1) over ListImages 2-3.
Picture1.Picture = ImageList1.Overlay(intCount, 1)
' Increment count.
intCount = intCount + 1
' Create variable to hold ImageList.ImageWidth value.
Dim intW
intW = ImageList1.ImageWidth
' Draw images onto the form for reference. Use the ImageWidth
' value to space the images.
ImageList1.ListImages(1).Draw Form1.hDC, 0, 0, imlNormal
28
B
A
Figura 9. A- configuraes do tamanho das imagens; B- coleo de imagens inseridas no
ImageList.
4.1.2. Controle ListView (Lista de Visualizao)
O controle ListView (Figura 10)permite que o programador apresente itens de vrias
maneiras. Arranjados em colunas, em lista, com detalhes, cones pequenos, cones grandes. Como
o gerenciador de arquivos do Windows, o Windows Explorer. A Tabela 7, demonstra os
valores da propriedade View do controle ListView.
Tabela 7. Constantes, valores e descrio do propriedade View do controle ListView.
Constante
Valor
lvwIcon
lvwSmallIcon
lvwList
Descrio
(Padro) Cada objeto ListItem representado por um cone de
tamanho grande.
Cada objeto ListItem representado por um cone de tamanho
pequeno e um rtulo de texto que aparece direita do cone.
Vrios itens so arranjados horizontalmente.
Cada objeto ListItem representado por um cone de tamanho
pequeno e um rtulo de texto que aparece a direita do cone.
Os objetos ListItem so verticais em linha diferentes, e a
Constante
lvwReport
Valor
29
Descrio
informao de texto organizada em colunas.
Cada objeto ListItem representado por um cone de tamanho
pequeno e um rtulo. Os cones rtulos aparecem em
colunas. Colunas adicionais so utilizadas para exibir texto
adicionais, ou propriedades.
object
index
key
text
icon
6
7
Descrio
Requerido. Uma expresso de objeto que possua uma coleo de ListItems.
Opcional. Um inteiro (Integer) que especifica a posio onde voc quer inserir o
ListItem. Se nenhum ndice for especificado, o ListItem adicionado no fim da
coleo ListItems.
Opcional. Uma expresso de string nica que pode ser usada para acessar um
membro da coleo.
Opcional. Uma string que associada ao controle de objeto de ListItem.
Opcional. Um inteiro que fixa o cone para ser exibido a partir de um controle de
30
smallIcon
31
(Max), foi atribudo ao valor digitado na caixa de texto (se a caixa de texto estiver vazia ou com
valor no numrico positivo o Visual Basic retorna um erro (Run-time error '13': Type mismatch).
Para testa o progresso, basta inserir, por exemplo, o valor 1.000 ou 2.000 na caixa de texto
e clicar o boto CommnadButton1.
4.1.4. Controle StatusBar (Barra de Status)
O controle StatusBar, fornece a o usurio informaes adicionais de status do seu
aplicativo tais como: se as tecla Caps Lock, Num Lock, Insert est ativar ou no, Data e Hora do
Sistema operacional, etc.(Figura 12). Por exemplo, o processador de texto Microsoft Word,
utiliza o controle barra de status para informara ao usurio qual a pgina que est sendo editada,
qual seo, qual linha e coluna e assim por diante (Figura 13).
Cada barra de status, poder ser dividido em no mximo em 16 painis (panels), cada
Painel possui as seguintes propriedades:
1. Index o valor de posicionamento do painel dentro do controle StatusBar (somente
leitura);
2. Text o texto que dever ser exibido no painel, esta propriedade dever est associada com
valor 0 sbrText da propriedades Style;
3. ToolTipText a mensagem de dica que ser exibida quando o usurio passar e parar o
mouse no painel;
4. Key um valor nico que indica o painel;
5. Allignment especifica o alinhamento do contedo do painel.
6. Stye define o estilo e as informaes que ser exibida no painel (Tabela 9);
7. Bevel configura o painel para o modo de exibio. Os valores so: 0 sbrNoBevel, 1
sbrInsert (padro) e 2 sbrRaised. Estes valores exibem o painel respectivamente, como
plano, baixo relevo e auto relevo.
8. AutoSize esta propriedade define o ajuste do tamanho do painel. O valores so: 0
sbrNoAutoSize, 1 sbrSrping e 2 sbrContents. Estes valores definem respectivamente o
tamanho do painel como sem ajuste, com ajuste de acordo com o espao que falta at a
barra de status completar o tamanho da janela e ajuste de acordo com o contedo do painel;
9. MinimumWidth especifica o tamanho mnimo que ao painel dever Ter;
10. Actual Width Exibe o tamanho atual do painel (somente leitura);
11. Picture especifica a figura que dever ser exibida no painel. Em geral utiliza-se figuras com
tamanho de 16x16 pixels. Esta imagem poder ser tambm carregada de um controle
ImageList, com mostra o Cdigo 6 e 7;
12. Enabled habilita ou no o painel em run time;
13. Visible exibe ou no o painel em run time.
32
Constante
Valor
sbrText
sbrCaps
sbrNum
sbrIns
sbrScrl
sbrTime
sbrDate
5
6
Descrio
(Padro) Texto e ou bitmap (figura). Especifica o texto atravs
da propriedade Text; especifica a propriedade Picture, como o
mtodo LoadPicture ou atravs da Property Page ou como
demonstrado no Cdigo 8.
Caps Lock. Exibe as letras CAPS em negrito quando a tecla
Caps Lock ativada, ou ento desabilita o painel.
Number Lock. Exibe as letras NUM em negrito quando a tecla
Num Lock ativada, ou ento desabilita o painel.
Exibe as letras INS em negrito quando a tecla Insert (Ins)
ativada, ou ento desabilita o painel.
Exibe as letras SCRL em negrito quando a tecla Scrool Lock
ativada, ou ento desabilita o painel.
Exibe o horrio atual do sistema operacional
Exibe a data atual do sistema operacional
possvel adicionar (at no mximo 16 painis) em tempo de execuo (run time) atravs
de linhas de comando, ou mesmo especificar uma imagem a partir de uma imagem existente no
disco rgido (HD Hard Disk) ou ainda alterar as propriedade do controle StatusBar, como pode
ser visto no (Cdigo 9)
Private Sub Form_Load()
Dim pnlPanel As Panel
sbrMain.Panels(1).Text = "Controle StatusBar"
Set pnlPanel = sbrMain.Panels.Add(, , , sbrTime)
Set pnlPanel = sbrMain.Panels.Add(, , , sbrData)
Set pnlPanel = sbrMain.Panels.Add(, , , sbrCaps)
Set pnlPanel = sbrMain.Panels.Add(, , , , LoadPicture(App.Path _
& "\graphics\icons\Win95\Desktop.ico"))
Set
pnlPanel
=
sbrMain.Panels.Add(,
,
,
,
imlIcon16.ListImages(1).Picture)
End Sub
Cdigo 10. Controle StatusBar. Atribuindo um texto ao painel 1 e Adicionando painis e figuras.
4.1.5. Controle ToolBar (Barra de Ferramentas)
O controle ToolBar (Figura 14), facilita a construo de uma barra de ferramentas, estilo
Windows, ou seja como pode ser visto no Windows Explorer, por exemplo. A barra de ferramenta
um dos controles mais utilizados em aplicativos por ser intuitiva, ou seja, fornece ao usurio a
real funo de cada boto contido na barra de ferramenta.
Figura 14. Controles ToolBar's alinhados no topo da janela e em baixo e com a propriedade
Style 1 tbrFlat e 0 tbrStandard, respectivamente.
As propriedades Gerais do controle Toolbar (Figura 15 e 16) so:
33
1. MousePointer permite alterar o tipo de cursor que ser exibido pela Barra de ferramenta;
2. ImageList o controle ImageList associado que contm os cones que sero exibidos pela
barra de ferramentas;
3. DisabledImageList - o controle ImageList associado que contm os cones que sero exibidos
pela barra de ferramentas quando o boto estive desabilitado;
4. HotImageList - o controle ImageList associado que contm os cones que sero exibidos pela
barra de ferramentas quando o usurio passa o mouse por cima do boto8;
5. HelpContextID Nesta propriedade o programador dever atribuir o nmero do tpico de
ajuda, que foi especificado no projeto da ajuda, na seo MAP;
6. HelpFile Nesta propriedade o programador dever especificar o caminho lgico onde
encontra-se o arquivo de ajuda, caso este seja diferente do arquivo de ajuda do
programa/aplicativo;
7. AllowCostumize permite que o usurio a partir de um duplo clique possa personalizar a barra
de ferramentas;
8. Wrappable permite que a barra de ferramentas possa ser exibida "com quebra" caso o
tamanho da janela seja menor que a soma das larguras dos botes;
9. ShowTips permite exibi ou ocultar as dicas dos botes;
10. Enabled habilita ou desabilita a barra de ferramentas;
11. Appearance Permite exibir a barra de ferramentas em 3D (cc3D - Padro) ou plano (ccFlat);
12. BorderStyle Altera o estilo da borda da barra de ferramentas, para ccNone (Sem borda Padro) ou ccFixedSingle (com bordas);
13. TextAlignment Permite alinhar o texto abaixo do boto ou ao lado tbrTextAlignBottom
(Alinha abaixo) e tbrTextAlignRight (Alinha ao lado);
14. Style - permite alterar o estilo dos botes para 3D (tbrStandard - Padro) ou plano (tbrFlat).
Geralmente quanto a propriedade HotImageList vinculada a um controle ImageList, esta contm cones
ou figuras coloridas e a propriedade ImageList vinculada a um controle ImageList com cones ou figuras
com colao em escala de cinza ou cores esmaecidas. Dando assim o efeito que poder ser visto no Windows
Explorer, Internet Explorer, etc.
34
Figura 15. Caixa de propriedades geral de uma barra de ferramentas (aba General).
Figura 16. Caixa de propriedades dos botes de uma barra de ferramentas (aba Buttons).
4.1.6. Controle TreeView (rvore de Visualizao)
Este controle muito utilizado quando se quer exibir/visualizar dados de forma hierrquica,
como ocorre no Windows Explorer nas pastas exibidas direita da janela. Outro exemplo seria
exibir dados de uma banco de dados, ou seja, dados de um mesmo autor agrupados
hierarquicamente.
O controle TreeView, possui uma Property Page (Figura 17), com praticamente todas
as propriedades exibidas na janela propriedades. A seguir iremos especificar as propriedades mais
utilizadas no controle.
A propriedade Style fornece o estilo que ser exibido os ns (nodes) do controle os valores
vo de 0 a 7, como seguem:
0 Somente texto (tvwTextOnly).
1 Imagem e texto (tvwPictureText).
2 Mais/menos e Texto (txwPlusMinustext).
3 Mais/menos, imagem e texto (txwPlusPictureText).
4 Linhas e texto (txwTreelinesText).
5 Linhas, imagem e texto (txwTreelinesPictureText).
6 Linhas, mais/menos e texto (txwTreelinesPlusMinusText).
7 (Padro) Linhas, mais/menos, imagem e texto (txwTreelinesPlusMinusPictureText).
As demais propriedades so:
1. MousePointer permite alterar o tipo de cursor que ser exibido pelo controle;
2. LineStyle retorna ou seta o estilo de linhas exibidas entre os Nodes. Os valores so 0tvwTreeLines e 1 -tvwRootLines;
3. LabelEdit configura os node para que o texto possa ser editado ou no com um duplo clique.
Os valores so 0 tvwAutomatic (editado com duplo clique) e 1 tvwManual (no editvel);
35
4. ImageList configura a o controle ImageList que contm as imagem que sero exibidas nos
nodes;9
5. BorderStyle configura se o controle ir exibir as borad ou no. Os valores so 0 ccNone e
1 ccfixedSingle;
6. Appearance configura a aparncia do controle, se 3D ou plano. Os valores so 0 ccFlat
(plano) e 1- cc3D (tridimensional);
7. Indentation configura a largura indentation, ou seja, a largura entre o imagem ou o sins
menos/mais do node e o texto. O valor padro : 566,9292;
8. PathSeparator configura o tipo de caractere que ser utilizado como separador de nodes. O
valor padro \;
9. HideSelection configura o controle para exibir uma marcao no ltimo node selecionado
quando o controle perde o foco. Quando selecionado o texto no marcado, quando no
selecionado o node fica marca com uma colorao amena, em geral cinza, quando o controle
perde o foco;
10. Sorted configura o controle para distribuir o texto inserido nos nodes em ordem alfabtica,
quando esta opo e marcada ou setada;
11. FullRowSelected seleciona todo a linha quando o texto do node selecionado;
12. Enabled habilita o desabilita o controle;
13. CheckBoxes quando esta opo e marcada ou setada, cada node exibira um CheckBoxes
(;).
Figura 17. Caixa de propriedades dos botes de um controle Treeview (aba General).
As imagem dentro do controle ImageList, devero ser especificada o valor key, que devero ser nicos, ou
seja, no podem ter valor igual. O valor key ser utilizado para especificar a imagem que ir ser exibida pelo
Node, quando ele adicionado no controle TreeView. Em geral o nome das chaves (key) so dadas em
minsculo, pois existe uma sensibilidade entre maiscula e minscula, ou seja o parmetro Case Sensitive.
36
Figura 18. Exemplo de um controle Treeview, com um node pai (cones) e 4 nodes filhos.
LineStyle igual a 1 tvwRootLine.
Para inserir nodes num controle Treeview, basta setar os valores no mtodo Add da
propriedade Nodes. Como mostra o Cdigo 11.
A sintaxe para adio de nodes : Object.Nodes.Add([relative], [relationship], [key],
[text], [image], [selectedimage])
Parte
object
relative
relationship
key
text
image
selectedimage
Descrio
Requerido. Uma expresso de objeto que possua uma coleo de ListItems.
Opcional. O nmero de ndice ou chave de um objeto de Node pr-existente. A
relao entre o novo node e o node pr-existentes verificado no prximo
parmetro, relationship.
Opcional. Especifica a colocao relativa do objeto Node, como descritas na
Tabela 10.
Opcional. Uma expresso de string nica que pode ser usada para acessar um
membro da coleo.
Opcional. Uma string que associada ao controle de objeto de ListItem.
Opcional. O ndice ou key de uma imagem em um controle de ImageList
associado.
Opcional. O ndice ou key de uma imagem em um ImageList associado ao
controle a imagem exibida quando o Node for selecionado.
Valor
0
tvwLast
tvwNext
tvwPrevious
tvwChild
2
3
4
Descrio
First. The Node is placed before all other nodes at the same level of
the node named in relative.
Last. The Node is placed after all other nodes at the same level of
the node named in relative. Any Node added subsequently may be
placed after one added as Last.
(Default) Next. The Node is placed after the node named in relative.
Previous. The Node is placed before the node named in relative.
Child. The Node becomes a child node of the node named in relative.
"Informao",
"inter")
37
xNode
TreeView1.Nodes.Add(1,
tvwChild,
"Exclamao",
"exc")
End Sub
38
2. Utilizando o controle TreeView adicione via cdigo seis nodes com valor text livre entretanto os
valores Image e SelectedImage, diferente para cada node. O primeiro node dever ser pai e os
demais devero ser filhos. Adicione comentrio para cada linha de comando escrita. Dica
Lembre-se da coleo de imagens.
Private Form_Load() 'Begin load event of this form
End Sub
4. possvel alterar em Run-time (em tempo de execuo) o valor da(s) propriedade(s):
Scrolling de um controle ProgressBar.............................: ( ) Sim
( ) No
( ) No
( ) No
( ) No
( ) No
( ) No
( ) No
( ) No
( ) No
39
CommandButton
CommandButton
Label
Label
Propriedade
Name:
Caption:
BorderStyle:
StartUpPosition:
Name:
Caption:
Default:
Name:
Caption:
Cancel:
Name:
Caption:
Name:
Atributo
TelPrin
Idade
0 Fixed Single
2 ScreenCenter
cmdCalcular
&Calcular
True
cmdFechar
&Fechar
True
lbNascimento
Data de Nascimento
lbIdade
40
TextBox
TextBox
TextBox
TextBox
Caption:
Name:
Name:
Name:
Name:
41
Propriedade
Name:
Caption:
Atributo
frmAbout
Sobre - Tutorial do Microsoft Visual Basic
42
CommandButton
Label
Label
Label
Label
Label
Label
Label
BorderStyle:
StartUpPosition:
Name:
Caption:
Name:
Caption:
Align:
Name:
Caption:
Align:
Name:
Caption:
Autosize:
WordWrap:
Name:
Caption:
Autosize:
WordWrap:
Name:
Caption:
Name:
Caption
Name:
Caption
5.0
0 Fixed Single
2 ScreenCenter
cmdOK
&OK
lbTitulo
Titulo
Right Justify
lbVersao
Verso
Right Justify:
lbDesc
Descrio
True
True
lbComentarios
Comentrios
True
True
lbCopyright
Copyright
lbTradeMarks
Trademarks
lbProduto
Produto
43
45
Descrio
Devolve a secante de um ngulo x em radiano
Devolve a cosecante de um ngulo x em radiano
Devolve a cotangente de um ngulo x em radiano
Devolve o valor de com dupla preciso
Devolve o absoluto de um nmero x
Devolve a arcotangente de um ngulo x em radiano
Devolve o cosseno de um ngulo x em radiano
Devolve o valor de e com dupla preciso
Devolve a valor e (2,7182) elevado a um nmero x
Devolve o nmero aproximado de um valor x
Devolve o hexadecimal do nmero x
Devolve o logaritmo natural de um nmero x
Devolve o logaritmo na base 10 de um nmero x
Devolve o logaritmo na base n de um nmero x
Devolve o octagonal do nmero x
Devolve o nmero radomizado de uma valor x
Devolve o seno de um ngulo x em radiano
Devolve a raiz quadrada de um nmero x
Devolve a tangente de um ngulo x em radiano
Converte o valor x radiano para grau
Converte o valor de x grau para radiano
TaxaPorPeriodo normalmente, taxa de juros estipilada por ano, mas voc paga todo ms.
Portanto o valor da taxa anual deve ser 0.08 e a TaxaPorPeriodo 0.08/12.
ValorFinal em uma hipoteca o valor seria zero. Em um plano de poupana, insto seria a
quantia que voc gostaria de reservar para a aposentadoria, por exemplo.
QunadoPaga voc paga no incio do perodo ou no final? Utilize 0 (zero) para o finla do ms
e 1 para o incio.
46
Embora voc tenha de utilizar esses nomes para os parmetros se voc os utiliza como
argumentos nomeados, a notao da Microsoft no enfatiza suficientemente Que as unidades
utilizadas para as vrias entradas devem ser as mesmas. Por exemplo, se a taxa calculada
utilizando meses, nper tambm tem de ser calculada utilizando meses.
7.2.2. Funo FV (Valor Futuro de Anuidade)
Est funo utilizada, por exemplo, para o clculo de aposentadoria, porque ela fornece o
valor futuro de uma anuidade com base em pagamentos (ou retiradas) peridicas e uma taxa de
juros constante.
A sintaxe para a funo : FV(rate, nper, pmt[, pv[, type]]) , para melhor entendimento
FV(TaxaJurosPorPeriodo, NumPeriodos, PagamentoPOrPeriodo [, ValorInicial [, QuandoDevido]])
Os dois primeiros argumentos devem ser expressos pelas mesmas unidades. E, como para
todas as funes financeiras, os valores pagos so representados por nmeros negativos; e os
valores recebidos so representados por nmeros positivos.
7.2.3. Funo IPmt (Taxa de Juros para Durante um Perodo)
Esta funo fornece a taxa de juros para durante um perodo de uma anuidade com base
em pagamentos iguais e perodos e uma taxa de juros constante. Por exemplo, voc poderia
utiliz-la para verificar os juros pagos em um determinado ano que os computadores da
empresa hipotecria esto relatando Receita Federal.
A sintaxe para a funo IPmt(rate, per, nper, pv[, fv[, type]]), para melhor entendimento
IPmt(TaxaJurosPeriodo, NumPeriodos [, ValorInicial [,QuandoDevido]] )
7.2.4. Funo NPer (Nmero de Perodos para Atingir uma Anuidade)
Esta funo informar quanto tempo (o nmero de depsitos/retiradas peridicas) levar
para acumular uma anuidade.
A sintaxe : NPer(rate, pmt, pv[, fv[, type]])
7.2.5. Funo PV (Presente Valor Presente Baseado num Perodo)
Esta funo informa quanto vale hoje os pagamentos peridicos feitos no futuro.
A sintaxe : PV(rate, nper, pmt[, fv[, type]])
7.2.6. Funo NPV (Valor Presente Lquido)
Est funo calcula o valor presente lquido. Esta funo utilizada, por exemplo, se voc
comea pagando com um custo inicial, mas depois obtm dinheiro em anos sucessivvos.
A sintaxe : NPV(rate, values()), ou melhor NPV(TaxaPorPeriodo, ArrayOf())
necessrio preencher o array com valores aproprieados na ordem coreta. Por exemplo, a
primeira entrada poderia ser um nmero positivo representado o valor recebido. Pelo menos um
entrada tem que ser positiva e uma entrada tem que ser negativa. Esta funo mais geral que a
funo PV, pois a utilizao de uma array permite que o valor recebido ou desembolsado varie
com o tempo.
7.2.7. Funo Rate (Taxa por Perodo)
Esta funo fornece a taxa de juros por perodo para uma anuidade. Voc utilizaria isso
para verificar a taxa de juros reais que estaria pagando se realmente houvesse a promoo padro
de "Por apenas $30,00 por ms durante dois anos"
Sintaxe : Rate(nper, pmt, pv[, fv[, type[, guess]]])
47
48
A DML permite manipular os dados (Inserir, Excluir e Atualizar) bem como executar
consultas atravs da recuperao de subconjuntos de dados para posterior tratamento. seus
principais comandos so:
49
50
51
db as Database
dyn as Recordset
db=DbEngine.Workspaces(0).OpenDatabase(app.path & "\escola.mdb")
dyn=db.QueryDefs("lista_alunos").OpenRecordset(dbOpendynaset)
Ou elimin-la :
db.Querydefs.Delete "Lista_alunos"
Para tirar maior proveito das QueryDefs costuma-se cri-las de forma que aceitem
parmetros, para isto usamos a palavra-chave PARAMETERS para passar um ou mais parmetros
para as consultas SQL.
Suponha que no caso do exemplo anterior gostariamos de listar todos os alunos de uma
determinada srie, para isso criamos a consulta e passamos o parmetro da srie desejada :
Dim db as Database
Dim qd as QueryDef
Dim dyn as Recordset
Dim Sql as String
set db=DbEngineworkspaces(0).Opendatabase(app.path & "\escola.mdb")
sql= "PARAMETERS pSerie String SELECT * FROM tblalunos WHERE serie =
pSerie "
sql=sql & " ORDER BY nome "
set qd=db.CreateQueryDef("Lista_alunos", Sql )
qd.Parameters("pSerie")= "1"
set dyn= qd.OpenRecordset()
8.4.1. Mtodos de QueryDef
Os mtodos usados pelas QueryDefs so: Execute e OpenRecordset.
O mtodo Execute usado para executar comandos de ao como DELETE ou UPDATE que
no retornam um conjunto de registros , usado tambm para criar tabelas e ndices via instruo
SQL.
O mtodo OpenRecordset usado para retornar um conjunto de registros como resultado
da consulta.
52
53
dbLongBinary
Memo
GUID
dbMemo
dbGUID
Descrio
Verdadeiro/Falso
Byte 0-255
Inteiro
Longo
Moeda
Simples
Duplo (negativo/positivo)
Data ou hora
Texto at 255 caracteres
Objeto OLE (figura, arquivo,
etc).
Memorando texto longo
Global Unique Identifier
Tabela Alunos
Disciplina
Portugus
Matemtica
Histria do Brasil
Codigo
001
002
003
Nome
Joo da Silva
Jos Amrico de Novaes
Marcelo Paes Gulart
Tabela Exame
Ident
1
2
3
IDAluno
001
001
001
IDExame
125
254
632
Nota
8,0
8,5
9,0
54
Error
Database
Container
Document
QueryDef
Field
RecordSet
Relation
Field
Field
Parameter
TableDef
Index
Field
Field
User
Group
Group
User
55
9.3.1.1. dbOpenTable
Permite acesso a somente uma tabela do banco de dados e lhe permite trabalhar os dados.
No possvel utilizar uma instruo SQL para extrair dados, somente o nome da tabela. Por
Exemplo:
Dim tblPais As Recordset
Set tblPais = Dbase.OpenREcordSet ("Paises", dbOpenTable)
Cdigo 15. Rotina para acesso a dados de uma tabela utilizando a instruo dbOpenTable
9.3.1.2. dbOpenDynaset
Permite extrair dados de uma ou mais tabelas usando uma instruo SQL. O conjunto de
dados retornado atualizvel. Um dynaset no consiste em dados reais, mas em vez disso uma
lista das referncias para as localizaes de dados dentro das tabelas. Tipicamente o programador
utilizaria um dynaset em uma tela de edio onde os dados esto sendo apresentados para os
usurios para adio, edio e excluso. Por exemplo:
Dim tblPais As Recordset
Set tblPais = Dbase.OpenREcordSet ("SELECT * FROM Paises ORDER BY SIGLA",
dbOpenDynaset)
Cdigo 16. Rotina para acesso a dados de uma tabela utilizando a instruo dbOpenDynaset,
utilizando instrues SQL.
Como um dynaset consiste em uma coleo de referncias e no de dados reais, ele no
acessa os dados subjacentes at que um campo seja referenciado no aplicativo. Desse modo, o
programador tema a certeza de que os dados apresentados so atuais, um detalhe importante em
sistemas multiusurios.
56
9.3.1.3. dbOpenSnapshot
Como um dynaset, um snapshot permite extrair dados de uma ou vrias tabelas usando
uma instruo SQL, mas o conjunto do resultado no editvel. Um snapshot consiste em uma
cpia fixa dos dados reais que existem no banco de dados ao tempo que o Sanpshot criado.
Uma vez que uma snapshot seja criado, os dados retornados tornam-se independentes da cpia
original no disco, e as referncias subsequentes a um campo snapshot podem no
necessariamente refletir os dados subjacentes mais atuais. Como os snapshots no precisam
verificar o disco toda vez que um campo referenciado, eles so consideravelmente mais rpidos
que os dynasets.
necessrio ter cuidado ao utilizar um sanpshot. Como est extraindo os dados para a
estao de trabalho, consideravelmente mais memria utilizada do que ao criar um dynaset.
Uma vez que a memria pode ficar toda ocupada, o VB comear a transferir dados para o disco.
Neste ponto, a degradao no desempenho comear a ser sentida. Se o snapshot for grande o
bastante e o espao de transferncia ficar todo ocupado, o aplicativo ir diparar mensagem de
erro ou mesmo poder ficar paralisado.
9.3.1.4. dbOpenFowardOnly
Os recordsets do tipo Foward-only permitem que os usurios passem uma vez por um
recordset. Esta opo til para as operaes tais como quando se est carregando uma caixa de
combinao (ComboBox) ou uma caixa de listagem (ListBox) com os dados de uma tabela como
mostra o Cdigo 17.
Public Sub CarregaDados(oList As ListBox)
Dim oDataBase As Database
Dim snpDici As Recordset
'oList o nome do da caixa de listagem que ir receber os dados do
recordset
'Esta subrotina acessa a base de dados NWind.mdb padro do VB
Set oDataBase = DBEngine.OpenDatabase(App.Path & "\Nwind.mdb")
'Esta sub-rotina assume uma tabela com pelo menos duas colunas:
CompanyName e descr
Set snpDici = oDataBase.CreateSnapshot("SELECT * FROM Customers ORDER BY
CompanyName", dbForwardOnly)
'Percorre
listagem
Snapshot
em
um
lao
acrescenta
os
dados
na
caixa
de
57
Cdigo 17. Preenchendo uma caixa de listagem com dados de uma tabela utilizando o recordeset
do tipo Foward-only.
9.3.1.5. dbAppendOnly
Permite o usurio acrescentar novos registros, porm impede a edio e excluso dos
registros existentes, inclusive dos que ele adicionou.
9.3.1.6. dbReadOnly
Permite somente a consulta de dados, ou seja, no possvel acrescentar, editar ou excluir
dados.
9.3.1.7. dbSeeChanges
Dispara um erro de execuo se um usurio estiver alterando os dados que outro usurio
estiver editando. Este tipo de recordset ideal para rede multiusurios.
9.3.2. Utilizando o Motor do Banco de Dados DBEngine
Para abrir um banco de dado necessrio referenciar a biblioteca DAO desejada. A sintaxe
de abertura de um banco de dados Access como segue:
Set database = workspace.OpenDatabase (dbname, options, read-only, connect)
Tabela 16. The OpenDatabase method syntax has these parts11.
Part
database
workspace
dbname
options
read-only
connect
Description
An object variable that represents the Database object that you want to open.
Optional. An object variable that represents the existing Workspace object that
will contain the database. If you don't include a value for workspace,
OpenDatabase uses the default workspace.
A String that is the name of an existing Microsoft Jet database file, or the data
source name (DSN) of an ODBC data source. See the Name property for more
information about setting this value.
Optional. A Variant that sets various options for the database, as specified in
Settings.
Optional. A Variant (Boolean subtype) value that is True if you want to open
the database with read-only access, or False (default) if you want to open the
database with read/write access.
Optional. A Variant (String subtype) that specifies various connection
information, including passwords.
'This example uses the OpenDatabase method to open one Microsoft Jet
database.
Sub OpenDatabaseX()
Dim wrkJet As Workspace
Dim dbsNorthwind As Database
' Create Microsoft Jet Workspace object.
Set wrkJet = CreateWorkspace("", "admin", "", dbUseJet)
' Open Database object from saved Microsoft Jet database
' for exclusive use.
MsgBox "Opening Northwind..."
Set dbsNorthwind = wrkJet.OpenDatabase("Northwind.mdb", True)
11
58
End Sub
Cdigo 18. Rotina para abertura de uma base de dados MS Access12.
Caso a base de dados possuir uma senha esta dever ser informada como segue o
exemplo abaixo:
Sub OpenDatabaseX()
Dim wrkJet As Workspace
Dim dbsNorthwind As Database
' Create Microsoft Jet Workspace object.
Set wrkJet = CreateWorkspace("", "admin", "", dbUseJet)
' Open Database object from saved Microsoft Jet database
' for exclusive use, don't read-only, and with password.
MsgBox "Opening Northwind..."
Set
dbsNorthwind
=
wrkJet.OpenDatabase("Northwind.mdb",
True,
False,";PWD=senha")
End Sub
Cdigo 19. Rotina para abertura de uma base de dados MS Access com senha.
9.3.3. Utilizando o Controle DataControl
Para Ter acesso a um banco de dados atravs do controle Data, inicialmente o
programador dever inserir um deste controle no formulrio. No evento Load as seguintes linhas
de cdigo devero ser especificadas.
Private Sub Form_Load()
With Data1
.DatabaseName = App.Path & "\Nwind.mdb" 'Abre o banco de dados
.RecordSource = "Customers" 'Especifica qual a tabela o controle
dever acessar os dados
End With
End Sub
Cdigo 20. Rotina para acesso a um banco de dados do tipo MS Access.
9.4. Acessando Dados de uma Tabela
O acesso a dados de uma determinada tabela pode ser feito atravs do controle
DataControl ou atravs de uma instruo SQL.
9.4.1. Acesso Dados de uma Tabela Utilizando o DataControl
Como foi visto no tpico Utilizando o Controle DataControl, o acesso ao banco de
dados e o acesso a uma tabela, porm no somente atravs de cdigo o programador poder
especificar a tabela que o controle dever acessar, pois na janela propriedades e na propriedades
RecordSource este valor (nome da tabela) poder ser especificado. Obviamente que este
procedimento d menor flexibilidade ao programador, caso ele queira alterar o valor, mas como
quase tudo no Visual Basic possvel, caso voc tenha especificado o valor e queira alter-lo,
basta modifica-lo via cdigo, como demonstrado no Cdigo 20.
9.4.2. Acesso Dados de uma Tabela Utilizando Instruo SQL
O acesso a dados de uma tabela com certeza fica mais dinmico quando lanamos mo das
instrues SQL, portanto conhecimentos bsicos desta linguagem so requeridos ara se trabalhar
com banco de dado seja ele qual for. A flexibilidade de ordenar, agrupar e mesmo filtrar dados
proporcionada pela SQL sempre bem vinda em aplicao crticas e que usam banco de dados
12
59
robustos. Apesar do MS Access ter suas limitaes, o uso de instrues SQL torna mais rpido o
acesso aos dados.
possvel utilizar as instrues SQL em conjunto com o DataControl, como podemos
verificar no Cdigo 21.
Private Sub Form_Load()
With Data1
.DatabaseName = App.Path & "\Nwind.mdb" 'Abre o banco de dados
'Especifica qual a tabela o controle dever acessar os dados via
instruo SQL
'O asterisco(*) indica que todos os campos da tabela sero carregados,
entretanto nunca especifique o asterisco juntamente com a instruo SQL
GROUP BY, pois o motor do banco de dados exibir um erro de sintaxe de
instruo SQL.
.RecordSource = "SELECT * FROM Customers ORDER BY CompanyName"
End With
End Sub
Cdigo 21. Rotina para acesso a dados de uma tabela via instruo SQL
9.5. Adicionando, Localizando, Editando e Excluindo Dados de uma Tabela
Agora vamos exemplificar como podemos adicionar, edita r e excluir dados em uma tabela.
9.5.1. Adicionado Dados
Para preparar a tabela para receber um novo registro necessrio que o nmero de
registro de uma tabela seja verificado, evitando assim erros, no cdigo que segue possvel
verificar o teste do n. de registro da tabela e em seguida atravs de estrutura de deciso
especificar a linha de comando desejada (declarao)
Public Sub AddNew()
With Data1 'Inicia o lao with
'Verifica o nmero de registro da tabela
If .Recordset.RecordCount <> 0 Then
'Se for diferente de zero
'Move o registro para o ltimo
.Recordset.MoveLast
'Prepara a tabela para adicionar um novo registro
.Recordset.AddNew
Else 'Seno
'Somente prepara a tabela para adicionar um novo registro
.Recordset.AddNew
End If
End With 'Finaliza o lao with
End Sub
Cdigo 22. Rotina para preparar uma tabela para receber novos dados (registro)
Obviamente que antes de iniciar uma rotina desta, o banco de dados e a tabela deveram
ter sido especificados, pois se no este procedimento ir gerar um erro.
Com a utilizao do DataControl possvel vinculara TextBox, ListBox, Label, ComboBox e
outros controles que possuam as propriedade DataField e DataSource. A propriedade DataField
especifica qual o campo da tabela o controle estar vinculado e a propriedade DataSource,
especifica a qual controle DataControl o objeto est vinculado, ou seja, se o programador
especifica o caminho do banco de dados e o nome da tabela em um controle Data (nome=Data1)e
em seguida especifica as propriedades de uma caixa de texto, DataSource como Data1 e DataField
60
como Code, significa que a caixa de texto estar ligada aos dados da tabela do banco de dados
especificada e exibir os dados do campo Code. Vale lembrar que estas propriedades poder ser
alterada via cdigo, ou seja, em Run-Time.
Aps o preparo da tabela para receber o novo registro necessrio ao final salva-lo, pois
por se s o mtodo AddNew, no garante a adio no banco de dados.
Para adicionar um registro sempre necessrio iniciar o mtodo AddNew e em seguida o
mtodo UpdateRecord, como pode ser visto no Cdigo 23.
Public Sub SaveReg ()
'Salva fisicamente os dados no registro preparado pelo mtodo
AddNew
Data1.UpdateRecord
'Cria um Bookmark (marca), onde aps o registro ser salvo o banco
de dados aponta para o ltimo registro modificado, neste caso o registro
recm adicionado
Data1.Recordset.Bookmark = Data1.Recordset.LastModified
End Sub
Cdigo 23. Rotina para gravar dados em uma tabela do banco de dados.
9.5.2. Localizando Dados
Antes de editar um dado necessrio localiza-lo de forma precisa e rpida, nesta hora
entra a perspiccia do programador.
Existem duas formar de localizar um determinado registro dentro da tabela. So elas via as
instruo do prprio DataControl ou via SQL. Vale lembrar que as instrues do SQL d ao
programador maior flexibilidade para trabalhar do que as instrues do DataControl.
Para localizar um determinado dado o programador deve ter em mente quais o campos
podero ser utilizados para localizar, ou seja, numa tabela com 20 campos, necessrio que
alguns deles seja utilizado como fontes de pesquisa. Para exemplificar, digamos que destes 20
campos escolhemos 4 (codigo, produto, tipo, fornecedor). Assim o Cdigo 24 exemplifica de forma
simples como localizar os dados atravs do DataControl e SQL.
'Localizando dados atravs do DataControl
Public Sub Localiza(sDado As String)
Data1.Recordset.FindFirst " campo ='" & sDado & "'"
End Sub
'Localizando dados atravs da SQL
Public Sub Localiza (sDado As String)
Dim rsLocal As Recordset
Set rsLocal = DB.OpenRecordset _
("SELECT * FROM tabela WHERE campo ='" & sDado & "'" _
, dbOpenSnapshot)
End Sub
'No local onde est escrito campo voc pode substitui pelo verdadeiro
nome do campo, obviamente deve-se tomar cuidado no momento de especificar
este nome pois se o campo no existir o Visual Basic gera um erro "Item
Not found in this collection"
Cdigo 24. Rotina para localizar dados dentro de uma tabela, utilizando as instrues do
DataControl e instrues SQL.
61
O DataControl possui ainda outras variantes para pesquisa, so elas: FindLast, FindNext,
FindPrevious.
62
End If
Me.tvwLocal.Clear 'Limpa os nodes do Treeview
cboLocal.AddItem cboLocal.Text 'Adiciona a palavra digitada no List do
ComboBox
'Localiza o ttulo a partir de pelo menos uma palavra digitada no
ComboBox.
If Me.opLTitulo.Value Then
'O caractere curinga asterisco(*), permite localizar a palavra em aulauer
parte do campo titulo
Set rsTitle = DB.OpenRecordset("SELECT * FROM tbdicas WHERE titulo
LIKE '*" & Me.cboLocal.Text & "*'")
Else
'Essa opo somente permite localizar o titulo exatamente como ele foi
inserido na tabela
Set rsTitle = DB.OpenRecordset("SELECT * FROM tbdicas WHERE dica
LIKE '" & Me.cboLocal.Text & "'")
End If
If rsTitle.RecordCount <> 0 Then
'Se registro(s) que satisfao a pesquisa fome localizado
'Os titulo sero inserido num Treeview
'Inicia o lao at que o ltimo registr que satisfaa a consulta sej
alcanado
Do Until rsTitle.EOF
Set xNode = tvwLocal.Nodes.Add(, , , rsTitle!Titulo)
xNode.Image = "dica" 'Na ImageList dever conter uma imagem
(cone) com o valor key igual a dica
xNode.SelectedImage = "vis" 'na ImageList dever conter uma
imagem (cone) com o valor key igual a vis
rsTitle.MoveNext 'Move o registro para o prximo
'finaliza o lao qunado o final da pesquisa/consulta for alcanada
Loop
Else
'Caso nenhum registro for encontrado exibida a seguinte mensagem
MsgBox "A(s) palavra(s) '" & cboLocal.Text & "'" & vbCrLf & _
"no foi(am) localizada(s) no banco de dados!", vbExclamation,
Titulo
End If
Exit Sub
Err_Local:
Call SaveErros 'Chama uma rotina para exibir erros
End Sub
Cdigo 26. Rotina para localiza dados dentre de uma tabela, utilizando SQL e em seguinda
preenchendo uma TreeView com os dados encontrados.
Uma sugesto para o layout do exemplo anterior mostrado na Figura 26.
63
Figura 26. Layout para pesquisa de dados do programa Lizaro Visual Basic Dicas v3.0
9.5.3. Editando Dados
Sempre necessitamos alterar dados dentro de uma tabela, pois os dados so dinmicos ou
mesmo pelo fato do digitador ter errado alguma coisa na hora de inserir as informaes, portanto
sempre bem vinda a opo editar dados em um projeto que possuam conexo com banco de
dados. O Cdigo 27 ilustra de forma simples uma rotina de como editar um registro de uma
tabela.
Public Sub EditReg()
Data1.Recordset.Edit
End Sub
Cdigo 27. Rotina para editar um registro gravado em uma tabela do banco de dados.
9.6. Compactando e Recuperando um Banco de Dados
Sempre que valores so inseridos ou excludos das tabelas de um banco de dados, espaos
vazios acabam sendo criados, assim para limpara este espao vazios necessrio compactar o
banco de dados para tal. Outro recurso que o DBEngine (motor do banco de dados) oferece a
recuperao de um banco de dados. Esta opo funciona quando o banco de dados est
corrompido por algum motivo, assim ele no poder ser acessado pelo DBEngine e
consequentemente pelo programa. Assim est duas rotina so bem vindas no incio da aplicao
que trabalha com banco de dados, obviamente recupera-se e depois compacta-se.
Outro detalhe para estas operaes funcionarem sem erro a base de dados no poder
est sendo utilizada por outro usurio, ou seja, dever estar fechada.
Devemos ressaltar que a compcatao e restaurao (reparao) abordada aqui somente
servem somente para banco de dados MS Access e recomendamos uma leitura mais detalhada da
ajuda do Visual Basic para melhor esclarecimento de todas as opes oferecidas por estes
mtodos.
9.6.1. Compactando Banco de Dados
Agora veremos duas rotinas para compactar o banco de dados com senha e sem senha,
como segue abaixo lembre-se que o banco de dados dever esta fechado.
Sub Compacta_Database()
Dim dbsNorthwind As Database
'Fecha o banco de dados para evitar erros
dbsNorthwind.Close
'Verifica se j existe um arquivo com o nome do arquivo a ser
compactado
64
numero:
"
&
65
66
SavePictureToDb
ReadPictureFromDb
Set rstAlbum = Nothing
dbTest.Close
End Sub
Cdigo 31. Rotina para salvar e recuperar uma figura dentro dum campo OLE de um banco de
dados17.
17
67
68
69
Valor
0
1
2
3
4
5
6
7
8
9
14
16
Constante
VtChChartType3dBar
VtChChartType2dBar
VtChChartType3dLine
VtChChartType2dLine
VtChChartType3dArea
VtChChartType2dArea
VtChChartType3dStep
VtChChartType2dStep
VtChChartType3dCombination
VtChChartType2dCombination
VtChChartType2dPie
VtChChartType2dXY
18
Alm das janelas de propreidades do VB, podemos abrir uma caixa de dilogo de
propriedades do controle MSChart, como em todos a maioria dos controle ActiveX.
10.1. Criando um Grfico Manualmente19
O exemplo que se segue ir demonstrar como criar um grfico manualmente, inclusive a
configurao do grfico. Obviamente que tais configuraes poderiam ser feitas em Design Time,
entretanto como a configura a ser ealizada simples daremos preferncia pela configurao via
cdigo, mostrando as propriedades do controle.
Inicie um novo projeto no VB e em seguida insirra um controle Microsoft Chart Control e
por fim insira o cdigo abaixo para platar os dados no grfico.
Private Sub Form_Load()
'Determinado uma varavel array
Dim Matriz(1 To 4, 1 To 4)
With MSChart1'Inicia o lao With
'Configura as propriedades do controle
.ShowLegend = True 'Exibir Legenda
.Title = "Receitas/Despesas"
.Plot.Axis(VtChAxisIdX).AxisTitle.Text = "Meses"
.Plot.Axis(VtChAxisIdY).AxisTitle.Text = "Valor em Reais ($)"
'Determina os valores da Matriz
Matriz(1, 2) = "Receita"
Matriz(1, 3) = "Despesas"
Matriz(1, 4) = "Mdia"
Matriz(2, 1) = "Abril"
Matriz(3, 1) = "Maio"
Matriz(4, 1) = "Junho"
Matriz(2, 2) = 500
Matriz(2, 3) = 400
Matriz(2, 4) = (Matriz(2, 2) + Matriz(2, 3)) / 2
Matriz(3, 2) = 625
Matriz(3, 3) = 500
Matriz(3, 4) = (Matriz(3, 2) + Matriz(3, 3)) / 2
Matriz(4, 2) = 300
Matriz(4, 3) = 700
Matriz(4, 4) = (Matriz(4, 2) + Matriz(4, 3)) / 2
'Plota os dados no grfico
.ChartData = Matriz
End With 'Finaliza o lao With
End Sub
Cdigo 36. Cdigo para criao de um grfico de recietas/despesas e mdia dutrante trs meses.
A figura abaixo demonstra como fica o grfico aps as linhas inseridas no evento Load do
From.
19
71
Figura 28. Grfico de receitas/despesas de abril a junho apresentando a mdia de cada ms.
Outro exemplo de grfico manual poder ser criado com exibio da estatstica pode ser
visto no exemplo abaixo e figura seguinte:
Private Sub cmdDesvio_Click()
'Exibe a linha de desvio padro
MSChart1.Plot.SeriesCollection.Item(1).StatLine.Flag = VtChStatsStddev
End Sub
Private Sub cmdMaximo_Click()
'Exibe a linha de valor mximo
MSChart1.Plot.SeriesCollection.Item(1).StatLine.Flag = VtChStatsMaximum
End Sub
Private Sub cmdMedia_Click()
'Exibe a linha de valor mdio
MSChart1.Plot.SeriesCollection.Item(1).StatLine.Flag = VtChStatsMean
End Sub
Private Sub cmdMinimo_Click()
'Exibe a linha de valor mnimo
MSChart1.Plot.SeriesCollection.Item(1).StatLine.Flag = VtChStatsMinimum
End Sub
Private Sub cmdRegressao_Click()
'Exibe a linha de regresso
MSChart1.Plot.SeriesCollection.Item(1) _
.StatLine.Flag = VtChStatsRegression
End Sub
Private Sub Form_Load()
'Determinado uma varavel array
Dim Matriz(1 To 6, 1 To 2)
With MSChart1
'Configurando as propriedades do controle
.ShowLegend = False 'Oculta Legenda
.Title = "Receitas/Despesas"
.Plot.Axis(VtChAxisIdX).AxisTitle.Text = "Meses"
.Plot.Axis(VtChAxisIdY).AxisTitle.Text = "Valor em Reais ($)"
.Plot.AutoLayout = True
'Determinando os valores da Matriz
Matriz(1, 1) = "Janeiro"
Matriz(2, 1) = "Fevereiro"
Matriz(3, 1) = "Maro"
Matriz(4, 1) = "Abril"
Matriz(5, 1) = "Maio"
Matriz(6, 1) = "Junho"
Matriz(1, 2) = 345
Matriz(2, 2) = 978
Matriz(3, 2) = 410
Matriz(4, 2) = 1520
Matriz(5, 2) = 200
Matriz(6, 2) = 280
'Modifica o tipo do grfico
.chartType = VtChChartType2dLine '3 Grafico de linha 2D
'Plota os dados no grfico
.ChartData = Matriz
End With
Cdigo 37. Cdigos para criao de um grfico manualmente e xibio de estatsticas.
Figura 29. Grfico criado com dados de entrada manual, exibindo as estatsticas.
73
20
30
25
25
20
20
15
15
10
10
Figura 30. Grfico plotado a partir dos dados de um banco de dados Access 97
75
11.1.2.1.
Mtodo Clear
O mtodo Clear renicializa todas as propriedades do objeto Err para uma condio de
nenhum erro. Todos os valores numricos so definidos como zero e as propriedades do texto
como strings de tamanho zero. Clear dever ser chamada sempre que uma condio de erro for
tratada pela rotina de tratamento de erros para evitar que o mesmo erro seja disparado duas
vezes.
Mensagem
Database Name' isn't a valid database name.
Database 'name' is exclusively locked.
Table 'name' is exclusively locked.
Couldn't lock table 'name'; currently in use.
Table 'name' already exists.
'Index name' isn't an index in this table.
Operation invalid without a current index.
Update Or CancelUpdate without AddNew Or Edit.
No current record.
Duplicate value In index, primary key, Or relationship. Changes were
unsuccessful.
AddNew Or Edit already used.
Commit Or Rollback without BeginTrans
Database has reached maximum size.
Can't open any more tables or queries.
Disk I/O Error during read.
'Path' isn't a valid path.
Couldn't save; currently locked by another user.
Mensagem
Can't update. Database or object is read-only.
Couldn't save record; currently locked by another user.
Record is deleted.
Couldn't save; currently locked by user 'name' on machine 'name'.
Couldn't read; currently locked by user 'name' on machine 'name'.
Couldn't update; currently locked by another session on this machine.
Table 'name' is exclusively locked by user 'name' on machine 'name'.
Nmero
3197
3260
3261
77
Mensagem
Data has changed; operation stopped.
Couldn't update; currently locked by user 'name' on machine 'name'.
Table 'name' is exclusively locked by user 'name' on machine 'name'. The
database Is opened by user 'name' on machine 'name'.
Mensagem
Record(s) can't be added; no Insert Data permission on 'name'.
Record(s) can't be edited; no Update Data permission on 'name'.
Record(s) can't be deleted; no Delete Data permission on 'name'.
Couldn't read definitions; no Read Definitions permission for table Or query
'name'.
Couldn't create; no Create permission for table or query 'name'.
Record(s) can't be read; no Read Data permission on 'name'.
Mensagem
Nome ou nmero de Arquivo invlido
Caminho do arquivo Errado. Arquivo no encontrado
Modo de arquivo errado
Arquivo aberto por outro aplicativo
Erro de dispositivo Entrada e Sida do disco (HardDisk)
Arquivo j existente
Tamanho incorreto de registro
Disco cheio. Espao insuficiente para gravar o arquivo ou outra coisa
A entrada ultrapassou o final do arquivo. EOF foi utilizado incorretamente
Nmero de registro errado
Nome de Arquivo errado as regras de nomenclatura de arquivo no foram
respeitadas
Vrios arquivo abertos ao mesmo tempo
Dispositivo no disponvel. Erro de leitura de mdia ou disquete no inserido no
drive
Permisso negada ou o disco ao qual voc deseja acessar est protegido contra
gravao ou o arquivo est aberto por outra aplicao
O disco no est pronto ou disquete no inserido no drive
Erro de mdia de disco. Disquete ou disco rgido com problemas
Permiso negada para renomear o arquivo entre unidades diferentes
Erro de acesso oa arquivo ou caminho do mesmo
Caminho no encontrado. Arquivo no existente ou caminho incorreto.
21
Consulta ao Visual Basic 5 - Completo e Total - Gary Cornell, Makron Books - 1998
79
Optional
erNum
As
22
81
Figura 31. Tela inicial do Setup Wizard que acompanha o Visual Basic 5.0.
12.3. Package and Deployment Wizard (Visual Basic 6.0)
Apaser de ser muito parecido com o Setup Wizard, a interface do P & D Widzard bem
diferente. Algumas funes foram alteradas, melhorads e outras adicionadas, para melhorar a
distribuio dos aplicativos, mas a Microsoft no acertou desta vez ainda. Acredito que o Microsoft
Windows Instaler seja melhor que o Setup Wizard e o P & D Wizard. Para maiores detalhes sobre
visite www.macoratti.net.
Figura 32. Tela inicial do Package and Deployment Wizard que acompanha o Visual Basic 5.0
12.4. Inno Setup Compiler
possvel fazer o download do Inno Setup em www.innosetup.com. A verso 3.0.18 tem
aproximadamente 2.0 MB. Enquanto escrevo este tutorial, verses mais aprimoradas esto sendo
desenvlvida.
Aps fazer o download basta clicar no arquivo Self-extract que o programa se instalar em
poucos segundos.
A utilizao do sistema simples e bem intuitiva, voc basicamente ir gerar um arquivo de
script que conter toda a informao para instalar o seu sistema. Como estamos focando
aplicaes Visual Basic, voc dever informar quais arquivos deseja instalar (nem tudo perfeito).
No final voc ir compilar o seu arquivo de script e em seguida j pode testar a sua instalao.
O Inno Setup muito rpido e enxuto. Vale a pena ver se voc se adapta a sua filosofia,
afinal no custa nada.
12.4.1. Dicas para Visual Basic
83
Source:
"ComCtl32.ocx";
DestDir:
"{sys}";
CopyMode:
alwaysskipifsameorolder; Flags: restartreplace sharedfile regserver
Seo no Setup.Lst
$(DLLSelfRegister)
$(Shared)
$(TLBRegister)
$(MSDAOPath)
$(EXESelfRegister)
85
87
89
91
' Note that used this ONLY if you are creating a new
' section on the INI file, unless you wanted to erase
' its existing keys.
Call
WritePrivateProfileSection("SectionName",
"Key=Value",
App.Path & "\sample.ini")
Dim szBuf As String * 255
Call GetPrivateProfileSection("SectionName", szBuf, 255, App.Path &
"\sample.ini")
MsgBox szBuf
End Sub
Cdigo 44. Exemplo de como escrever e obter informaes de um arquivo INI.
93
Figura 37. Listagem de arquivos HTML, que iro fazer parte do arquivo de ajuda.
Clique em avancar e aps clique em concluir. Ser exibida a janela do projeto de ajuda que
foi criado (Figura abaixo).
95
Figura 38. Janela do projeto recm criado, com as opes e listagem de arquivos criados.
14.1.1. Arquivo de Contedo
Agora iremos criar um arquivo de contedo onde sero listadas as opes de acesso aos
arquivos HTML compilados, dentro do arquivo de ajuda. Para realizar esta tarefa clique na aba
Contents a seguir selecione 'Create a new contents file' (Figura abaixo).
Figura 39. Janela de opo para criao ou abertura de uma rquivo de contedo.
Digite o nome do arquivo de contedo e salve-o. A seguir a aba Contents estar em
branco, clique no boto 'Insert a heading' (2 boto) na barra de ferramntas lateral da aba
contents e ser exibida a janela para criao do arquivo de contedo (Figura abaixo).
Figura 40. Janela de adio de tpicos e de ligamento (link) com o arquivo correspondente.
Para criar o link com o arquivo HTML, clique no boto 'Add...' e em seguida ser exibida a
lista de arquivos HTML adicionados ao projeto da ajuda (Figura abaixo).
Figura 41. Janela de "linkagem" de arquivo ao tpico do contedo. A listagem exibida por ttulo
do arquivo.
97
Figura 42. Aba de Contents, com sua aparncia final listando todos os tpicos criados.
14.1.2. Arquivo de ndice
A aba seguinte a Index, que cria um ndice do arquivo de ajuda, possibilitando o usurio
localizar um tpico por palavras-chaves, est opo sempre bem vinda em qualquer sistema de
ajuda. Desta forma, evite deixar de lado esta opo.
Para criar um ndice clique na aba Index e em seguida escolha a opo 'Create a new
index file', salve o arquivo e em seguida clique no boto 'Insert a keyword'(2 boto) da barra
de ferramentas lateral, para exibir a janela de link de arquivo, semelhante a janela de link do
arquivo de contedo. Digite o ttulo a ser exibido no arquivo de ajuda. A listagem de arquivos que
sero ligados (linkados) ao tpico indica que possvel ligar vrios arquivos a um s tpico. Est
mesma opo vlida para a contruo do arquivo de contedos (contents). Repita a operao de
adio de tpicos tantas vezes necessrios para adicionar ao seu arquivo de ndice os tpicos a
sere exibidos.
14.1.3. Aparncia da Janela do Arquivo de Ajuda
Para definir a aparncia, clique na aba 'Project' e em seguida clique no cone
'Add/ModifyWindows Definitions' (4 boto) e informe o nome da janela (no exemplo
usaremos Main)do arquivo de ajuda e aseguir configure ao seu modo. Para maiores informaes
acesse o arquivo de ajda do programa.
14.1.4. Configurar Sensibilidade ao Contexto
Quando estamos navegando por telas de um programa em geral podemos acessar a ajuda
deste e ir direto ao tpico pertinente aquela tela. Entretanto no projeto da ajuda tais tpicos
devero ser especificados para que o usurio ao clicar na tecla F1, o tpico possa ser exibido.
Vamos configurar o projeto para tornar o arquivo de ajuda sensvel ao contexto. Para tal
clique no boto 'HTML Help API Information' da barra de ferramentas da aba 'Project', aps a
exibio da tela clique no boto 'Header file...', para adicionar um arquivo de cabealho, que
dever ser criado em um editor de textos comum (Bloco de Notas) e dever possui a exteno
".h", isso mesmo com uma letra. Em seguida adicione ao projeto. possvel adiconar vrios
arquivos de cabealho a um mesmo projeto da ajuda.
A estrutura do arqivo de cabealho dever ser a seguinte:
#define IDH_Main
10001
#define IDH_Menu
10002
#define IDH_Metodos 10003
#define IDH_Info
10004
Cdigo 45. Estrutura de uma arquivo de cabealho, contendo os tpicos sensveis ao contexto e
sua identificao numrica.
Figura 43. Janela HTMLHelp API Information com a adio do arquivo de cabealho InsectA.h.
Agora devemos realizar a aoperao de identificar e indicar a que contexto os arquivos
estaro ligados. Para tal, ainda na mesma janela, clique na aba Alias e clique em 'Add...', para
exibir a janela de ligao digite no primeiro campo uma das definies (ex: IDH_Main) e em
seguida no campo seguinte selecione o arquivo de HTML relacionado (Figura abaixo).
Figura 44. Janela de ligao da definio (IDH_Main), como o arquivo HTML (insecta.htm).
A seguir clique em OK e verifique que na janela 'HTML Help API Information', aba
'Alias', estar listado cada definio e o arquivo referenciado.
99
End Sub
Cdigo 47. Codgo para exibir o arquivo de ajuda atravs do evento Click, de um
CommandButton, chamado cmdHelp.
Se voc queiser utilizar o sensibilidade ao contexto, ser necessrio referenciar a
identificao do contexto que deseja chamar. Desta forma para chamar o contexto desejado voc
ir precisar da seguinte rotina.
Private Sub cmdHelp_Click()
Dim sFile As String
Dim objHelp As clsHelpCHM
Set objHelp = New clsHelpCHM
sFile = App.Path & "\Ajuda\InsectA.chm"
Call objHelp.ShowHelpCHM (sFile, "Main",10001)
relacionado com o arquivo 'insecta.htm'
Set objHelp = Nothing
'O
ID
'10001',
est
End Sub
Cdigo 48. Codgo para exibir o contexto especfco do arquivo de ajuda atravs do evento Click,
de um CommandButton, chamado cmdHelp.
Bom como j dito outras opes que por ventura voc deseje utilizar, dever consultar o
arquivo de ajuda do programa.
101
23
A verso apresntada neste tutorial a verso 4.6. Hoje j existe a verso 8.0 nomercado, porm com um
custo elevado para pequenas empresas e mesmo para um programador autnomo.
Figura 47. Janela Create Report Expert, com a opo o passo 1: seleo de tabelas no Crystal
Reports
Selecionamos para o exemplo somente a tabela tbCadastro, para que possamos criar um
relatrio baseado nesta tabela. Portanto excluimos todas os nomes das outras tabelas listadas.
Clieu em Next e ser exibido passo 3: Campos (Fields). Note que saltamos o passo 2, Links
(lgao). Esta opo somente seria explorada e configurada se e somente se duas ou mais tabelas
fossem escolhidas. Seleciona-se nesta opo os campos a serem exibidos no relatrio como mosta
a figura a seguir, mas no se preocupe, caso voc esquea algum campo ou inseriu um por
acidente poder incluir e mesmo excluir um campo em modo de desenho (design-mode).
103
Figura 48. Passo 3: seleo de campos a serem exibidos no relatrio do Crystal Reports.
Aps selecionar os campos a serem exibidos, clique em Next >> e em seguida iremos
escolher a opo de ordenao dos dados e a forma de ordenao se crescente ou decrescente como segue a janela abaixo.
Figura 49. Passo 4: seleo dos campo de ordenao do relatrio e tipo de ordenao no Crystal
Reports.
Selecione o(s) campo(s) a serem utilizados como parmentro de ordenao dos dados para
o relatrio, podendo o usurio selecionar mais de um, porm caso seja selecionado mais de uma
ordenaco seguira o critrio da ordem de insero. Ex.: nome e matricula, a ordenao primeiro
ser nome e depois matricula.
O tipo de ordenao poder selecionado atravs da opo Order, que possui as seguintes
opes:
In ascending order ordena crescentemente respeitando a ordem listada no campo Group
Fields.
In descending order ordena decrescentemente respeitando a ordem listada no campo
Group Fields.
In specified order ordena atravs dos dados originais do campo da tabela (esta opo
no ser trabalhada neste tutorial).
In original order ordena crescentemente atravs da lista de campos original da tabelas,
respeitando a ordem de criao dos campos (esta opo no ser trabalhada neste
tutorial).
Iremos saltar os passo 5 e 6, e iremos direto para o passo 8, onde iremos definir o titulo e
estilo do relatrio. Daremos ao tituo o seguinte texto 'Lizaro Administer Cadastro' e o estilo ser
o padro Standard, como podemos ver na figura seguinte.
Verifique que no canto direito da janela teremos duas opes de finalizao da gerao do
reltorio: Preview Report (visualizar o relatrio) e Preview Sample (visualizar o "modelo").
e em seguida selecione um tipo de
Caso deseje incluir uma imagem cliue no boto
figura vlida. O Crystal Reports v 4.6, suporta somente os seguites padres de figuras: bitmap
windows (bmp), CompuServe (gif), PC paitbrush (pcx), TIFF (tif), e Targa (tga). Adicionamos no
exmplo uma pequena figura (bmp) para exemplificar.
Figura 50. Passo 8: especificao de ttulo e seleo se estilo do relatrio no Crystal Reports.
Para visalizarmos o relatrio em modo de desenho, basta selecionar a opo Preview
Sample e em seguida iremos verificar a disposio dos campos como mostra figura seguinte.
105
Figura 52. Janela par insero de novo(s) campo(s) ao relatrio no Crystal Reports.
Para inserir um novo campo, basta clicar e arrastar o campo para o seo Details e em
seguida organiza-lo na melhor posio.
15.4. Formatando campos, inserindo figuras, linhas e caixas
15.4.1. Formatando Campos
Podemos formatar os campos inseridos no relatrio em mode de desenho (Design Mode). A
formatao diz respeito ao tipo de letra, tamanho, nome da fonte, itlico, negrito, alinhamento do
texto, etc.
Figura 53. Barra de ferramentas de formatao do texto dos campos no Crystal Reports.
Outras formataes a serem realizadas, podem ser acessadas atravs do menu suspenso
que pode ser acionado com um clique no boto direito em cima do campo a ser formatado.
Figura 54. Menu suspenso para formatao do campo (fonte, formato, bordas, etc.) no Crystal
Reports
Figura 56. Alterao de borda e cores de borda e texto do campo do Crystal Reports.
Opo Edit Text Field... d acesso a caixa de alterao do texto exibido no campo.
15.4.2. Inserindo Figuras, Linhas e Caixas
Dois passos podero ser seguidos para a insero de qualquer um destes objetos, atravs
do menu Insert: Picture (figura), Line (linha) ou Box (caixa). Ou acessar os seguintes botes
seguintes.
107
Figura 57. Barra de ferramentas para insero de figura, linha e caixa (respectivamente) do
Crystal Reports.
15.5. Trabahando com Frmulas
O Crystal Reports, possibilita a utilizao de formulas, para permitir uma maor flexibilidade
de selecionar os dados, por exemplo, para exibir o nmero da pgina ou a data atual, etc. alm de
permitir a utilizao dos operadores If-Then-Else.
Para inserir uma frmula, clique em Inset/Formula e em seguida digite o nome da frmula.
Ser exibida a seguinte janela a baixo. Digite o seguinte texto no campo Formula Text:
If {tbCadastro.nome} <> "Joo da Silva" Then
"No Joo da Silva"
Else
" Joo da Silva"
Cdigo 49. Texto da frmula "nome" inserida no relatrio do Crystal Reports.
109
zoom do relatrios, imprimir relatrios, exportar relatorio para arquivo; exportar arquivo como
anexo ao e-mail e fechar janela de visualizao.
With CrystalReport1
'define
o
camino
do
relatrio,
podendo
ser
App.Path
&
"\nomedorelatrio.rpt"
.ReportFileName = App.Path & "\tut_test.rpt"
'especifica qual o campo ir ordenar os dados no relatrio
.SortFields(0) = "+{tbcadastro.nome}"
'enviar os dados do aplicativo para a frmula aplicativo do relatrio
.Formulas(0) = "Aplicativo='" & App.Title & " v" & App.Major & "." &
App.Minor & " Copyright" & App.LegalCopyright & "'"
'define o destino do relatrio
.Destination = crptToFile
'define o tipo de arquivo a ser exportado (WinWord no exemplo)
.PrintFileType = crptWinWord
'aciona o mecanismo de destino escolhido
.Action = 1
End With
End Sub
Cdigo 54. Cdigo para exportar um arquivo no formato do Word.
111
25
15.7.7. Outra forma de especificar a senha do banco de dados utilizado pelo relatrio.
Altere a propriedade Connect, do objeto Crystal para algo como a
expresso abaixo:
CrystalReport1.Connect = App.Path & "\DataBase.mdb", False, False,
";PWD=senha"
113
26
115