O Ambiente do Visual Basic
Transcrição
O Ambiente do Visual Basic
Escola Profissional de Gaia 12º Ano de Informática de Gestão Técnicas e Linguagens de Programação Versão 1.0 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Introdução O Visual Basic é uma das linguagens mais utilizadas no desenvolvimento de interfaces gráficas para Windows. Este pequeno manual irá introduzir algumas das características do Visual Basic e tentar explicar o porquê deste se ter tornado tão popular em todo o mundo. Porquê o Visual Basic • É de fácil aprendizagem • Permite criar controlos ActiveX • Pode-se integrar com a Internet • Disponibiliza assistentes para melhor produtividade • É uma linguagem POO (Programação Orientada por Objectos) • Permite utilizar objectos OLE (Object Linking and Embedded) • Permite utilizar API's do Windows (Application Programming Interface) • Permite desenvolver rápidas aplicações Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 2 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Tipo de Aplicações em Visual Basic Há muitos tipos de aplicações que se podem criar em Visual Basic. Cada tipo de aplicação é destinado a um objectivo bastante específico. Standard EXE Este tipo é utilizado para criar uma aplicação stand-alone, que não necessite de pertencer a aplicação. A maioria das aplicações de negócios são deste tipo. ActiveX EXE Este tipo de aplicação é geralmente criado para ser usado por outras aplicações, para um serviço particular ou vários serviços. Estes serviços podem correr local ou remotamente. ActiveX DLL Este tipo de aplicações é geralmente criado para ser usado por outras aplicações para serviço particular ou vários serviços mas é criado como livraria. Este DLL tem que estar na máquina onde se pretende executar o programa final. É executado dentro do mesmo processo da aplicação original. ActiveX Document DLL Este tipo de aplicação é desenvolvido para ser usado dentro do contexto de outra aplicação. Muito parecido com ActiveX EXEs e DLLs, mas geralmente providenciam um interface com a aplicação que os chama. Sendo uma DLL, executa-se no mesmo processo da aplicação que o invoca. ActiveX Document EXE Este tipo de aplicação é desenvolvido para ser usado dentro do contexto de outra aplicação. Muito parecido com ActiveX EXEs e DLLs, mas geralmente providenciam um interface com a aplicação que os chama. Sendo um EXE, corre num processo separado da aplicação que o invoca. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 3 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Componentes do Visual Basic Projects Um projecto é um conjunto de forms, controlos, etc. referenciados para uma automatização de servidores, num cenário de criação de aplicações. Forms Um form é a janela que é mostrada no desktop do Windows, ou seja, é a janela de interface com o utilizador. Um form pode conter controlos. Tanto os controlos como os códigos associados, são armazenados num ficheiro com extensão FRM. Controlos Um controlo é uma ferramenta que permite mostrar ou receber informações do utilizador. Exemplo de controlos são: caixas de texto, botões, etiquetas, grelhas, etc. Os controlos, são apresentados / disponibilizados dentro de uma toolbox e têm uma extensão OCX. Code Modules O code module, é um código origem escrito para fazer os controlos e forms responder a uma interacção do utilizador. Serve para declarar variáveis, constantes, procedimentos ou funções, declarações, chamar API's do Windows, etc. São guardados em ficheiros com extensão BAS. Class Modules Permite criar os nossos próprios objectos. O Visual Basic permite a criação de classes completas com propriedades e métodos. São guardados em ficheiros com a extensão CLS. Resource Files Os ficheiros de recurso permitem guardar recursos do Windows, tais como strings, bitmaps, cursores, ícones, etc. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 4 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Hierarquia das aplicações em Visual Basic Aplicações Propriedades das aplicações Forms Propriedades Propriedades de procedimentos Eventos Outros procedimentos Controlos Propriedades Eventos Módulos Procedimentos Classes Propriedades Propriedades de procedimentos Métodos Outros procedimentos Resource Files Documentos ActiveX Componentes ActiveX Três passos para criar uma aplicação Não importa que tipo de aplicação se pretende criar, sempre se devem seguir estes passos para o fazer. • Criar um Interface. • Fixar as propriedades para os controlos. • Escrever o código. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 5 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação O Ambiente do Visual Basic O ambiente do Visual Basic pode ser utilizado desde a resolução de 800x600 até ao máximo que o computador e monitor aguentar. Claro que quanto maior for a resolução maior será o ambiente disponível para trabalhar. É preciso ter em atenção que o Visual Basic possui Visual Memory, ou seja, ele “decora” a posição e tamanho das janelas quando estas são criadas e se mudarmos para um outro computador que possua uma resolução diferente daquela em que foi guardado o projecto pela última vez, o aspecto deste pode ser diferente do desejado ou do planeado. A resolução recomendada é de 1024x768. A imagem que se segue é a primeira que aparece quando entrares no Visual Basic 6.0. Figura 1 - A janela de início do Visual Basic 6.0 Pressiona OK para abrir um projecto novo Standard EXE (um projecto normal que será depois mais tarde guardado como executável). O ambiente de desenvolvimento aparecerá como o que se segue: Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 6 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Figura 2 - O ambiente de desenvolvimento do Visual Basic 6.0 Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 7 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Os vários componentes da janela do Visual Basic 6.0 Menu Bar Permite-te executar todas as funções no Toolbar, assim como seleccionar todas as outras funções existentes no VB. Toolbar O Toolbar contém ícones localizados horizontalmente situado no topo da janela de desenvolvimento do Visual Basic. É a barra que permite controlar todas as funções básicas como abrir novo projecto, guardar o projecto, compilar, executar, etc. Toolbox É uma caixa vertical situada no lado esquerdo do écran de desenho e onde se encontrar todos os controlos carregados (podem-se acrescentar ou remover controlos desta barra). Form É a janela principal onde se cria para o utilizador a janela onde este irá comunicar com a aplicação. Todos os controlos têm de ser colocados em forms. Seguidamente se o controlo necessitar de alguma programação esta é feita na janela de programação, mas o objecto que inclui as librarias necessárias para utilizar o controlo (o ícone do controlo ficam na janela do form). Estas figuras dos forms é o equivalente ao include no Turbo C. Project Window Mostra a lista de todos os forms e módulos que criam a tua aplicação. É nesta janela que podes intercalar entre os vários forms que o projecto tem. Properties Window A janela de propriedades permite personalizar o aspecto ou comportamento de um controlo particular ou de um form. Com duplo-click nas propriedades, aparece uma lista enumerada ou um campo tipo booleano (verdadeiro ou falso). Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 8 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Immediate Window É vista quando há uma quebra na aplicação (a aplicação que está em execução gera um erro) esta janela aparece na linha em que a aplicação gerou o erro. É chamado o modo de debugging. Online Help Para aceder à ajuda do Visual Basic basta, em qualquer altura, pressionar a tecla F1 e o Help surge no ecrã (note-se que o help no Visual Basic é instalado à parte do Visual Basic e é necessário que esteja localmente no computador ou num local de rede com acesso ao login no qual se está a trabalhar. É uma ajuda sensitiva ao contexto. Pode mostrar ajuda do objecto que contenha o focus (seleccionado) no modo de desenvolvimento. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 9 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Descrição da ToolBox PictureBox Este controlo pode mostrar gráficos de ficheiros bitmap, icon, ficheiros JPEG ou GIF. Caso o controlo não tenha o espaço suficiente o próprio controlo corta a imagem até ao espaço disponível. O programador tem que ajustar a janela do controlo até esta ter espaço suficiente para a imagem que lá pretende colocar. LabelControl É um controlo gráfico que é utilizado para mostrar texto na form que não é editável pelo utilizador (pode ser uma mensagem a indicar informações no form). TextBox Control Algumas vezes chamado campo de edição ou controlo de edição, mostra/recebe informações digitadas pelo utilizador. Este controlo permite alterar uma das suas propriedades Multiline para True, de modo a serem mostradas/recebidas várias linhas de texto. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 10 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Frame Control Permite identificar um grupo de controlos, ou seja, permite agregar vários controlos numa única frame. Por norma usasse esta funcionalidade para tornar uma janela mais funcional. CommandButton Control Utiliza-se este comando como controlo da aplicação é o controlo que permite adicionar botões no form que depois podem ser programados para iniciar, interromper ou finalizar um processo. CheckBox Control Este controlo é utilizado para dar ao utilizador a possibilidade de tornar uma opção verdadeira ou falsa, sim ou não (opção do tipo booleano). Pode usar-se em grupos para mostrar múltiplas escolhas, onde o utilizador pode seleccionar uma ou mais. É usada para poder seleccionar as opções. Para utilizar correctamente este controlo é então definido no código da aplicação as acções desejadas conforme a opção seja verdadeira ou falsa. OptionButton Control Mostra uma opção que pode ser alterada para verdadeira ou falsa (Ligado ou desligado). Utiliza-se em grupo para que o utilizador apenas possa seleccionar somente uma opção de um conjunto que possam ser seleccionadas. ComboBox Control Combina as características de uma TextBox e de uma ListBox. Os utilizadores podem introduzir informações na TextBox, ou seleccionar um item de uma lista. É útil porque o utilizador quando interage com a aplicação não necessita de saber inicialmente as opções que pode escolher, visto estas serem apresentadas na própria caixa de interacção. As opções podem ser inseridas por código directo ou por acesso a uma base de dados. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 11 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação ListBox Control Mostra uma lista de opções na qual o utilizador pode seleccionar uma ou mais. Serve como uma combobox mas podem ser seleccionadas mais do que uma opção. HScrollBar, VScrollBar Controls Facilitam a navegação numa lista longa de opções, ou numa quantidade larga de informação, ou seja, são criadas barras de deslocamento que irão permitir deslocar todas as opções para o sentido desejado de forma a encontrar a opção desejada mais facilmente. Timer Control Pode executar um código em intervalos de tempo regulares. Invisível para o utilizador, é útil para um processo que se pretenda que seja executado com regularidade mas com total transparência para o utilizador. Por exemplo, limpar as caixas de texto ao fim de algum tempo sem actividade, etc. Todo o processo é desenrolado em segundo plano. DriveListBox Control Permite ao utilizador seleccionar um disco válido durante a execução do processo. Utiliza-se este controlo para mostrar a lista dos discos rígidos ou não existentes no sistema, comuns drives. DirListBox Control Lista as pastas e os caminhos de uma determinada pasta seleccionada. Mostra todo o Path. Usa-se este controlo para mostrar a lista hierárquica das pastas. FileListBox Control Lista os ficheiros de um directório específico. Pode seleccionar-se o tipo de ficheiros que se pretende visualizar ou apenas mostrar todos os ficheiros sem qualquer tipo de selecção ou escolha (utilização de filtros). Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 12 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Shape Control É um controlo gráfico mostrado como um rectângulo, quadrado, oval, círculo, rectângulo arredondado, ou quadrado arredondado que permite criar uma janela de visualização ou criar um aspecto de caixa de edição com a adição de sombras, efeitos, etc. Line Control É um controlo gráfico que permite mostrar uma linha horizontal, vertical ou diagonal. Data Control Proporciona acesso a dados armazenados numa base de dados. Permite navegar de registo a registo, visualizar o 1º ou o ultimo. É necessário seleccionar qual o motor de ligação de base de dados a utilizar bem como configurar qual a base de dados etc. NOTA: Podem ser adicionados mais controlos, clicando em Project, Components, ou usando em simultâneo as teclas CRTL+T. Na caixa de diálogo, seleccionar os componentes que queremos integrar na nossa aplicação. Estes controlos aqui explicados são aqueles que “vêm” por defeito no Visual Basic. O Visual Basic tem um conjunto de controlos extras que podem ser adicionados. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 13 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Janela de propriedades A janela de propriedades encontra-se no lado direito do ambiente de trabalho. Aqui podem-se modificar as características de um objecto e o seu interface com o utilizador. A título de exemplo iremos apontar algumas das propriedades mais comuns de um Form. Name Nome a atribuir ao Form. É o nome pelo qual o form, ou controlo é reconhecido pela aplicação (vulgo, o nome de uma variável na linguagem C). Caption Palavra ou frase que aparece no topo esquerdo do Form. É o texto que surge na janela de título no form. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 14 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação KeyPreview Especifica se o Form deve receber o evento key antes de todos os controlos nele contidos. No exemplo que se segue, alterando a propriedade KeyPreview para TRUE e codificando o evento do Form KeyPress, dá á tecla ENTER a mesma função da tecla TAB Figura 3 - Exemplo de alteração de funções às teclas Height Permite definir qual a altura da janela. Left Permite definir a distância a que janela fica em relação á margem esquerda do monitor. Top Permite definir a que distância a janela fica em relação á margem superior do monitor. Width Permite definir qual a largura da janela. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 15 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Para poder controlar estas quatro últimas propriedades deve utilizar o Form Layout Window, para posicionar a janela na posição correcta. Colocando o cursor sobre a janela e pressionando com o botão esquerdo do rato, é fixada a posição que se deseja para a posição da janela da aplicação em tempo de execução. Figura 4 - Form Layout Windows Clica em View seguido de Project Explorer, aparece na parte lateral direita do ambiente de trabalho o Project Window. Nesta janela podemos ver e sobre uma perspectiva hierárquica os Forms, Modules, Controls, Property Pages ou Objects Documents, do projecto que está a ser desenvolvido. Figura 5 - Janela de gestão do projecto Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 16 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação A Notação Húngara A característica principal desta notação é dar ao programador uma ajuda preciosa na elaboração dos nomes das variáveis que irão ser utilizadas no projecto. No entanto, esta é uma notação puramente opcional e deve ser encarada exclusivamente como um método. O importante é utilizar nomes curtos e simultaneamente significativos e fáceis de recordar e de perceber conforme a função que irá ter na aplicação para que outras pessoas possam analisar a perceber rapidamente o problema. A tabela que se segue além do exemplo desta notação contem os valores limites das variáveis. Prefixo bln int lng str dtm Tipo de variável Valores Boolean True / False Integer -32,768 a 32,767 Long -2,147,483,648 a 2,147,483,647 String 0 a +/- 2 biliões de caract. Date/Time 01/01/1000 a 31/12/9999 dbl Double sng Single bln Boolean Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Números Positivos 4.94065645 ^ -324 a 1.797693 ^ +308 Números Negativos -1.797693^ +308 a -4.94065645^ -324 Números Positivos 2.802597^-45 a 3.402823^+38 Números Negativos -3.402823^+38 a -2.802597^-45 True / False Página 17 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Operadores Matemáticos, Relacionais e Lógicos: Sinal Significado * Multiplicação - Subtracção = Atribuição / Divisão ^ potenciação + Soma MOD Resto da divisão \ Divisão Inteira > Maior que >= Maior ou Igual <= Menor ou Igual < Menor que <> Diferente AND NOT OR Se ambas as expressões forem verdadeiras o resultado é verdadeiro Se a expressão for falsa, o resultado é verdadeiro. Se a expressão for verdadeira, o resultado é falso Se algumas das expressões for verdadeira, o resultado é verdadeiro Se uma das expressões for verdadeira, o resultado é XOR verdadeiro. Se ambas forem verdadeiras ou falsas, o resultado é falso. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 18 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Estruturas de Decisão : A estrutura IF If condição1 Then código da condição1 se a mesma for verdadeira ElseIf condição2 Then código da condição2 se a mesma for verdadeira ElseIf condição3 Then código da condição3 se a mesma for verdadeira Else código se nenhuma das condições anteriores for verdadeira End If A estrutura Select - Case Select Case Executa um dos vários grupos de instruções, dependendo do valor destas. Select Case expressão (expressão numérica ou string) Case expressão1 Código.... relativo à expressão1 Case expres1 Código.... relativo à expressão2 End Select Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 19 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Estruturas de repetição (Ciclos) A estrutura Do - Until Do Until condição1 código.... ( O ciclo mantém-se até que se verifique a condição ) Loop A estrutura Do - While Do While condição2 código.... ( O ciclo mantém-se enquanto se verificar a condição2 ) Loop A estrutura For For índice = inicio To fim código.... ( O ciclo mantém-se desde inicio até fim ) Next índice A estrutura While While condição (executa uma série de instruções enquanto a condição for verdadeira ou falsa. A condição nula, é tratada como falsa) código.... Wend Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 20 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação A Criação de Menus A criação de menus, é bastante intuitiva utilizando o Visual Basic. Para começar, clicamos no Menu Editor da Toolbar, ou Tools seguido de Menu Editor, ou ainda usando CTRL+E. Deverá aparecer a imagem que se segue: Figura 6 - Ambiente de criação de menus Os campos de preenchimento obrigatório são aqueles assinalados com o Caption, sendo o Caption o nome que surge no menu propriamente dito. O campo Name, é o nome atribuído a cada um dos "Captions". A forma mais fácil de explicar e perceber o modo de funcionamento é realizar um exemplo prático. Vamos criar um menu fictício para perceber então a lógica, tentado fazer uma imagem igual à que se segue: Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 21 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Figura 7 - Criação de menus Algumas explicações importantes: O caracter "&" que aparece no inicio da maioria das palavras, vai "provocar" que a letra a seguir apareça em sublinhado, indicando um atalho para esse procedimento. Premindo a tecla "ALT" + a letra sublinhada, acederemos directamente à opção assinalada pela letra. Neste exemplo o T de Terminar vai ser a letra sublinhada e a qual pode ser acedida através do comando ALT+T. Os caracteres "...", que aparecem em algumas linhas significam que irá ser criado um submenu, e este é obtido clicando na seta para a direita. Esta é a situação de um menu Drop-Down. Quando se clica na palavra "mãe", aparece um outro menu que permanece até que o utilizador o feche ou clique numa das suas opções. O caracter "-", que aparece entre "...&Amigos e ...&Cidades" tem como objectivo "separar" duas opções do respectivo submenu. Depois de executar estas instruções, e F5 (para executar o projecto) surge um menu parecido com a imagem seguinte: Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 22 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Figura 8 - Resultado do exemplo da criação de menus As palavras "Página Principal", aparecem na barra de título se forem alteradas as propriedades "Caption" do Form. POPUP Menu Para a criação de um popup menu iremos utilizar também um exemplo prático com demonstração de como o código funciona. Pretende-se registar e listar as pessoas que "não se gostam". Esta opção não se torna agradável aparecer no menu desta forma, então utiliza-se o chamado POPUP menu. Quando na janela principal, se clicar por exemplo com o botão direito do rato. Para isso é necessário codificar o "Evento" MOUSE UP do Form com o seguinte código: If Button = 2 then PopupMenu mnucautelas (Nome da caixa Name) End If Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 23 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Desta forma é acrescentado ao menu já conhecido uma linha chamada "Cautelas", com o Name mnucautelas, tendo o cuidado de desactivar a Check Box Visible por forma a que esta palavra não nos apareçam no menu principal. Acrescentamos dois submenus "Gestão de inimigos" e Listar inimigos". Tecla em F5, e quando o Form se abrir, clica no botão direito do rato. Aparecerá qualquer coisa como o que se segue: Figura 9 - Exemplo do surgimento de um popup menu Desta forma podem criadas funções que só o programador ou uma pessoa a quem tenha sido transmitida esta informação tem acesso a algumas funcionalidades que se pretendem que sejam ocultas para o utilizador normal. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 24 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Criação de uma ToolBar Para tornar mais apelativo um projecto, pode-se/deve-se criar uma ToolBar por baixo do menu, anteriormente criado, onde serão mostrados botões com imagens, de forma a tornar as acções básicas mais intuitivas de usar e alcançar. Figura 10 - Inserção dos controlos das ToolBox Para acrescentar alguns objectos à ToolBox, clicámos em Project e em seguida, Components. Com esta operação abre-se o menu de gestão de controlos do Visual Basic. Activa-se a Check Box Microsoft Windows Common Controls 5.0 (SP2), fazendo então aparecer na ToolBox pelo menos mais dois componentes (ToolBar e ImageList) que vão ser importantes para a função a implementar. Para colocar qualquer destes objectos no Form, fazemos duplo-click no objecto, ou click para o tornarmos activo, "desenhando-o" de seguida no Form. Atenção que é necessário a colocação dos dois métodos para a barra funcionar correctamente. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 25 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Após a colocação dos objectos no Form, clica-se com o botão direito do rato em ImageList seguido de Properties. No separador General define-se o tamanho das imagens. Depois, no separador Images, para podermos inserir as imagens. Tal como demonstra a figura seguinte: Figura 11 - Inserção e configuração de imagens para a ToolBox Clicando no botão Insert Picture, insere-se as imagens *.ICO ou *. BMP existentes no nosso sistema, terminando com click no botão OK. Pode-se fechar a janela de Page Properties, para trabalhar o outro objecto. Temos então de configurar a ToolBar, clicando nele com o botão direito do rato e em seguida em Properties. Figura 12 - Configuração da ToolBox No separador General e na ComboBox ImageList relaciona-se a ToolBox com a ImageList1 criada anteriormente. De seguida clica-se no separador Buttons para trabalhar as imagens previamente inseridas no objecto ImageList1. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 26 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Figura 13 - Associação de imagens aos botões Com Insert Button, insere-se os botões na ToolBar. Na caixa de texto Image inserese o número da imagem, e se se pretender pode-se inserir uma caixa de texto com ajuda que irá aparecer caso o rato permaneça em cima do botão. Esta acção é realizada na caixa ToolTipText. Depois de inseridas as imagens anteriormente seleccionadas clica-se em OK, para se obter uma imagem semelhante à seguinte: Figura 14 - Exemplo de uma ToolBox Se teclarmos em F5 podemos observar o efeito do que acabámos de fazer. Note que o objecto ImageList, não aparece em RunTime, só em DesignTime. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 27 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Message Box Uma Message Box, mostra uma caixa de diálogo e espera que o utilizador click num botão retornando um valor indicador do botão que foi premido, para então realizar uma opção predefinida. Como anteriormente iremos estudar a MessageBox através de um exemplo prático. Em seguida encontra-se o código necessário para a criação de MessageBox: Dim resp As Integer resp = MsgBox("Texto da mensagem", vbAbortRetryIgnore + vbCritical + vbDefaultButton1, "Titulo da mensagem") O código anterior gera uma MessageBox do género da seguinte: Figura 15 - Exemplo de uma MessageBox Em seguida é publicada uma tabela com os métodos que se podem criar com as características dos botões, bem como dos valores retornados consoante o botão que o utilizador clica. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 28 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Tabela com as características da MsgBox Constante Valor Descrição vbOKOnly 0 Mostra o botão de Ok vbOKCancel 1 Mostra os botões de Ok e Cancelar vbAbortRetryIgnore 2 Mostra os botões de Abortar, Repetir, Ignorar vbRetryCancel 5 Mostra botões de Repetir e Cancelar VbCritical 16 Mostra o ícone de Perigo vbQuestion 32 Mostra o ícone de Interrogação vbExclamation 48 Mostra o ícone de Exclamação vbInformation 64 Mostra o ícone de Informação vbDefaultButton1 0 Selecciona por defeito o 1º botão vbDefaultButton2 256 Selecciona por defeito o 2º botão vbDefaultButton3 512 Selecciona por defeito o 3º botão vbDefaultButton4 768 Selecciona por defeito o 4º botão vbApplicationModal 0 vbSystemModal 4096 Aplicação modal. O utilizador deve responder á caixa de mensagem antes de continuar a trabalhar na aplicação. Sistema modal. Todas as aplicações são suspensas até que o utilizador responda à caixa de mensagens. A função MsgBox retorna os seguintes valores: Constante Valor Botão vbOK 1 OK vbCancel 2 Cancel vbAbort 3 Abort vbRetry 4 Retry vbIgnore 5 Ignore vbYes 6 Yes vbNo 7 No Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 29 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Dialog Box A Message Box é utilizada para informar o utilizador de algo que se passou, e espera um click para executar uma acção. Com a Dialog Box pretendemos que o utilizador introduza uma determinada informação para completar uma tarefa. Por exemplo, se pretender fazer um Backup (segurança) de uma Base de dados da nossa aplicação, podemos pedir ao utilizador que digite o nome da base de dados destino. Atenda ao exemplo seguinte: Figura 16 - Exemplo de DialogBox Para o exemplo acima, escrevemos as seguintes linhas de código: Dim Stexto as String mens = " DIGITE O NOME DA BASE DE DADOS " tit = " SISTEMA DE SEGURANÇA" Stexto = InputBox$(mens, tit) Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 30 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação ComboBox e ListBox A ComboBox deve ser usada quando o utilizador pretende ter uma lista predefinida de valores. Algumas vezes também é usada para adicionar valores. Vamos adicionar as capitais de distrito de Portugal, de modo a que um utilizador possa seleccionar uma. A tabela seguinte mostra uma lista das propriedades mais utilizadas em Combobox e Listbox. Propriedade Descrição List Lista de todos os elementos ListCount Numero de elementos ListIndex Numero do elemento seleccionado Name Nome do objecto ( com o prefixo cbo ) Sorted Ordenação dos elementos Style Simple, DropDown, ou DropDown List Text Valor do elemento seleccionado Normalmente, e para que a Combobox tenha valores logo no início da aplicação é necessário que as instruções de carregamento se encontrem no procedimento Form_load(). Figura 17 - Adiconar campos à ComboBox Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 31 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Na execução do projecto ao ser pressionada a seta que se encontra à direita da ComboBox surge a lista de items que adicionamos à ComboBox. Figura 18 - Exemplo de ComboBox Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 32 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Exemplo de criação de janela para interacção com o utilizador Crie uma janela para testar algo simples e ao simultaneamente importante a qualquer projecto futuro. Figura 19 - Exemplo de janela A janela anterior é então composta por : Quatro objectos do tipo Label, onde se insere o texto que se pretende que surja no ecrã do utilizador. Esta alteração é efectuada na propriedade Caption da Label. Quatro objectos do tipo TextBox, sítio onde o utilizador poderá escrever. Dois objectos do tipo CommandButton, que irão assumir o executar de eventos. Codificação da janela anteriormente mostrada Private Sub Text1_GotFocus() Text1.Text="" Text2.Text="" Text3.Text="" Text4.Text="" End Sub Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 33 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Private Sub Text1_KeyPress(KeyAscii As Integer) KeyAscii = Asc(Ucase$(Chr$(KeyAscii))) End Sub Private Sub Text2_KeyPress(KeyAscii As Integer) KeyAscii = Asc(Lcase$(Chr$(KeyAscii))) End Sub Private Sub Text3_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case vbKeyDelete Case vbKeyBack Case 48 To 57 Case Else Beep KeyAscii = 0 End Select End Sub Private Sub Text4_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case vbKeyDelete Case vbKeyBack Case 65 To 90 Case 97 To 122 Case Else Beep KeyAscii = 0 End Select End Sub Private Sub Command1_Click() Text1.SetFocus End Sub Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 34 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Figura 20 - Exemplo de aplicação em tempo de execução Comentários à codificação apresentada 1 - Quando a caixa de texto "Text1" tem o Focus, "esvazia/limpa" o conteúdo de todas as caixas de texto. 2 - A função Ucase$ transforma em maiúsculas todos os caracteres. 3 - A função Lcase$ transforma em minúsculas todos os caracteres. 4 - Só permite caracteres Ascii compreendidos entre 48 e 57, que correspondem aos caracteres numéricos, mais o Delete e o Backspace. 5 - Só permite caracteres Ascii compreendidos entre 65 e 90, e entre 97 e 122 que correspondem aos caracteres alfabéticos, mais o Delete e o Backspace. 6 - Activando o Evento Click, transfere o Focus para a 1ª caixa de texto. 7 - Activando o Evento Click, termina o programa. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 35 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Procedimentos e Funções Procedimentos são linhas de código, usadas para responder a eventos ou executar algumas acções. Os procedimentos não retornam valores, e são identificados pela palavra Sub, na sua declaração. Todos os procedimentos devem começar com uma letra, e podem conter letras, números e o caracter underscore. Funções são usadas quando se pretende executar cálculos, ou testar valores. Nas funções retorna-se sempre algo. Mostramos de seguida algumas das funções mais comuns que podem ser utilizadas. A lista completa de funções pode ser consultada em "The Language reference Book". Funções Descrição Chr, Chr$ Converte valores ANSI numa string. Asc Converte uma string num valor ASCII. Str, Str$ Converte um número numa string. Format, Format$ Converte um numero numa string formatada. Val Converte uma string num número. Date, date$ / Time, Time$ Obtém a data do sistema e hora do sistema, respectivamente. Now Obtém a data e a hora do sistema. InputBox, InputBox$ Mostra uma caixa de input, espera uma string do utilizador. MsgBox Mostra uma caixa de mensagens LCase, LCase$ Converte uma string em caracteres minúsculos UCase, UCase$ Converte uma string em caracteres maiúsculos Space, Space$ Insere espaços repetidos entre duas strings String, String$ Converte numa string uma variável Len Retorna o comprimento de uma string InStr Determina se uma string está dentro doutra string Left, Left$ Retorna uma string á esquerda de uma string LTrim, LTrim$ Anula os espaços á esquerda de uma string Mid, Mid$ Procura uma string contida noutra string RTrim, RTrim$ Anula os espaços á direita de uma string Right, Right$ Retorna uma string á direita de uma string Trim, Trim$ Anula espaços á esquerda e á direita de uma string IsDate Valida se uma data é válida IsNull Valida se uma variável é nula IsNumeric Valida se uma variável é numérica Beep Emite um som Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 36 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Eventos Imagine um Form com vários objectos dispostos estrategicamente. Quando se faz duplo-click sobre um desses objectos abre-se uma janela onde se pode codificar os diferentes eventos (objectos que respondem de uma forma adequada quando o utilizador interage com eles). Observe a imagem seguinte: Figura 21 - A janela de eventos possíveis em Visual Basic A descrição dos eventos GotFocus Ocorre quando um objecto recebe o focus (é seleccionado). Quer seja pela acção do utilizador, da tecla TAB, pelo Click do rato ou ainda pela utilização do método SetFocus. Nota: Um objecto só pode ficar com Focus se as propriedades Enabled e Visible estiverem seleccionadas para True. LostFocus Ocorre quando um objecto perde o Focus (deixa de estar seleccionado). Quer seja pela acção do utilizador, da tecla TAB, pelo Click do rato ou ainda pela utilização do método SetFocus. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 37 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Click Ocorre quando o utilizador pressiona e liberta o botão do rato sobre o objecto. Este evento está tipicamente relacionado com os objectos CommandButton (Botões), Menus ou PicturesBox. DblClick O duplo-click ocorre quando o utilizador pressiona, liberta, volta a pressionar e a libertar o botão do rato sobre um objecto dentro de um determinado limite de tempo, findo o qual, o objecto reconhece somente o evento click. SetFocus Move o Focus para um controlo ou um Form específico. Propriedade SelStart Indica ou fixa a posição de inserção do texto a seleccionar. Propriedade SelLength Indica ou fixa o número de caracteres seleccionados. Função Len Indica o número de caracteres de uma string. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 38 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Ole Objects – como fazer, exemplificando Os objectos OLE (Objects Linked & Embebed) são uma forma de podermos aceder a aplicações Windows, dentro de projectos de Visual Basic. Para os utilizar basta dizer que se pretende inserir um objecto do tipo OLE e surge uma imagem como a seguinte: Figura 22 - Menu de inserção de objectos Nesta imagem selecciona-se o Documento do Microsoft Word, e activa-se a CheckBox "Mostrar como ícone". Faz-se click em Ok, para encerrar esta caixa de diálogo. Segue-se o mesmo critério caso se pretenda inserir mais algum tipo, neste caso inseri mais um objecto, que é o Microsoft Excel. Após estes passos obtem-se uma imagem como a seguinte: Figura 23 - Imagem de exemplo com objectos Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 39 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Data Control Como tem vidno sendo hábito ao longo deste manual, a explicação das funções de Visual Bsic vão ser dadas recorrendo a um exemplo prático. O projecto que se irá criar terá o nome de Agenda e tem como objectivo registar dados de amigos, sendo o número de acesso, chave principal. Para que se possa tornar o projecto mais pessoal e mais personalizável, irá ser cirada uma outra tabela onde se irão registar os dados pessoais, cujo campo name aparecerá em todas as janelas. Existem duas formas de se trabalhar com uma Base de Dados num projecto em Visual Basic. Uma é usarmos o objecto Data Control, existente na ToolBox. Figura 24 - Botão do Data Control Outra é fazer a abertura manual da Base de Dados e das Tabelas utilizando para isso essencialmente código SQL (Structed Query Language). Existem vantagens e desvantagens em cada um dos processos. Vamos esquematizar ambos os casos para uma compreensão facilitada. Data Control - Vantagens: • Escrever poucas linhas de código. • Rapidez de execução do processo. • Projectos pequenos. Data Control - Desvantagens: • Não se pode adaptar a outro projecto. • Debug (testar projecto paço a paço) difícil. • Dificuldades de modificação por outro programador. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 40 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Abertura Manual - Vantagens: • Total controlo sobre todos os aspectos do processo. • Melhor utilização em multi utilizador. • Código genérico reutilizável em diferentes projectos. • Poder ser facilmente alterado por outro programador. Abertura Manual - Desvantagens: • Todo o processo tem que ser escrito. • Exige maior responsabilidade do programador. Neste projecto vai ser abordada a abertura manual, mas continuando a análise do projecto. Irão ser criar três janelas. A primeira terá um menu e ícones de modo a se poder terminar ou aceder ás outras janelas com facilidade, e chamar-se-á FrmPrincipal. Existirá uma janela para registar os dados pessoais (FrmPessoal), e uma outra para registar os dados dos amigos (FrmAmigos). Quando clicar em "Terminar" deve-se, através de uma caixa de diálogo, perguntar se se quer mesmo terminar, dando a opção de cancelar a operação. Na janela de "Amigos" irão ser utilizadas duas Frames. Uma para o sexo, com dois OptionButtons, e uma outra para Estado Civil com seis OptionButtons, onde a propriedade Caption será alterada para (Casado, Solteiro, Viúvo, Separado, Divorciado, Outra). Ao iniciar um novo projecto, escolhe-se Standard.EXE, clicá-se em Projects, Components, e activa-se as CheckBox "Microsoft Windows Common Controls 5.0 (sp2)" e "Microsoft Tabbed Dialog Control 6.0", para fazer aparecer na ToolBox dois objectos importantes: ImageList e Toolbar. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 41 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Figura 25 - Menu de inserção de imagens Com o botão direito do rato, sobre o objecto ImageList, clica-se em Properties para aparecer a caixa de diálogo anterior. No separador "General" pode-se definir o tamanho das imagens, neste caso 16X16. Nesta caixa de diálogo insere-se três imagens de ícones que se querem que apareçam por baixo no Menu, para dar um aspecto mais apelativo à nossa página principal. Termina-se com OK. Figura 26 - Menu de definição de propriedades Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 42 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Com o botão direito do rato, sobre o objecto Toolbar, clica-se em Properties para aparecer a caixa de diálogo seguinte. Ao separador "General" faz-se corresponder o objecto ImageList com a Toolbar. No separador Buttons, insere-se as imagens, preenchendo a caixa "ToolTipText" com o valor que se pretende que apareça quando se aponta com o botão do rato. Finaliza-se com OK. No final a página principal terá este aspecto. De notar que o objecto ImageList, não aparece quando o projecto está em execução. Figura 27 - Aspecto da aplicação exemplo Clica-se ainda em Project, Add Module, a que se vai chamar Amigos onde introduz o código seguinte: Option Explicit Global DBenc As Database Global etiqueta As String Global tblpes As Recordset Global tblami As Recordset Sub abrirBD() Set DBenc = OpenDatabase("caminho da base de dados\base de dados.mdb") Set tblpes = DBenc.OpenRecordset("pessoal") Set tblami = DBenc.OpenRecordset("amigos") End Sub Sub fecharBD() tblpes.Close tblami.Close DBenc.Close End Sub Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 43 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação O código correspondente à nossa janela principal é seguinte: Option Explicit Dim resp As Integer Private Sub Form_Load() etiqueta = "ESTA É A MINHA AGENDA" Call abrirBD End Sub Private Sub mnupessoal_Click() frmpessoal.Show End Sub Private Sub mnuterminar_Click() resp = MsgBox("Terminar?", vbOKCancel + vbQuestion + vbDefaultButton2, "Projecto de Agenda") Select Case resp Case 1 Call fecharBD End End Select End Sub Private Sub nnuamigos_Click() frmamigos.Show End Sub Private Sub Toolbar1_ButtonClick(ByVal Button As ComctlLib.Button) Select Case Button.Index Case 1 resp = MsgBox("Pretende Terminar?", vbOKCancel + vbQuestion + vbDefaultButton2, "Projecto de Agenda") Select Case resp Case 1 Call fecharBD End End Select Case 2 frmamigos.Show Case 3 frmpessoal.Show End Select End Sub Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 44 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Propriedades alteradas na janela Frmprincipal Name : frmprincipal Caption : Agenda Pessoal WindowState : 2 – Maximized Figura 28 - Aspecto geral da aplicação exemplo A segunda janela do projecto apresentará o aspecto anterior. Seis caixas de texto com a propriedade Name alterada para os nomes que aparecem dentro delas. Cinco botões chamados respectivamente cmdgravar, cmdactualizar, cmdapagar, cmdnovo e cmdsair. Nestes botões e na propriedade Caption faz-se aparecer os nomes mostrados. Altera-se ainda a propriedade Font para Bold, em cada um deles. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 45 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação O código correspondente a este Form é seguinte Option Explicit Sub gravar() tblpes![codigo] = txtcodigo.Text tblpes![nome] = txtnome.Text tblpes![morada] = txtmorada.Text tblpes![codpostal] = txtcodpostal.Text tblpes![tel] = txttel.Text tblpes![tm] = txttm.Text tblpes.Update End Sub Sub mostrar() txtcodigo.Text = tblpes![codigo] txtnome.Text = tblpes![nome] txtmorada.Text = tblpes![morada] txtcodpostal.Text = tblpes![codpostal] txttel.Text = tblpes![tel] txttm.Text = tblpes![tm] End Sub Private Sub cmdactualizar_Click() Call gravar txtcodigo.SetFocus End Sub Private Sub cmdapagar_Click() tblpes.Delete txtcodigo.SetFocus End Sub Private Sub cmdgravar_Click() tblpes.AddNew Call gravar txtcodigo.SetFocus End Sub Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 46 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Private Sub cmdnovo_Click() txtcodigo.SetFocus End Sub Private Sub cmdsair_Click() Unload Me End Sub Private Sub Form_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then SendKeys "{TAB}" KeyAscii = 0 End If End Sub Private Sub Form_Load() Label1.Caption = etiqueta End Sub Private Sub txtcodigo_GotFocus() txtcodigo.Text = "" txtnome.Text = "" txtmorada.Text = "" txtcodpostal.Text = "" txttel.Text = "" txttm.Text = "" cmdgravar.Enabled = False cmdactualizar.Enabled = False cmdapagar.Enabled = False End Sub Private Sub txtcodigo_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case vbKeyDelete Case vbKeyBack Case 48 To 57 Case Else KeyAscii = 0 End Select End Sub Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 47 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Private Sub txtcodigo_LostFocus() tblpes.Index = "chavecodigo" tblpes.Seek "=", txtcodigo.Text If Not tblpes.NoMatch Then cmdactualizar.Enabled = True cmdapagar.Enabled = True tblpes.Edit Call mostrar Else cmdgravar.Enabled = True txtnome.Text = "." txtmorada.Text = "." txtcodpostal.Text = "." txttel.Text = "0" txttm.Text = "0" End If End Sub Private Sub txtcodpostal_GotFocus() txtcodpostal.SelStart = 0 txtcodpostal.SelLength = Len(txtcodpostal.Text) End Sub Private Sub txtcodpostal_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase$(Chr$(KeyAscii))) End Sub Private Sub txtmorada_GotFocus() txtmorada.SelStart = 0 txtmorada.SelLength = Len(txtmorada.Text) End Sub Private Sub txtmorada_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase$(Chr$(KeyAscii))) End Sub Private Sub txtnome_GotFocus() txtnome.SelStart = 0 txtnome.SelLength = Len(txtnome.Text) End Sub Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 48 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Private Sub txtnome_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase$(Chr$(KeyAscii))) End Sub Private Sub txttel_GotFocus() txttel.SelStart = 0 txttel.SelLength = Len(txttel.Text) End Sub Private Sub txttel_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case vbKeyDelete Case vbKeyBack Case 48 To 57 Case Else Beep KeyAscii = 0 End Select End Sub Private Sub txttm_GotFocus() txttm.SelStart = 0 txttm.SelLength = Len(txttm.Text) End Sub Private Sub txttm_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case vbKeyDelete Case vbKeyBack Case 48 To 57 Case Else Beep KeyAscii = 0 End Select End Sub Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 49 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Figura 29 - Aspecto da segunda janela da aplicação exemplo A segunda janela do projecto apresentará o aspecto anterior. Sete caixas de texto com a propriedade Name alterada para os nomes que aparecem dentro delas e cinco botões chamados respectivamente cmdgravar, cmdactualizar, cmdapagar, cmdnovo e cmdsair. Nestes botões e na propriedade Caption faz-se aparecer os nomes mostrados. Um objecto SSTab com três separadores cujas propriedades Caption foram alteradas para Sexo, Estado Civil e Memórias. Figura 30 - Aspecto da janela de SStab Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 50 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação A imagem anterior e a seguinte são as duas imagem do separador SSTab. Convém referir, a existência de uma Frame em cada separador onde são inseridas os OptionButtons. No primeiro caso com a propriedade Name=Option1, para constituir um array, e no segundo caso com a propriedade Name=Option2, para constituir um segundo array. Figura 31 - Aspecto da segunda janela do SSTab O código correspondente a este Form é o seguinte Option Explicit Sub gravarBD() tblami![numero] = txtnumero.Text tblami![nome] = txtnome.Text tblami![morada] = txtmorada.Text tblami![codpostal] = txtcodpostal.Text tblami![tm] = txttm.Text tblami![tel] = txttel.Text tblami![dtnasc] = txtdatnasc.Text If option1(0).Value = True Then tblami![sexo] = "M" Else tblami![sexo] = "F" End If If Option2(0).Value = True Then tblami![estcivil] = "C" ElseIf Option2(1).Value = True Then tblami![estcivil] = "S" ElseIf Option2(2).Value = True Then tblami![estcivil] = "V" ElseIf Option2(3).Value = True Then Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 51 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação tblami![estcivil] = "X" ElseIf Option2(4).Value = True Then tblami![estcivil] = "D" ElseIf Option2(5).Value = True Then tblami![estcivil] = "O" End If tblami![relatorio] = txtmem.Text tblami.Update End Sub Sub mostrarBD() txtnumero.Text = tblami![numero] txtnome.Text = tblami![nome] txtmorada.Text = tblami![morada] txtcodpostal.Text = tblami![codpostal] txttel.Text = tblami![tel] txttm.Text = tblami![tm] txtdatnasc.Text = tblami![dtnasc] txtmem.Text = tblami![relatorio] If tblami![sexo] = "M" Then option1(0).Value = True Else option1(1).Value = True End If If tblami![estcivil] = "C" Then Option2(0).Value = True ElseIf tblami![estcivil] = "S" Then Option2(1).Value = True ElseIf tblami![estcivil] = "V" Then Option2(2).Value = True ElseIf tblami![estcivil] = "X" Then Option2(3).Value = True ElseIf tblami![estcivil] = "D" Then Option2(4).Value = True ElseIf tblami![estcivil] = "O" Then Option2(5).Value = True End If End Sub Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 52 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Private Sub cmdactualizar_Click() Call gravarBD txtnumero.SetFocus End Sub Private Sub cmdapagar_Click() tblami.Delete txtnumero.SetFocus End Sub Private Sub cmdgravar_Click() tblami.AddNew Call gravarBD txtnumero.SetFocus End Sub Private Sub cmdoutro_Click() txtnumero.SetFocus End Sub Private Sub cmdsair_Click() Unload Me End Sub Private Sub Form_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then SendKeys "{TAB}" KeyAscii = 0 End If End Sub Private Sub Form_Load() Label1.Caption = etiqueta End Sub Private Sub Picture1_Click() tblami.MoveLast Call mostrarBD End Sub Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 53 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Private Sub Picture2_Click() tblami.MoveFirst Call mostrarBD End Sub Private Sub Picture3_Click() tblami.MoveNext If tblami.EOF Then tblami.MoveLast End If Call mostrarBD End Sub Private Sub Picture4_Click() tblami.MovePrevious If tblami.BOF Then tblami.MoveFirst End If Call mostrarBD End Sub Private Sub txtcodpostal_GotFocus() txtcodpostal.SelStart = 0 txtcodpostal.SelLength = Len(txtcodpostal.Text) End Sub Private Sub txtcodpostal_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase$(Chr$(KeyAscii))) End Sub Private Sub txtdatnasc_GotFocus() txtdatnasc.SelStart = 0 txtdatnasc.SelLength = Len(txtdatnasc.Text) End Sub Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 54 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Private Sub txtdatnasc_LostFocus() If txtdatnasc.Text <> "" Then If Not IsDate(txtdatnasc.Text) Then MsgBox ("A Data Introduzida Não É Válida") txtdatnasc.SetFocus End If End If End Sub Private Sub txtmorada_GotFocus() txtmorada.SelStart = 0 txtmorada.SelLength = Len(txtmorada.Text) End Sub Private Sub txtmorada_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase$(Chr$(KeyAscii))) End Sub Private Sub txtnome_GotFocus() txtnome.SelStart = 0 txtnome.SelLength = Len(txtnome.Text) End Sub Private Sub txtnome_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase$(Chr$(KeyAscii))) End Sub Private Sub txttel_GotFocus() txttel.SelStart = 0 txttel.SelLength = Len(txttel.Text) End Sub Private Sub txttm_GotFocus() txttm.SelStart = 0 txttm.SelLength = Len(txttm.Text) End Sub Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 55 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Private Sub txtnumero_GotFocus() txtnumero.Text = "" txtnome.Text = "" txtmorada.Text = "" txtcodpostal.Text = "" txttel.Text = "" txttm.Text = "" txtdatnasc.Text = "" txtmem.Text = "" SSTab1.Tab = 0 Option2(0).Value = False Option2(1).Value = True Option2(2).Value = False Option2(3).Value = False Option2(4).Value = False Option2(5).Value = False option1(0).Value = True option1(1).Value = False cmdgravar.Enabled = False cmdactualizar.Enabled = False cmdapagar.Enabled = False End Sub Private Sub txttel_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case vbKeyDelete Case vbKeyBack Case 48 To 57 Case Else Beep KeyAscii = 0 End Select End Sub Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 56 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Private Sub txttm_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case vbKeyDelete Case vbKeyBack Case 48 To 57 Case Else Beep KeyAscii = 0 End Select End Sub Private Sub txtnumero_LostFocus() tblami.Index = "chavenumero" tblami.Seek "=", txtnumero.Text If Not tblami.NoMatch Then cmdactualizar.Enabled = True cmdapagar.Enabled = True tblami.Edit Call mostrarBD Else cmdgravar.Enabled = True txtnome.Text = "." txtmorada.Text = "." txtcodpostal.Text = "." txttel.Text = "0" txttm.Text = "0" txtdatnasc.Text = Date txtmem.Text = "." End If End Sub Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 57 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Figura 32 - Aspecto de um DataControl A imagem anterior, utiliza o objecto DataControl, este objecto deve ter a propriedade Visible=False, para não aparecer durante o tempo de execução e o objecto DBGrid (Project/Components/Microsoft Data Bound Grid Controls 5.0 (sp3), o que permite visualizar, alterar, apagar e mesmo adicionar registos à tabela sem praticamente linhas de código, alterando somente as propriedades AllowAddNew, AllowDelete e AllowUpdate para "True". Acrescenta-se um Form ao qual chamámos frmdb, e adicionámos um novo item ao Menu, de forma a podermos aceder a este Form. Neste caso justifica-se plenamente a utilização do objecto DataControl. Figura 33 - Botão da DBGrid Figura 34 - Botão do DataControl Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 58 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação O que é o Crystal Reports? O Crystal Reports Pro é um programa completo que ajuda a fazer relatórios, guardá-los em disco e utilizá-los com uma Base de Dados. O Crystal Reports Pro tem a característica de poder ser chamado dentro de aplicações em Visual Basic 5 ou superior. Numa abordagem mais académica achei que seria mais positivo realizar este pequeno manual usando exemplos práticos. Acho que desta forma se torna mais fácil tanto a explicação como a aprendizagem. Podemos iniciar o Crystal Reports dentro do próprio Visual Basic no menu Add-ins e invocar o Report Designer. Mas antes é necessário verificar se o computador possui o Crystal Reports, visto, este ser um programa externo ao Visual Basic e como consequência não é instalado de origem em conjunto com o resto dos controlos. O Crystal Reports é instalado acendendo à pasta \Common\Tools\VB98\Cryrept. Ao fazer duplo clique no ficheiro Crystl32.exe a aplicação é instalada. Após concluída a instalação e invocar o Crystal Reports como explicado anteriormente irá surgir uma janela como mostra a figura seguinte com o ambiente de trabalho do Crystal Reports. Figura 35 - Ambiente de Trabalho do Crystal Reports Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 59 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação O Crystal Reports contém várias faixas, cada uma das quais com os seus próprios processos e cenário, que podemos alterar de modo a atingirmos os objectivos pretendidos. As Principais faixas do Crystal Reports • Cabeçalho • Rodapé • Detalhe O cabeçalho e o rodapé contém as informações que aparecem no topo e na parte inferior de cada página do relatório, como por exemplo títulos, números de página, data e hora de impressão, etc. Cada página terá assim a sua faixa de cabeçalho e de rodapé. O detalhe contém os campos de registo da Base de Dados. Pode ter mais que uma linha, mas representa unicamente um registo lógico. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 60 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Os Campos do Crystal Reports O Crystal Reports reconhece 3 tipos de campos: • Campos de Base de Dados • Campos de texto • Fórmulas Os campos de Base de Dados, provêm directamente das tabelas que se abrem quando se inicia o uso do Crystal Reports. Basta adicionar os campos através de uma lista de campos acessíveis e colocá-los na localização desejada. Os campos de texto, são campos que contêm informação explicita que se deseja que apareça no relatório, como por exemplo a data e a hora. Se se quiser que estes campos apareçam em todas as páginas é necessário colocá-los no cabeçalho ou no rodapé. Os campos tipo fórmula combinam o resultado dos campos da Base de Dados, de texto ou de ambos. Estes campos são compostos por um nome (seguido do símbolo @), dentro do qual são adicionadas as fórmulas. O Crystal Reports tem disponíveis várias fórmulas predefinidas, assim como, funções e operadores que nos permitem construir fórmulas complexas. Também é permitida a inserção de declarações tipo IF, para testar a veracidade de campos. Figura 36 - Janela do editor de fórmulas Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 61 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Esta janela, é a caixa de diálogo dos campos do tipo Fórmulas, e é constituída por 3 janelas distintas: • Campos da Base de Dados e / ou fórmulas na primeira Coluna. • Campos de Funções, com uma enorme variedade de funções predefinidas na segunda Coluna. • Os Operadores na terceira Coluna com todos os operadores lógicos e aritméticos existentes. Conjugando estas três colunas podem-se criar fórmulas complexas, de modo a atingir qualquer objectivo. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 62 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação O primeiro relatório Foi dito na primeira página que uma das formas de executar o Crystal Reports seria dentro do Visual Basic 5.0 ou superior, clicando em Add-Ins seguido de Report Designer, como mostra a imagem que se segue: Figura 37 - Janela de abertura do Crystal Reports Para utilizar a possibilidade de imprimir através de um Form um ficheiro do Crystal Reports, é necessário adicionar um novo objecto à Toolbox. Como mostra a figura seguinte: Figura 38 - Janela de gestão de controlos do Visual Basic Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 63 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Objecto Crystal Reports Na sequência de clicar em Report Designer, aparece a primeira caixa de diálogo onde é permitido escolher que tipo de relatório se quer elaborar. Tal como exemplifica a figura seguinte: Figura 39 - Criação de um relatório (Tipo de relatório) Deve-se em Standard porque o objectivo é criar uma lista de amigos, por ordem alfabética, onde podemos consultar quer o telefone e o telemóvel. Algo como uma lista telefónica pessoal. Na caixa de diálogo que se segue, clica-se no botão Data File, para escolher a Base de Dados com que se pretende trabalhar. Figura 40 - Criação de um relatório (Escolher Base de Dados) Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 64 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação A imagem seguinte revela uma janela tipo o explorador do Windows, onde se escolhe a pasta que contém uma Base de Dados, neste exemplo é usada uma base de dados com a listagem de os dados de uma pessoa (pode ser consultada a Base de Dados na Figura 8, caso se deseje realizar um teste igual a este manual). Figura 41 - Explorador do Windows (Escolha do caminho da Base de Dados) Depois de seleccionada a Base de Dados pretendida (neste caso a amigos.mdb) clica-se no botão Done. Figura 42 - Esquema da Base de Dados seleccionada Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 65 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Na imagem seguinte, já no separador 4: Sort activo, escolhe-se "amigos.nome" como campo de ordenação, isto é, a nossa lista irá aparecer por ordem alfabética, ou seja, escolhe-se qual o campo pelo qual se quer ordenar o relatório. Caso seja seleccionado um campo de texto o relatório é ordenado por ordem alfabética, caso seja um número é o relatório é ordenado por ordem crescente. Figura 43 - Criação de um relatório (Escolha do campo de ordenação) Neste momento pode-se clicar no botão Preview Report pois o assistente está apto a dar uma perspectiva ainda que "grosseira" do relatório final. Quando digo grosseira, refiro-me a que o assistente irá listar toda a informação sem qualquer tipo de formatação, é então necessário criar e configurar várias colunas para a correcta colocação dos campos que se pretendem que apareçam no relatório. Na linha de cabeçalho utiliza-se duas linhas com os textos conforme de forma a que se possa colocar toda a informação pretendida. Acrescenta-se com o Insert Text Filed as palavras "Data de emissão" que atrás de campo data, "Página" e mais ou menos a meio da lista o texto "Lista dos meus amigos - Alfabética", como mostra a imagem seguinte. É necessário ter em atenção que esta forma é apenas um exemplo, não é absolutamente preciso que fique desta forma. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 66 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Figura 44 - Exemplo de um relatório gerado pelo Crystal Reports Pode-se e deve-se pelo menos melhorar os títulos na faixa de cabeçalhos. Para o fazer, clica-se com o botão direito do rato e faz-se Edit Text File. Abre-se então um pequeno processador de texto que nos permite, por exemplo, colocar a 1ª letra da palavra em maiúsculas. No exemplo que se segue, altera-se o título da coluna "Estado Civil" para "Est Civil", além disso é colocado dentro de uma caixa para melhorar o aspecto gráfico do relatório. Também é possível em vez de aparecer as iniciais que corresponderiam a um determinado estado civil, aparecesse uma palavra que identificasse sem dúvida a referida situação. Porque ninguém é obrigado a saber qual o diminutivo de determinado estado civil. Para realizar esta tarefa é necessário recorrer a programação como foi visto no início deste manual utilizando cláusulas IF e transformar determinado diminutivo de estado civil no seu estado completo. Para tal repara nas imagens seguintes: Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 67 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Figura 45 - Código para verificar o Estado Civil Para atingir o pretendido na coluna esquerda codifica-se o que está na coluna do lado direito, cria-se então uma fórmula para atingir o objectivo pretendido. É preciso codificar todas as situações possíveis. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 68 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação As opções dos menus Opção Função Descrição da acção Cria um novo relatório. Após pedir para seleccionar uma Base de New File Open File Save File Save As File Guarda o presente relatório com um novo nome Save Data with Reports File Guarda o valor dos campos com o relatório Close File Fecha o relatório corrente Print Preview File Mostra no écran o relatório Preview Sample File Printer File Envia o relatório para a impressora Export File Imprime em diferentes formatos (Ex.html) Mail File Envia o relatório por e-mail Reports Definition File Imprime as definições do relatório Printer Setup File Mostra as características da impressora Page Margins File Permite definir as margens Options File Reports Options File Define as opções do relatório corrente Exit File Termina o Crystal Reports Undo Edit Anula a última execução efectuada Redo Edit Anula a execução anterior Cut Edit Anula um texto seleccionado Copy Edit Copia um texto seleccionado para o área de transferência Dados Abre um relatório já existente (*.RPT) Guarda o presente relatório. Se não existe, pede para que seja atribuído um nome. Mostra o exemplo de um relatório perguntando o número de páginas a visualizar Define por defeito as pastas onde estão as base de dados e onde serão guardados os relatórios Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 69 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Paste Edit Paste Especial Edit Select Fields Edit Fórmula Edit Para editar uma fórmula existente Text Field Edit Para editar um campo de texto Summary Field Edit Para editar um campo de resumo Browse Field Data Edit Visualiza a lista de todos os valores possíveis Show/Hide Section Edit Delete Section Edit Apaga um grupo/secção adicionada ao relatório Object Edit Para editar um objecto OLE Links Edit Permite alterar os links para um objecto OLE Query Edit Para editar uma query, usada para extrair dados de campos SQL Query Title Edit Modifica o titulo de uma query Refresh Data Edit Actualiza os campos de um relatório Database Field Insert Selecciona o campo de uma Base de dados Text Field Insert Cria um campo de texto Fórmula Field Insert Cria uma fórmula Insert Mostra no relatório a página corrente Record Number Filed Insert Mostra a posição do registo na tabela, ordenado no relatório Group Number Field Insert Permite criar um campo com um numero de grupo Print Date Filed Insert Imprime a data do dia da impressão Subtotal Insert Cria faixa para um sub-total. Só usada com campos numéricos Grand Total Insert Page Number Field Cola o texto da área de transferência Usa a área de transferência do Windows para copiar informação de outra aplicação e colocá-la no relatório actualmente aberto. Permite seleccionar um grupo de campos para, por exemplo, executar a mesma tarefa Mostra uma caixa de diálogo onde permite visualizar ou esconder determinada secção Cria uma faixa com um total geral. Como a anterior só pode ser usada com campos numéricos. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 70 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Summary Insert Insere campos do tipo somas, médias, máximos, mínimos, etc. Group Section Insert Determina o ponto de quebra e total Group Name Field Insert Contem um texto que identifica cada grupo Line Insert Desenha linhas Box Insert Desenha caixas Picture Insert Insere uma imagem Graph/Chart Expext Insert Permite criar um gráfico no relatório Object Insert Permite inserir um objecto OLE Reports Style Format Permite escolher o formato do relatório Auto Arrange Format Arranja os campos segundo determinada ordenação Font Format Permite alterar a fonte de um campo Field Format Permite alterar o formato do campo seleccionado Borders and Colors Format Adiciona sombras, cores, etc., aos campos seleccionados Change Line Height Format Altera a altura da linha seleccionada Line... Format Altera a espessura da linha Box... Format Permite modificar os atributos de uma caixa Picture... Format Permite alterar a escala de uma imagem Graph/Chart Format Permite alterar a imagem de um gráfico Section Format Permite atribuir atributos a todas as secções das faixas do relatório Visual Link Expert Database Permite ver e alterar as relações entre as tabelas Add Database to Reports Database Permite adicionar base de dados ao relatório Remove From Reports Set Location Set Alias Verify Database Database Retira uma base de dados do relatório Database Permite determinar o caminho exacto das tabelas da base de dados Database Pemite criar Alias para as tabelas da base de dados Database Verifica se as tabelas da base de dados estão actualizadas com as ultimas alterações Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 71 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Verify on Every Print Database Se está on, faz a verificação da base de dados em cada impressão Log On Server Database Permite ligar ODBC Log Off Server Database Permite desligar ODBC Show SQL Query Stored Procedures Parameters Database Verifica o SQL query gerado pelo Crystal Reports Database Reve os procedimentos de detalhe mantidos na fonte SQL Reports Determina um critério de selecção dos registos Reports Igual ao menu de selecção de registos Reports Permite um critério de selecção para os grupos Change Group Expert Reports Permite facilmente alterar os grupos dos campos Top N/Sort Group Expert Reports Cria relatórios na base de critérios percentuais Sort Records Reports Especifica a forma como o relatório deve vir ordenado Search Reports Permite procurar registos segundo determinado critério Search Again Reports 2ª procura Zoom Reports Permite alterar o tamanho da visualização do relatório no ecran Refresh Reports Data Reports Permite reler os dados da base de dados Reports Title Reports Coloca um titulo no relatório Set Print Date Reports Select Record Expert Edit Selection Fórmula/Record Edit Section Fórmula/Group Permite alterar a data do sistema ou definir o valor do campo data que aparece no relatório Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 72 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação O Cross-tab (Tabela Cruzada) O Cross-Tab é um tipo de relatório que pode dar informações estatísticas agrupadas de diferentes formas, como por exemplo, os valores de venda mensais por cliente. No exemplo que se segue é demonstrado de uma forma simples, com a Base de Dados de amigos, como se faz este tipo de relatório. Observe a imagem seguinte: Figura 46 - Botão do assistente do Cross-Tab Clicando neste botão, seguimos os passos normais da escolha da base de dados até surgir uma caixa de diálogo onde definimos quais os valores que pretendemos que apareçam nas Colunas, nas Linhas e no Detalhe. Figura 47 - Assistente da criação de CrossTabs Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 73 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Nesta caixa de diálogo, selecciona-se o campo amigos.nome, e arrasta-se para o espaço Row, ou clicamos em Add Row, assim como o campo amigos.tm. Selecciona-se o campo amigos.dtnasc e arrasta-se para o espaço Columns, ou clicamos no botão Add Column. Selecciona-se o campo amigos.dtnasc o arrasta-se para o espaço Summarized Field, ou clica-se no botão Set Summarized Field. Neste campo irá aparecer a quantidade de amigos que fazem anos em determinado mês. Podemos neste momento clicar no botão Preview Reports, para ter uma imagem do relatório acabado de elaborar. Já com a imagem do relatório no écran, pode-se clicar no separador Design para se poder configurar o relatório à medida de cada utilizador, esta ferramenta não é nada mais do a formatação do relatório. Assim, clica-se com o botão direito do rato sobre o campo no título Data para abrir uma caixa de diálogo. Retira-se o valor Year (ano) para espaço assim como o valor Day (dia). No campo Month (mês) selecciona-se o mês pretendido, neste caso o MAR de Março. Tudo isto para que apareça somente o nome do mês em título e não a data de nascimento. No detalhe clica-se com o botão direito do rato sobre o campo e selecciona-se Change Format. Nesta caixa de diálogo activa-se a Check Box Suppress if Zero, para que não nos apareça o valor zero, nos meses onde os nossos amigos não fazem anos. Figura 48 - Formatação da data Com este exemplo quis-se ilustrar a facilidade de apresentar um relatório estatístico baseado no cruzamento de dados utilizando o Crystal Reports. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 74 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação A impressão através do Visual Basic Estes relatórios acompanham os projectos de Visual Basic, e dentro do projecto é possível imprimir os relatórios directamente, acrescentando como já foi visto o objecto Crystal Reports à nossa ToolBox, e posteriormente ao Form dentro do qual queremos que a impressão se efectue. É dado em seguida um exemplo da forma com se processa a impressão usando o Crystal Reports: Imagine-se que dentro de um Form existe um botão com a propriedade "Caption" = Imprimir e a propriedade "Name" = cmdimprimir. Vamos escrever um código possível seguido da explicação que acho pertinente. Private Sub cmdimprimir_click() Dim iResult as Integer CrystalReport1.DataFiles(0) = "c:\projectos\tutoriais\amigos.mdb" CrystalReport1.CopiesToPrinter = 2 CrystalReport1.ReportFileName = "c:\projectos\tutoriais\amigos.rpt" CrystalReport1.Destination = 0 iResult = CrystalReport1.PrintReport If iResult <> 0 Then MsgBox CrystalReport1.LastErrorString End If End Sub Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 75 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Comentário sobre o código anterior • Reparar que o nome da variável crystalreport1 é independente, ou seja, tem o nome que quiser dar tal e qual como o command1 está associado a um botão. • A linha que indica datafiles diz o caminho onde está alojada a Base de Dados. • Serão impressas duas cópias do relatório. • Esta linha indica o caminho e o nome do relatório a ser impresso. • Destination=0 indica a visualização no ecran antes de ser reencaminhado para a impressora. Os outros valores possíveis são: 1 - Impressora; 2 - Ficheiro; 3 - Email via MAPI; 4 - Email via VIM • Se a execução da ordem de impressão for diferente de zero, é porque ocorreu uma situação de erro, que será visualizada no écran. • Os caminhos indicados nas linhas 5 e 7 poderão ser substituídas por strings, contendo os valores respectivos. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 76 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Criação de Help Files O Help é, sem dúvida, um dos factores que contribui para que qualquer aplicação, se realmente for uma boa ferramenta, seja um sucesso. É com recurso ao Help que os utilizadores das aplicações podem ultrapassar obstáculos, de uma forma rápida e simples. Existem duas formas de documentar as aplicações: a primeira é com um Help online, para que o utilizador tenha acesso à ajuda em qualquer parte da aplicação e a segunda é escrever manuais, menos prática que a primeira porque consiste na impressão de manuais. Para criar um Help, é necessário um processador de texto que tenha capacidades de utilização de Footnotes (Notas de rodapé nas versões portuguesas) e que possa guardar o ficheiro em formato .RTF (Rich Text Format). O Microsoft Word é um excelente exemplo que poderá ser utilizado. É necessário ainda um compilador de ficheiros .HLP a partir de ficheiros .RTF. Para esta função vai ser utilizado o Microsoft Help Workshop, que pode ser encontrado no CD do Visual Basic. Mas para se poder utilizar o Microsoft Help Workshop é necessário instalá-lo primeiro, pois, tal como o Crystal Reports ele não é instalado de origem com o Visual Studio ou Visual Basic. O Microsoft Help Workshop pode ser encontrado no CD do Visual Studio na pastas \Common\Tools\VB\HCW. O Microsoft Help Workshop é iniciado a partir do menu Iniciar do Windows. Para criar um ficheiro Help, é necessário criar um índice (content file), os tópicos e o seu desenvolvimento (topic file), e o projecto (project file). O ficheiro contents (.CNT) é um ficheiro ASCII e define a aparência e o layout do tabulador Contents do ficheiro Help. O ficheiro Topic é onde se escreve o texto, se inserem gráficos e que no conjunto fazem o “Help”. O ficheiro Project cria a ligação entre os ficheiros Contents e Topic, assim como outros ficheiros que são necessários ao projecto. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 77 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação As figuras seguintes mostram um ficheiro de Contents (.CNT) e um ficheiro de Help. Figura 49 - Exemplo de um ficheiro de Contents Figura 50 - Exemplo de um ficheiro de Help Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 78 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Os passos para criar um ficheiro Help passam por compilar o ficheiro RTF e o ficheiro Help Project com o compilador Help para assim dar origem ao ficheiro final de ajuda a utilizar. A figura seguinte mostra o esquema de funcionamento do compilador. Figura 51 - Esquema de funcionamento do compilador Help Para criar então um ficheiro de Help abre-se o Microsoft Help Workshop e seleccione o New no menu File. Na caixa de diálogo que surge escreva no campo Default Filename e Default Title, os nomes que pretender para o seu ficheiro de ajuda. Neste exemplo foi utilizado um ficheiro referente ao meio ambiente. Em seguida adiciona-se um Heading à lista clicando no botão Add Below e seleccionando a opção de Heading. No campo Title escreva o que desejar com título principal do seu ficheiro de ajuda. Clique em OK para fechar a caixa de ajuda. Vão-se adicionando todos os títulos que se desejarem da mesma forma até o ficheiro ter todos os títulos que se desejem. Para criar um subtítulo como mostra a imagem seguinte selecciona-se o título que se pretende e depois pressiona-se o botão Move Right. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 79 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Figura 52 - Ambiente do Microsoft Help Workshop Após ter adicionado todos os tópicos que pretende guarde o ficheiro na pasta do projecto em Visual Basic. Após ter terminado então a criação do ficheiro Content é necessário criar o ficheiro de Topic, utilizando, como já foi referido um processador de texto que suporte Footnotes e ficheiros RTF. No ficheiro de texto escreva o conteúdo que pretende para cada tópico introduzido no ficheiro de Content com a estrutura apresentada em baixo. Esta estrutura é necessária para que o compilador reconheça as ligações entre os dois ficheiros que constituem a ajuda propriamente dita. Antes de cada tema que inseriu no ficheiro de Content, em seguida é necessário efectuar a inserção de três Footnotes antes do tópico propriamente dito. 1. Inserir um Footnote com a marca de # associada ao texto IDH_1. 2. Inserir um Footnote com a marca de $ associada ao texto do tópico, neste caso é Ecossistema. 3. Inserir um Footnote com a marca de k associada ao texto que se pretende que seja pesquisável para aquele tópico. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 80 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Após estes passos temos um ficheiro no Word com um aspecto semelhante ao seguinte: Figura 53 - Ficheiro exemplo de criação dos tópicos Após a inserção de todos os tópicos guarda-se o ficheiro (não esquecer de alterar o tipo de ficheiro para Rich Text Format). Vamos então iniciar a criação do ficheiro de Help baseado nos dois ficheiros criados anteriormente. Crie um novo ficheiro no Help Compiler Workshop. Seleccione o item New do menu File e escolha Help Project e faça duplo clique no botão de OK. Guarde o ficheiro com o nome que pretender, ficando com um ficheiro com o aspecto como na figura seguinte: Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 81 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Figura 54 - Criação do ficheiro de Help Depois faça clique no botão de Options e escreva qual o título do ficheiro, veja a figura 55 para visualizar qual o aspecto pretendido: Figura 55 - Tabulador General da caixa de diálogo Options Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 82 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Em seguida, é necessário configurar todos os aspectos referentes ao ficheiro de ajuda, é o que irei explicar nas próximas páginas. Seleccione o separador Compression e escolha a opção Custom e marque a caixa Hall Compressions, desta forma o ficheiro de ajuda irá ficar com o menor tamanho possível e tornarse-á bastante mais rápido a pesquisar. No separador Files e no campo Help File escreva o ficheiro .HLP que pretende que tenha o ficheiro de ajuda no final do projecto. Faça clique no botão Change referente ao campo Rich Text Format e na caixa que é apresentada faça clique no botão Add e escolha o ficheiro criado anteriormente no Microsoft Word. Faça clique no botão Change referente ao campo Contents File e na caixa de diálogo que é apresentada , faça clique no botão Add e escolha o ficheiro de Content que criou no inicio do trabalho de criação do ficheiro de Help. O separador Files da caixa de diálogo Options deverá estar semelhante ao da figura seguinte: Figura 56 - Definições para o separador Files Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 83 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Feche a caixa de diálogo das Options e clique no botão Windows ao aparecer a caixa de diálogo Create a Window, escreva Main no campo Created a Window Named. Mantenha o outro campo com Procedure (figura 57). Ao fazer clique no botão de OK é apresentada a caixa de diálogo Window Properties. Figura 57 - Definições para a caixa de diálogo Create a Window Seleccione o separador Buttons e marque a caixa Browse. Após esta operação feche a caixa de diálogo. Faça clique no botão Map. Ao aparecer a caixa de diálogo Map, faça clique no botão Add. Escreva IDH_1 para o campo Topic ID (aquele que tem o mesmo ID no ficheiro de Word) e 100 para o campo Mapped numeric value. Veja a figura seguinte: Figura 58 - Caixa de diálogo Edit Map Entry com as definições para o tópico IDH_1 Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 84 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Com base nos seguintes dados, insira os restantes valores numéricos para os tópicos criados, neste exemplo os tópicos teriam a seguinte configuração: Topic ID Context ID IDH_1 100 IDH_2 101 IDH_3 103 IDH_4 201 IDH_5 202 IDH_6 203 IDH_7 301 IDH_8 302 Estes códigos correspondem aos tópicos inseridos anteriormente, ou seja, sempre que o algarismo das centenas é incrementado, quer dizer que esse ID pertence a um tópico diferente d anterior. O algarismo das unidades corresponde a novos tópicos dentro de outro. Mas melhor que explicar é exemplificar: Estruturas dos Ecossistemas (IDH_1 100) Ecossitemas (IDH_2 101) Factores bióticos (IDH_3 103) Funcionamento de ecossistemas (IDH_4 201) Relações entre seres vivos (IDH_5 202) Factores abióticos (Etc… Etc.) No final a caixa de diálogo deve apresentar um aspecto semelhante ao seguinte: Figura 59 - Caixa de diálogo Map com os valores numéricos para os IDH Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 85 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Para terminar só falta guardar o trabalho e compilar o ficheiro de ajuda. Durante a compilação a aplicação é minimizada (figura 60) e depois restaurada para apresentar os resultados (figura 61) da mesma. Deverá obter uma janela com o aspecto seguinte: Figura 60 - Projecto de um ficheiro de ajuda Figura 61 - Resultados da compilação do ficheiro de ajuda Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 86 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Depois de termos criado o ficheiro de ajuda é necessário associá-lo correctamente ao ficheiro de Visual Basic que se pretende. Para esse fim abre-se as Properties de um projecto e na caixa onde refere Help File Name escreve-se o caminho e o nome do ficheiro de ajuda criado. Ter em atenção que se o ficheiro de ajuda estiver na mesma pasta que o projecto não se escreve o caminho mas só o nome do ficheiro. Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 87 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Criação de pacotes de instalação Tudo aquilo que se aprendeu e se pode programar em Visual Basic, bem como em qualquer linguagem é nossa propriedade intelectual. De certeza que ninguém gostava que alguém que não teve qualquer trabalho possa aceder, alterar e até mesmo comercializar aquilo que tanto trabalho deu a concretizar. Assim, o Visual Basic permite compilar os projectos, ou seja, transformar aquilo que qualquer programador entende, em linguagem que só o computador entende. Deste modo garante-se a nossa propriedade. Para isso e ainda com o projecto aberto (qualquer um) (irei utilizar o projecto de agenda que serviu para exemplificar o DataControl), faz click em File seguido de Make Nome_do_ficheiro.exe. Isto irá transformar o projecto actual num ficheiro executável. Se não precisarmos de o distribuir, bastará clicar neste executável, para que o projecto funcione. Mas se se pretender distribuir o projecto, há a necessidade de criar um pacote de instalação. Assim o projecto funcionará em qualquer outro computador. Em Visual Basic 6, clica em Package And Deployment Wizard, que é um assistente que auxilia a concretizar este objectivo. Observe a figura seguinte: Figura 62 - Janela do Wizard de criação de pacotes de instalação Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 88 Escola Profissional de Gaia – Informática de Gestão – Técnicas e Linguagens de Programação Clicando em Package, e seguindo as opções do assistente, pode-se criar um conjunto de ligações, secções, referências externas e funções, que serão geradas a partir do projecto, originando assim um objecto que contém código máquina. Figura 63 - Tipo de pacote de instalação que se pretende E o assistente está concluído, assim sempre que se desejar instalar o projecto num outro computador basta executar o ficheiro gerado e surgirá uma imagem como a seguinte dando a escolher as opções de instalação pretendidas. Figura 64 - Pacote de instalação em execução Módulo XII – Visual Basic 6.0 – O Visual Basic 6.0 Página 89