Antes de começar a codificar
A parte mais importante (e muitas vezes esquecida) da criação de um aplicativo em Visual Basic é a fase de design. A necessidade de projetar uma interface de usuário para o aplicativo é óbvia; a necessidade de estruturar o código é menos óbvia. Diferentes métodos de construção de aplicativos podem resultar em diferenças no desempenho do aplicativo e na facilidade de manutenção e usabilidade do código. O código do aplicativo Visual Basic é organizado de maneira hierárquica. Um aplicativo típico consiste em vários módulos: um módulo de formulário para cada formulário do aplicativo, módulos padrão opcionais que compartilham código e módulos de classe opcionais. Cada módulo contém vários processos contendo código: processo de evento, subprocesso ou processo de função e processo PRperty. Determinar qual processo pertence a qual módulo tem uma determinada relação com o tipo de aplicação que está sendo criada. Como o Visual Basic é baseado em objetos, é útil pensar nos aplicativos em termos dos objetos que eles representam. Neste capítulo, o exemplo de aplicação Vcr.vbp é projetado com base nos objetos que consistem em um videocassete e um aparelho de televisão. A aplicação VCR contém dois módulos de formulário, um módulo padrão e dois módulos de classe. O “Object Browser” pode ser usado para examinar a estrutura do projeto (Figura 5.2).
A principal forma de aplicação do videocassete (frmVCR) é a imagem visual da combinação do videocassete e da tela da TV (Figura 5.3). Consiste em vários objetos modelados a partir de cenas do mundo real. Um conjunto de botões de comando (cmdPlay, cmdRecord, etc.) imita os botões que operam um videocassete. O software VCR também inclui relógio (lblTime), indicador de canal (lblChannel), indicador de função (shpPlay, shpRecord, etc.) e tubo de imagem (picTV). O módulo de formulário Vcr.frm inclui procedimentos de evento para todos esses objetos.
Em muitos casos, existem processos repetidos compartilhados por vários objetos. Por exemplo, "pressionar" o botão "reproduzir", "retroceder" ou "gravar" requer que os botões "pausar" e "parar" sejam válidos. É melhor criar uma sub-rotina compartilhada que todos os botões possam chamar, em vez de repetir esse código no procedimento de evento Click de cada botão. Se essas sub-rotinas forem modificadas no futuro, todas as modificações poderão ser feitas modificando-as em um só lugar. O módulo padrão Vcr.bas contém vários procedimentos compartilhados.
Algumas partes do videocassete são invisíveis, como o mecanismo de transporte da fita ou a lógica por trás da gravação de programas de televisão. Da mesma forma, algumas funções dos videocassetes de software não possuem imagens visuais. Essas partes e funções são implementadas como dois módulos de classe Recorder.cls e Tape.cls. O módulo clsRecorder contém o código para iniciar o processo de “gravação” e o módulo clsTape contém o código para controlar a direção e velocidade da “fita”. As classes definidas nestes módulos não estão diretamente relacionadas a nenhum objeto do formulário. Por serem módulos de código independentes, um programa de gravação pode ser facilmente reconstruído sem quaisquer modificações.
Além de projetar a estrutura do seu código, também é importante estabelecer uma convenção de nomenclatura. Por padrão, o Visual Basic nomeia o primeiro formulário do projeto como Form1, o segundo formulário como Form2 e assim por diante. Se você tiver vários formulários em seu aplicativo, é uma boa ideia dar-lhes nomes significativos para evitar confusão ao escrever ou editar código. Algumas convenções de nomenclatura recomendadas pelo Visual Basic estão listadas no Apêndice B, "Convenções de codificação do VisualBasic".
À medida que você aprende mais sobre objetos e a escrever código, consulte o aplicativo de amostra VCR para encontrar exemplos de diversas técnicas de codificação.
Mecanismo de escrita de código
Antes de começar a escrever código, é importante compreender a mecânica de escrever código em Visual Basic. Como qualquer linguagem de programação, o Visual Basic possui suas próprias regras para organizar, editar e formatar código.
módulo de código
O código do Visual Basic é armazenado em módulos. Existem três tipos de módulos: formulários, padrões e classes. Uma aplicação simples pode ter apenas um formulário, com todo o código da aplicação residindo no módulo de formulário. Quando o aplicativo for grande e complexo, formulários adicionais deverão ser adicionados. Você pode acabar descobrindo que existe um código comum sendo executado de diversas formas. Como você não deseja duplicar o código nos dois formatos, crie um módulo separado que contenha os procedimentos para implementar o código comum. Os módulos independentes devem ser módulos padrão. Você pode então construir uma biblioteca de módulos contendo procedimentos compartilhados.
Cada módulo padrão, módulo de classe e módulo de formulário pode conter:
declaração. Você pode colocar declarações de constantes, tipos, variáveis e procedimentos de biblioteca de vínculo dinâmico (DLL) no nível do módulo em formulários, classes ou módulos padrão.
processo. Um procedimento Sub, Function ou Property contém trechos de código que podem ser executados como uma unidade. Eles são discutidos na seção "Visão geral do processo", posteriormente neste capítulo.
módulo de formulário
Módulos de formulário (extensão de arquivo .FRM) são a base para a maioria dos aplicativos Visual Basic. Um módulo de formulário pode conter procedimentos para lidar com eventos, procedimentos gerais e declarações de variáveis, constantes, tipos e procedimentos externos em nível de formulário. Se você visualizasse o módulo de formulário em um editor de texto, também veria uma descrição do formulário e seus controles, incluindo suas configurações de propriedade. O código escrito em um módulo de formulário é específico para o aplicativo específico ao qual o formulário pertence; ele também pode fazer referência a outros formulários ou objetos dentro do aplicativo.
Módulo padrão
Módulos padrão (extensão de arquivo .BAS) são contêineres para procedimentos e declarações que são acessados por outros módulos dentro de um aplicativo. Eles podem conter declarações globais (em todo o aplicativo) ou em nível de módulo de variáveis, constantes, tipos, procedimentos externos e procedimentos globais. O código escrito em módulos padrão não precisa estar vinculado a um aplicativo específico; se for tomado cuidado para referir-se a formulários e controles sem nome, os módulos padrão podem ser reutilizados em muitos aplicativos diferentes.
módulo de classe
No Visual Basic, os módulos de classe (extensão de arquivo .CLS) são a base da programação orientada a objetos. O código pode ser escrito em módulos de classe para criar novos objetos. Esses novos objetos podem conter propriedades e métodos personalizados. Na verdade, um formulário é apenas um módulo de classe no qual os controles podem ser colocados e as janelas do formulário podem ser exibidas.
Detalhes Para obter informações mais detalhadas sobre como escrever código em módulos de classe, consulte o Capítulo 9, "Programando com Objetos".
Observe que as edições Professional e Enterprise do Visual Basic também incluem documentos ActiveX, designers ActiveX e controles de usuário. Eles introduzem novos tipos de módulos com diferentes extensões de arquivo. Do ponto de vista da codificação, esses módulos devem ser tratados como módulos de formulário.
Use o editor de código
O Editor de Código do Visual Basic é a janela na qual a maior parte do código é escrita. É como um software de processamento de texto altamente especializado, com muitos recursos que facilitam a escrita de código Visual Basic. A Figura 5.4 mostra a janela “Editor de Código”.
Como você precisa operar o código Visual Basic no módulo, é necessário abrir uma janela "Editor de Código" independente para cada módulo selecionado no "Explorador de Projetos". Em cada módulo, para cada objeto contido no módulo, o código do módulo é subdividido em partes independentes correspondentes ao objeto. Use a "Caixa de listagem de objetos" para alternar entre as peças. Em um módulo de formulário, a lista contém uma seção geral, uma seção para o próprio formulário e uma seção para cada controle que o formulário contém. Para módulos de classe, a lista inclui uma seção geral e uma seção de classe para módulos padrão, apenas uma seção geral é exibida.
Cada pedaço de código pode conter vários procedimentos diferentes acessados usando a caixa de listagem de procedimentos. A lista de procedimentos do módulo de formulário contém uma seção separada para cada procedimento de evento de um formulário ou controle. Por exemplo, a lista de processos do controle Label inclui o segmento de evento Change, o segmento de evento Click, o segmento de evento DblClick e assim por diante. Os módulos de classe apenas enumeram os procedimentos de evento da própria classe – inicialização e encerramento. O módulo padrão não enumera nenhum procedimento de evento porque o módulo padrão não oferece suporte a eventos.
A lista de procedimentos da seção geral do módulo contém apenas uma única seção - a seção de declaração, onde são colocadas variáveis de nível de módulo, constantes e declarações de DLL. Quando você adiciona subprocedimentos ou procedimentos de função a um módulo, esses procedimentos são adicionados à caixa de listagem de procedimentos abaixo da seção de declaração.
Duas visualizações diferentes de código estão disponíveis na janela Editor de código. Você pode visualizar um processo por vez ou todos os processos em um módulo, separados uns dos outros por linhas (como mostrado na Figura 5.4). Para alternar entre as duas visualizações, utilize o botão "Seleção de visualização" no canto inferior esquerdo da janela do editor.
codificação de preenchimento automático
O Visual Basic pode preencher automaticamente instruções, propriedades e parâmetros, tornando a escrita de código mais conveniente. À medida que você insere o código, o editor enumera opções, instruções ou protótipos ou valores de função apropriados. Acessadas por meio do comando Opções no menu Ferramentas, as opções estão disponíveis na guia Editor da caixa de diálogo Opções que determinam se é permitido ou desabilitado a configuração de valores para códigos individuais.
Quando você insere um nome de controle no código, "Automatic List Member Properties" irá destacar a folha suspensa de propriedades do controle (Figura 5.5). Digitar as primeiras letras do nome do atributo selecionará o nome da tabela e pressionar a tecla Tab completará a entrada. Esta opção é muito útil quando você não tem certeza de quais propriedades um determinado controle possui. Mesmo se você optar por desativar o recurso Lista automática de membros, ainda poderá usar a combinação de teclas CTRL J para obter essa funcionalidade.
O recurso "Auto Quick Info" exibe a sintaxe de instruções e funções (Figura 5.6). Depois de inserir uma instrução ou nome de função legal do Visual Basic, a sintaxe é exibida imediatamente abaixo da linha atual e seu primeiro parâmetro é exibido em negrito. Após inserir o valor do primeiro parâmetro, o segundo parâmetro aparece novamente, também em negrito. "Informações rápidas automáticas" também podem ser obtidas usando a combinação de teclas CTRL I.
marcador
Os marcadores podem ser usados no editor de código para marcar certas linhas de código para que você possa retornar facilmente a elas mais tarde. Ativar e desativar marcadores e comandos para navegar até marcadores existentes podem ser obtidos nos itens de menu Editar, Marcador ou na barra de ferramentas Editar.
Mais informações Para obter informações mais detalhadas sobre como usar combinações de teclas para usar vários recursos da janela Editor de código, consulte "Teclas de atalho da janela de código".
noções básicas de codificação
Esta seção apresenta a mecânica de escrever código, incluindo como quebrar e mesclar linhas de código, como adicionar comentários, como usar números e convenções de nomenclatura do Visual Basic.
Divida uma instrução de linha única em várias linhas
Você pode usar caracteres de continuação de linha (um espaço seguido por um sublinhado) na janela Código para dividir instruções longas em várias linhas. Devido ao uso de caracteres de continuação de linha, o código se torna mais legível tanto no computador quanto na impressão. O seguinte usa o caractere de continuação de linha (_) para dividir o código em várias linhas:
Data1.RecordSource=_
SELECIONE*FROMTítulos,Editores_
&WHEREPublishers.PubId=Titles.PubID_
&ANDPublishers.State='CA'
Na mesma linha, comentários não podem ser adicionados após o caractere de continuação de linha. Existem algumas restrições sobre onde os caracteres de continuação de linha podem ser usados.
Combine várias instruções na mesma linha
Normalmente, há uma instrução do Visual Basic em uma linha sem um terminador de instrução, mas você pode colocar duas ou mais instruções na mesma linha, separando-as com dois pontos (:).
Text1.Text=Olá:Vermelho=255:Text1.BackColor=
Vermelho
Porém, para facilitar a leitura do código, é melhor colocar uma instrução por linha.
Para obter mais informações, consulte Apêndice A, "Especificações, limitações e formato de arquivo do Visual Basic".
Adicione comentários ao seu código
Você encontrará frequentemente o caractere de comentário (') ao ler os exemplos neste manual. Este símbolo diz ao Visual Basic para ignorar o que segue o símbolo. Esses são comentários no trecho de código, tanto para conveniência do desenvolvedor quanto para conveniência de outros programadores que poderão posteriormente examinar o código-fonte. Por exemplo:
'Isso é do lado esquerdo da tela
'Iniciar comentário.
Text1.Text=Olá! 'Coloque na caixa de texto
'Bem-vindo.
Os comentários podem estar na mesma linha da declaração, escritos após a declaração, ou podem ocupar uma linha inteira. O código acima demonstra ambas as situações. Lembre-se de que um comentário não pode seguir um caractere de continuação de linha na mesma linha.
Observação Você pode adicionar ou remover símbolos de comentários de um bloco de código selecionando duas ou mais linhas de código e selecionando o botão Bloco de comentários ou Remover bloco de comentários na barra de ferramentas Editar.
Compreenda os sistemas numéricos
A maioria dos valores neste documento estão em decimal (base 10). Mas às vezes é mais conveniente usar números hexadecimais (base 16) ou números octais (base 8). Visual Basic usa o prefixo &H para representar números hexadecimais e &O para representar números octais. A tabela a seguir ilustra a representação decimal, octal e hexadecimal do mesmo número.
Geralmente não é necessário conhecer o sistema numérico hexadecimal ou octal porque os computadores podem trabalhar com números em qualquer um dos sistemas. No entanto, alguns sistemas numéricos são mais adequados que outros para determinadas tarefas, como o uso de números hexadecimais para definir a cor de telas e controles.
Convenções de nomenclatura do VisualBasic
Ao escrever código Visual Basic, você declara e nomeia muitos elementos (procedimentos de sub e função, variáveis, constantes, etc.). Os nomes de procedimentos, variáveis e constantes declarados no código Visual Basic devem seguir estas regras:
1. Devem começar com uma letra.
2. Eles não podem conter pontos incorporados ou caracteres de declaração de tipo (caracteres especiais que especificam tipos de dados).
3. Não podem exceder 255 caracteres. Os nomes dos controles, formulários, classes e módulos não podem exceder 40 caracteres.
4. Elas não podem ter o mesmo nome que palavras-chave restritas.
Palavras-chave restritas são palavras usadas pelo Visual Basic e fazem parte da linguagem. Isso inclui instruções predefinidas (como If e Loop), funções (como Len e Abs) e operadores (como Or e Mod).
Informações detalhadas Para obter informações mais detalhadas sobre a tabela de palavras-chave, consulte o "Manual de referência da linguagem Visual Basic 6.0".
Formulários e controles podem ter o mesmo nome que palavras-chave restritas. Por exemplo, você pode nomear um Loop de controle. Mas o controle não pode ser referenciado da maneira usual no código, porque o Visual Basic pensará que Loop significa a palavra-chave. Por exemplo, o código a seguir apresentará erro.
Loop.Visible=True 'Erro.
Para fazer referência a formulários ou controles que tenham o mesmo nome que uma palavra-chave restrita, você deve qualificá-los ou colocá-los entre colchetes []. Por exemplo, o código a seguir não apresentará erros.
MyForm.Loop.Visible=True 'Usar nome do formulário
'Qualifique-o.
[Loop].Visible=True 'colchetes
'Funcionou.
Os colchetes podem ser usados desta forma ao fazer referência a formulários e controles, mas não durante a declaração de variável ou definição de procedimento quando o nome da variável ou do procedimento é igual à palavra-chave restrita. Colchetes também podem ser usados para forçar o Visual Basic a aceitar nomes fornecidos por outras bibliotecas de tipos que entrem em conflito com palavras-chave restritas.
Observe que digitar colchetes é cansativo, por isso é desejável usar palavras-chave menos restritas para nomes de formulários ou controles. No entanto, se uma nova versão do Visual Basic definir novas palavras-chave que entrem em conflito com formulários ou controles existentes, você poderá usar essa técnica ao atualizar seu código para usar a nova versão. _
->