Delphi 4 Apostila Revisada

download Delphi 4 Apostila Revisada

of 179

Transcript of Delphi 4 Apostila Revisada

ApostilaDelphi 4.0

Captulo 1CAPTULO 1 ..............................................................................................................................................2 CAPTULO 01 - INICIANDO O DELPHI...............................................................................................8 ......................................................................................................................................................................8 PRINCPIOS DA PROGRAMAO WINDOWS ................................................................................................9 INICIANDO O DELPHI ...............................................................................................................................10 CRIANDO UM PRIMEIRO PROGRAMA........................................................................................................12 Propriedades do Formulrio ..............................................................................................................12 Colocando Componentes ....................................................................................................................12 Alterando as Propriedades dos Componentes ....................................................................................13 Respondendo a Eventos ......................................................................................................................13 Testando o Programa .........................................................................................................................14 Salvando o Programa .........................................................................................................................14 AMBIENTE DE PROGRAMAO ................................................................................................................14 Programao Orientada a Objeto (POO) ..........................................................................................14 EVENTOS E PROCEDIMENTOS...................................................................................................................14 COMPONENTES ........................................................................................................................................15 Viso Geral dos Componentes............................................................................................................15 PROPRIEDADES ........................................................................................................................................16 MTODOS ................................................................................................................................................16 OBJECT PASCAL E BIBLIOTECAS ..............................................................................................................17 VCL - VISUAL COMPONENT LIBRARY .....................................................................................................17 OBJETOS ..................................................................................................................................................17 RESUMO ..................................................................................................................................................17 PROJETOS ................................................................................................................................................17 Salvando o Projeto em Disco..............................................................................................................18 Comandos para trabalhar com Projetos ............................................................................................18 GRUPOS DE PROJETOS .............................................................................................................................19 Comandos para tabalhar com grupos de projetos..............................................................................19 EDIES DO DELPHI ................................................................................................................................19 CAPTULO 3 EXEMPLOS ADICIONAIS............................................................................................21 EXEMPLO: CALCULADORA ......................................................................................................................22 Criando os Componentes....................................................................................................................22 Tratando os Eventos ...........................................................................................................................23 Executando o Programa .....................................................................................................................24 Melhoras de Interface .........................................................................................................................24 Salvando o Projeto..............................................................................................................................24 CAPTULO 4 VARIVEIS E TIPOS DE DADOS ...............................................................................25 TIPOS DE DADOS......................................................................................................................................26 Tipos Numricos .................................................................................................................................26 O tipo Char .........................................................................................................................................27 O tipo String .......................................................................................................................................27 O tipo Boolean ....................................................................................................................................28 O tipo TDateTime ...............................................................................................................................28 FUNES DE CONVERSO........................................................................................................................29 OPERAES ARITMTICAS ......................................................................................................................29 TIPOS ORDINAIS ......................................................................................................................................30 ESCOPO DE VARIVEIS ............................................................................................................................31 Variveis Locais .................................................................................................................................31 Variveis Globais da Unidade............................................................................................................31 Variveis Globais do Projeto..............................................................................................................31

2

CONSTANTES ...........................................................................................................................................31 CAPTULO 5 ESTRUTURAS DE CONTROLE ..................................................................................33 INSERINDO COMANDOS COM O CODEINSIGHT ..........................................................................................34 ESTRUTURAS DE DECISO .......................................................................................................................34 O Comando if...then...else...................................................................................................................34 O Comando case...of...........................................................................................................................35 ESTRUTURAS DE LAOS...........................................................................................................................37 O comando for ....................................................................................................................................37 O comando while...do... ......................................................................................................................37 O comando repeat..until .....................................................................................................................37 OUTROS COMANDOS ...............................................................................................................................38 Comandos para sair de laos .............................................................................................................38 O comando exit ...................................................................................................................................38 CAPTULO 6 PROPRIEDADES E EVENTOS COMUNS..................................................................39 TIPOS DE PROPRIEDADES .........................................................................................................................40 PROPRIEDADES MAIS USADAS .................................................................................................................41 Propriedades para Todos os Componentes ........................................................................................41 Propriedades de Tamanho e Posio .................................................................................................41 Propriedades do Formulrio ..............................................................................................................41 Propriedades de Controles .................................................................................................................42 EVENTOS COMUNS ..................................................................................................................................43 Eventos de Mouse ...............................................................................................................................43 Eventos de Teclado .............................................................................................................................43 Eventos do Formulrio .......................................................................................................................44 Outros Eventos....................................................................................................................................44 DETALHES DO TRATAMENTO DE EVENTOS ..............................................................................................45 Tratando um Evento para Vrios Controles: OnKeyPress.................................................................45 Renomeando um Procedimento de Evento..........................................................................................45 Associando um Procedimento Existente .............................................................................................46 Eliminando um Procedimento de Evento............................................................................................46 CAPTULO 7 USANDO VRIOS FORMULRIOS...........................................................................47 CAIXAS DE DILOGO ...............................................................................................................................48 FUNES DE MENSAGEM.........................................................................................................................48 Mensagens Informativas .....................................................................................................................48 Mensagens de Confirmao................................................................................................................48 EXEMPLO: CALCDATA ............................................................................................................................49 Pedindo Confirmao ao Usurio ......................................................................................................50 Criando um Novo Formulrio ............................................................................................................50 Salvando o Projeto..............................................................................................................................51 Executando um Arquivo......................................................................................................................51 GERENCIANDO OS ARQUIVOS DO PROJETO ..............................................................................................52 Usando a Speedbar ou Menus ............................................................................................................53 Usando o Project Manager.................................................................................................................53 DEFININDO O FORMULRIO PRINCIPAL ...................................................................................................56 CAPTULO 8 ESTRUTURA DAS UNIDADES ....................................................................................57 ESTRUTURA GERAL DAS UNIDADES ........................................................................................................58 O CDIGO GERADO PELO DELPHI ............................................................................................................58 Seo de Interface...............................................................................................................................58 UNIDADES ASSOCIADAS E INDEPENDENTES.............................................................................................59 COMPILAO DE UNIDADES ....................................................................................................................60 USANDO UMA UNIDADE ..........................................................................................................................60 RESOLVENDO CONFLITOS DE NOMES ......................................................................................................62 CAPTULO 9 OUTROS TIPOS DE DADOS E DEPURAO ..........................................................63 TIPOS ENUMERADOS................................................................................................................................64

3

Operaes com Ordinais ....................................................................................................................64 Tipos Enumerados no Delphi..............................................................................................................64 TIPOS FAIXA ............................................................................................................................................65 Opo "Range Checking" ...................................................................................................................65 VETORES .................................................................................................................................................65 Vetores Estticos.................................................................................................................................65 Verificao de Faixa para Vetores .....................................................................................................66 Usando Outros Tipos de ndice ..........................................................................................................66 Vetores Dinmicos..............................................................................................................................67 Vetores Multidimensionais..................................................................................................................67 EXEMPLO: CLCULO DE MDIA ..............................................................................................................68 Declarando o Vetor ............................................................................................................................68 Adicionando um Elemento ..................................................................................................................68 Limpando a Lista ................................................................................................................................69 Calculando a Mdia dos Elementos....................................................................................................69 Testando o Programa .........................................................................................................................69 Salvando o Projeto..............................................................................................................................70 CONJUNTOS .............................................................................................................................................70 Verificando Elementos ........................................................................................................................70 Operaes com Conjuntos ..................................................................................................................70 Propriedades de Conjunto ..................................................................................................................71 DEPURAO ............................................................................................................................................72 Colocando um Ponto de Parada.........................................................................................................72 Executando Passo a Passo..................................................................................................................72 Executando At o Cursor ....................................................................................................................72 Vendo Valores de Variveis................................................................................................................73 Monitorando o Valor de uma Varivel Dinamicamente .....................................................................73 Forando a Finalizao do Programa ...............................................................................................74 Outras Ferramentas de Depurao ....................................................................................................74 10 - PROCEDIMENTOS E FUNES..................................................................................................75 PROCEDIMENTOS GERAIS ........................................................................................................................76 Criando um Procedimento Geral........................................................................................................76 UNIDADES INDEPENDENTES.....................................................................................................................76 Criando uma Unidade Independente ..................................................................................................77 Transferindo o Procedimento .............................................................................................................77 Usando a Unidade no Mesmo Projeto ................................................................................................77 Usando a Unidade em Outros Projetos ..............................................................................................77 Gerenciando um Projeto com Unidades Independentes .....................................................................78 Criando uma Biblioteca de Rotinas ....................................................................................................78 FUNES .................................................................................................................................................79 Criando uma Funo ..........................................................................................................................79 Retornando um Valor..........................................................................................................................79 Chamando a Funo...........................................................................................................................79 PASSAGEM DE PARMETROS ...................................................................................................................80 Declarao de Parmetros e Argumentos ..........................................................................................80 Tipos de Passagem..............................................................................................................................80 CAPTULO 11 OBJETOS .......................................................................................................................82 O QUE CONTM UM OBJETO....................................................................................................................83 CLASSES E OBJETOS ................................................................................................................................83 HERANA ................................................................................................................................................84 Hierarquia de Classes do Delphi........................................................................................................84 O Object Browser ...............................................................................................................................84 Simplificando o Acesso aos Campos...................................................................................................84 FORMULRIOS COMO OBJETOS ................................................................................................................86 A Classe de Formulrio ......................................................................................................................86 Procedimentos na classe de formulrio..............................................................................................87 VARIVEIS DE OBJETO ............................................................................................................................87

4

LISTAS DE STRINGS .................................................................................................................................90 Propriedades da String List ................................................................................................................90 Mtodos da String List ........................................................................................................................90 Criando String Lists Independentes....................................................................................................90 OBJETOS PREDEFINIDOS ..........................................................................................................................91 O Objeto Application ..........................................................................................................................91 O Objeto Clipboard ............................................................................................................................91 O Objeto Screen..................................................................................................................................92 CODE EXPLORER .....................................................................................................................................92 PROGRAMAO ORIENTADA A OBJETOS .................................................................................................93 CAPTULO 12 APLICAES DE BANCO DE DADOS ....................................................................95 TERMOS USADOS .....................................................................................................................................96 DESKTOP X CLIENTE/SERVIDOR ..............................................................................................................97 FORMATOS DE BANCOS DE DADOS ..........................................................................................................97 CRIANDO TABELAS..................................................................................................................................98 Definindo um Diretrio de Trabalho ..................................................................................................98 Definindo a Estrutura dos Campos.....................................................................................................98 Salvando a Tabela ..............................................................................................................................99 Entrando com Dados ..........................................................................................................................99 EXEMPLO: USANDO O DATABASE FORM WIZARD .................................................................................101 Criando um campo autoincremento..................................................................................................101 Criando um Formulrio para Acessar a Tabela com Form Wizard.................................................101 Testando o Programa .......................................................................................................................102 Salvando o Projeto............................................................................................................................102 RESUMO DOS COMPONENTES DE DADOS ...............................................................................................102 APELIDOS DE BANCOS DE DADOS ..........................................................................................................103 CAPTULO 13 RECURSOS ADICIONAIS ........................................................................................105 DEFININDO TABELAS .............................................................................................................................106 Reestruturando a Tabela "Cliente"...................................................................................................106 Criando um ndice Secundrio .........................................................................................................107 Criando a Tabela "Venda"................................................................................................................107 Criando Integridade Referencial ......................................................................................................107 Criando a Tabela de Itens.................................................................................................................107 Criando a tabela Fornecedores ........................................................................................................108 CRIANDO O MENU PRINCIPAL................................................................................................................109 O MenuDesigner: criando menus .....................................................................................................109 Tratando Eventos de Menus..............................................................................................................111 Teclas de Acesso e Teclas de Atalho.................................................................................................111 ALTERANDO O MENU PRINCIPAL...........................................................................................................112 Alterando Propriedades....................................................................................................................112 Acrescentando os formulrios anteriores .........................................................................................112 Associando os formulrios aos itens de menu ..................................................................................112 USANDO O CONTROLE DBGRID ............................................................................................................113 Criando os Componentes de Dados..................................................................................................113 Manipulando dados no DBGrid........................................................................................................113 Usando o Editor de Campos .............................................................................................................114 Alterando a Mscara de Edio .......................................................................................................114 CAPTULO 14 VALIDAO E PESQUISAS ....................................................................................116 EXEMPLO: CLIENTE POR ESTADO ..........................................................................................................117 EXEMPLO: CLIENTES - ALTERANDO ......................................................................................................117 VALIDAO DE CAMPOS E REGISTROS ..................................................................................................118 Validando Campos............................................................................................................................118 Validando Registros..........................................................................................................................120 TRATAMENTO DE EXCEES .................................................................................................................121 Visualizando Informaes sobre Excees .......................................................................................122 Classes de Excees..........................................................................................................................122

5

PESQUISAS NA TABELA ..........................................................................................................................122 Adicionando um DBGrid ..................................................................................................................122 Utilizando um ndice Secundrio......................................................................................................123 Pesquisando pelo Nome....................................................................................................................124 Pesquisando pelo Cdigo .................................................................................................................124 BLOCOS PROTEGIDOS ............................................................................................................................125 CAPTULO 15 ACESSO S/ CONTROLE DE DADOS ......................................................................126 ESTADOS DE UMA TABELA ....................................................................................................................127 MTODOS PARA PERCORRER DADOS .....................................................................................................128 Mtodos de Abertura e Fechamento .................................................................................................128 Mtodos para Percorrer Registros ...................................................................................................128 Exemplo: Percorrendo a Tabela de Itens .........................................................................................129 MTODOS PARA MODIFICAR DADOS .....................................................................................................131 Editando Registros............................................................................................................................131 Acrescentando Registros...................................................................................................................131 Excluindo Registros ..........................................................................................................................132 Outros Mtodos.................................................................................................................................132 EVENTOS DOS COMPONENTES DE DADOS ..............................................................................................134 Eventos do Componente Table..........................................................................................................134 MANIPULAO DE DATAS .....................................................................................................................135 EXEMPLO: CRIANDO FORMULRIO SEM UTILIZAR O DBNAVIGATOR......................................................137 TRATAMENTO DO ERRO 'KEY VIOLATION.' ............................................................................................140 USANDO UM CONTROLE DBLOOKUPCOMBOBOX .................................................................................140 CAPTULO 16 UTILIZANDO MESTRE/DETALHE .......................................................................142 CRIANDO UM FORMULRIO MESTRE/DETALHE .....................................................................................143 Usando o DFW para criar o formulrio...........................................................................................143 Testando o Formulrio Gerado ........................................................................................................144 Analisando o Formulrio..................................................................................................................144 Alterando Propriedades do Formulrio ...........................................................................................145 Salvando o Projeto............................................................................................................................145 USANDO TRS TABELAS NO FORMULRIO ............................................................................................146 Ligando os Componentes de Dados..................................................................................................146 Criando Controles de Dados ............................................................................................................146 Criando Campos Calculados............................................................................................................147 Usando um campo Lookup................................................................................................................147 Testando e Salvando o Projeto .........................................................................................................148 Atualizando Quantidade em Estoque ...............................................................................................149 CAPTULO 17 CONSULTAS E SQL ..................................................................................................151 EXEMPLO: USANDO CONSULTAS ...........................................................................................................152 Criando o Formulrio ......................................................................................................................152 Obtendo um Resultado Modificvel ..................................................................................................153 Simplificando o Select.......................................................................................................................153 Alterando a Consulta ........................................................................................................................153 Alterando a Consulta Dinamicamente ..............................................................................................153 Alterando Outras Partes da Consulta...............................................................................................155 EXEMPLO: CONSULTANDO VRIAS TABELAS ........................................................................................156 Consulta com Duas Tabelas .............................................................................................................156 Consultando Trs Tabelas ................................................................................................................157 Usando Campos Calculados no SQL................................................................................................157 Usando Funes de Resumo .............................................................................................................157 OUTROS COMANDOS SQL .....................................................................................................................158 Testando Comandos SQL..................................................................................................................158 Alterando Registros ..........................................................................................................................158 Excluindo Registros ..........................................................................................................................159 Inserindo e Copiando Registros........................................................................................................159 Executando um Comando de Atualizao.........................................................................................159

6

CONSULTAS NUM AMBIENTE CLIENTE/SERVIDOR .................................................................................159 MTODOS E EVENTOS DO COMPONENTE QUERY ...................................................................................160 CAPTULO 18 INSTALADOR E ALIAS LOCAL .............................................................................161 USANDO UM ALIAS LOCAL ....................................................................................................................162 Usando o Componente Database......................................................................................................162 Alterando os Componentes de Dados ...............................................................................................163 Alterando o Caminho em Tempo de Execuo .................................................................................163 CRIANDO UM PROGRAMA INSTALADOR .................................................................................................164 Iniciando o InstallShield ...................................................................................................................164 Criando um Instalador......................................................................................................................164 Definindo as Opes de Instalao ..................................................................................................165 Definindo os Arquivos Utilizados .....................................................................................................165 Escolhendo as caixas de dilogo ......................................................................................................165 Definindo os cones do Programa ....................................................................................................166 Gerando os disquetes de instalao..................................................................................................167 CAPTULO 19 RELATRIOS.............................................................................................................167 CONCEITOS DO QUICKREPORT ..............................................................................................................168 A pgina QReport .............................................................................................................................168 Construindo o Relatrio ...................................................................................................................169 USANDO O QUICKREPORT WIZARD .......................................................................................................170 Imprimindo o Relatrio ....................................................................................................................170 Analisando o Relatrio Gerado ........................................................................................................171 CRIANDO UM RELATRIO COM VRIAS TABELAS .................................................................................171 Inserindo um Nmero de Pgina ......................................................................................................172 Visualizando o Relatrio...................................................................................................................173 Acrescentando Vrias Tabelas ao Relatrio.....................................................................................173 Conectando as Tabelas .....................................................................................................................173 Criando Sub-detalhes para Vendas ..................................................................................................174 Criando Sub-detalhes para Itens de Venda ......................................................................................174 Formatando os Campos....................................................................................................................175 Criando um Campo Calculado .........................................................................................................175 Criando um Sub-total........................................................................................................................177 Chamando o Relatrio a Partir do Menu .........................................................................................177 BIBLIOGRAFIA SUGERIDA ......................................................................................................................179

7

Captulo 01 - Iniciando o DelphiPrincpios da Programao Windows Iniciando o Delphi Criando um Primeiro Programa

8

Princpios da Programao WindowsAntes de comear a trabalhar com o Delphi, importante ter algumas noes do que est envolvido na programao Windows e no Delphi em particular. Algumas coisas tornam a tarefa de programao no Windows bem diferente de outros ambientes: Independncia do Hardware:No Windows, o acesso aos dispositivos de hardware feito com intermdio de drivers fornecidos pelo fabricante de hardware, o que evita que o programador tenha que se preocupar com detalhes especficos do hardware. Configurao Padro: O Windows armazena centralmente as configuraes de formato de nmeros, moeda, datas e horas, alm da configurao de cores, livrando o programador de se preocupar com esses detalhes especficos. Multitarefa: No DOS, um programa geralmente toma o controle da mquina s para si, e outros programas no rodam enquanto isso. J no Windows vrios programas so executados de maneira simultnea e no h como evitar isso. Controle da Tela: No DOS geralmente um programa ocupa todo o espao de telas, e o usurio v e interage apenas com aquele programa. J no Windows [janelas], toda informaes mostradas e todas entradas recebidas do usurio so feitas por meio de uma janela, uma rea separada da tela que pode ser sobreposta por outras janelas (de outros programas por exemplo). Padres de Interface: No Windows, todos os elementos de interface aparecem para o usurio e interagem da mesma forma. Alm disso, existem padres definidos pela Microsoft que so recomendados para conseguir a consistncia entre aplicativos. Falaremos de alguns deles no curso, mas a melhor forma de aprend-los praticar com os aplicativos Windows mais usados do mercado. Cooperao com o Sistema: Num programa DOS, a execuo segue uma ordem prestabelecida pelo programador, e o programa s chama o sistema operacional quando precisa de alguma coisa dele. J no Windows, o programa deve responder a eventos, que so ativados pelo Windows quando alguma coisa acontece externamente (ou seja, uma ao do usurio, ou uma aviso do sistema). Isso, como veremos, afeta radicalmente o estilo de programao e a forma de pensar no programa. A sequncia de execuo do programa depende da sequencia de eventos.

9

Iniciando o DelphiInicie o Delphi atravs do seu cone no Windows, se voc j tiver um atalho para o do Windows e depois em programa na sua rea de trabalho. Seno, clique no menu Programas|Borland Delphi 4|Delphi 4. A tela bsica do Delphi tem os seguintes elementos:

Ao pressionar F12 ir aparecer a seguinte tela:+

Nota: para criar um atalho para o Delphi, consulte a documentao do Windows. Localize o arquivo executvel DELPHI32.EXE sob o diretrio de instalao. Formulrio (Form1): Um formulrio a janela do seu programa, o local onde voc projeta a sua interface com o usurio. Durante o projeto, o formulrio aparece de forma praticamente

10

idntica ao que o usurio final ver, mas permite que voc faa alteraes no posicionamento dos componentes (elementos de tela) e em suas propriedades (caractersticas); Speedbar: Uma barra de botes na janela principal do Delphi, que contm botes para executar os comandos mais usados do Delphi; Paleta de Componentes: Tambm na janela principal, dividida em vrias pginas, onde cada uma contm vrios tipos de componentes que voc pode escolher para colocar no formulrio; Object Inspector: [inspetor de objeto]: Dividido em duas pginas, onde uma contm as propriedades do componente selecionado, e a outra uma lista de eventos associados a este componente, que define as aes externas as quais voc pode tratar; Menu Principal: Contm os comandos do ambiente de programao do Delphi, por exemplo, para tratamento de arquivos, definio de opes, etc. Code Editor: (Aparece atrs do formulrio, inicialmente). Contm o cdigo-fonte do projeto. Com ele, voc pode facilmente mudar entre os vrios arquivos utilizados no projeto ou mesmo abrir um arquivo de texto qualquer.

11

Criando um Primeiro ProgramaNo Delphi voc inicia o projeto da sua aplicao escolhendo componentes, que so os objetos de interface com o usurio e alterando as caractersticas desses componentes como por exemplo, cor, tamanho, fonte de caracteres, atravs das propriedades. Por ltimo, voc decide quais eventos voc quer tratar e escreve o cdigo de programa que executado por esses eventos. Nosso primeiro programa ir mostrar uma lista de nomes e permitir ao usurio adicionar itens na lista, limpar a lista e ordenar a lista em ordem alfabtica. O programa ter uma interface como a seguir, com uma lista de itens, um quadro de texto que permite digitar o prximo item da lista, e botes para manipular a lista:

Para cri-lo, precisamos alterar propriedades do formulrio e colocar componentes em cima dele.

Propriedades do FormulrioPropriedades do formulrio so as caractersticas que definem sua aparncia, e algumas vezes, seu comportamento. O Object Inspector lista todas as propriedades do formulrio, que so inicializadas com valores padro quando o projeto criado. Por exemplo, o ttulo que aparece no formulrio (inicialmente Form1) uma propriedade que voc pode alterar no Object Inspector. Selecione a propriedade Caption no Object Inspector. Clique na coluna da direita (que contm o valor da propriedade) e digite o texto Primeiro Programa Delphi. medida que voc digita, o formulrio reflete essa alterao na sua barra de ttulo.

Colocando ComponentesUm formulrio vazio no muito til, portanto vamos colocar componentes nesse formulrio. A Paleta de Componentes contm vrios cones, onde cada um representa um tipo de componente que voc pode colocar no formulrio. Ela tambm dividida em pginas, que podem ser acessadas clicando no marcador de pgina correspondente. Quando voc passa o cursor do mouse por cima de um cone, ela mostra o nome daquele componente. Clique na pgina Standard e depois clique no cone (Edit). Agora clique no formulrio. Vai aparecer um quadro de edio chamado "Edit1". Depois iremos alterar esse nome padro. Para mud-lo de posio no formulrio, posicione o cursor em cima dele, pressione e segure o boto do mouse, e arraste-o para outra posio, ao arrastar o componente ser mostrado as coordenadas (x, y) indicando a posio do componente no formulrio . Ou, se preferir, usando o teclado, segure a tecla [Ctrl] e use as teclas de seta para moviment-lo. Agora precisamos de um quadro de lista. Clique no cone (ListBox) da paleta de componentes, na mesma pgina Standard, depois clique no formulrio, um pouco abaixo do quadro de texto (no se preocupe com alinhamento). Para aumentar seu tamanho lateral, clique na ala mais direita, segure o boto do mouse e arraste-o para a direita. Ou, usando o teclado, segure [Shift] e pressione a seta para a direita.

12

Vamos colocar trs botes no formulrio. Como so vrios controles do mesmo tipo, podemos fazer o seguinte: segure [Shift] e clique no cone (Button) da paleta de componentes. Agora clique trs vezes no formulrio, colocando um boto abaixo do outro. No se preocupe com o alinhamento por enquanto Depois clique no cone do ponteiro ( formulrio deve ficar parecido com o seguinte: ).O

Clique no boto (Run) da SpeedBar. O Delphi ir compilar o programa, gerando um arquivo executvel e vai iniciar sua execuo. Durante a execuo, voc pode digitar texto no quadro de texto, e clicar nos botes. Depois tecle [Alt+F4] para terminar o programa (ou feche a janela com o mouse). Repare que o Delphi cuida de toda a parte de interface com o usurio. Voc no precisa escrever cdigo para mostrar uma janela na tela nem seus componentes. Mas para definir o que o programa vai fazer, isto , como ele reage aos eventos externos, voc precisa escrever cdigo.

Alterando as Propriedades dos ComponentesPara mudar a aparncia dos componentes, alteraremos suas propriedades. importante notar que o Object Inspector disponibiliza as propriedades do componente que estiver selecionado, ou seja, com as alas de marcao. Quando voc clica em um componente com o mouse, ele selecionado e voc pode alterar suas propriedades. Quando voc clica numa regio vazia do formulrio (ou pressiona [Esc]), voc pode alterar as propriedades do formulrio. Selecione o quadro de texto e depois clique na propriedade Text no Object Inspector. Apague o valor atual (que Edit1). Assim esse componente no vai mais comear mostrando "Edit1" no seu contedo. Agora clique no primeiro boto (Button1) e altere sua propriedade Caption para Adicionar. Isso define o texto do boto. Clique no segundo boto (Button2) e altere Caption para "Ordenar" e no terceiro boto, altere Caption para "Limpar".

Respondendo a EventosTodo o cdigo no Delphi executado, direta ou indiretamente, em resposta a eventos. Quando voc (ou o usurio) clica em um boto por exemplo, isso provoca um evento. Se existir um trecho de programa associado a esse evento (um procedimento de evento), esse trecho ser executado. Seno, o evento no vai fazer nada. Clique no boto Adicionar para selecion-lo. No Object Inspector, clique no marcador de pgina "Events". Essa pgina lista quais eventos so reconhecidos pelo componente. O primeiro deles, OnClick, acontece quanto o boto recebe um clique do mouse. Clique duas vezes na coluna da direita, e o Delphi vai abrir o editor de cdigo, contendo o seguinte texto: procedure TForm1.Button1Click(Sender: TObject); begin end; O cursor est posicionado entre os delimitadores begin e end, indicando onde voc deve escrever o cdigo, que ser executado ao clicar no boto Adicionar. Escreva o seguinte (diferenas entre maisculas e minsculas no importam): ListBox1.Items.Add(Edit1.Text);

13

Edit1.Clear; Pressione a tecla [F12] para voltar ao formulrio. Clique no boto Ordenar e depois clique duas vezes no valor do evento OnClick. Isso vai gerar um tratador de evento para o boto Ordenar. Escreva o seguinte entre o begin e o end: ListBox1.Sorted := True; Finalmente retorne ao formulrio, selecione o boto Limpar e siga o mesmo processo. Digite o seguinte cdigo: ListBox1.Clear; ListBox1.Sorted := False;

Testando o ProgramaAgora execute o programa clicando no boto . Voc pode digitar um valor no quadro de texto, e clicar no boto Adicionar (ou teclar [Enter]). O item digitado ser acrescentado lista. Depois de acrescentar alguns itens, clique em Ordenar. A lista ser colocada em ordem alfabtica. Para esvaziar a lista, clique em Limpar.

Salvando o ProgramaPara que voc possa usar esse programa mais tarde, clique em File|Save All (menu File, item Save All) ou no boto da SpeedBar. O Delphi vai pedir um nome para o arquivo do formulrio. Digite AULA1 e clique Ok. Depois o Delphi vai perguntar o nome do arquivo de projeto. Digite AULA1P e clique Ok (no use o mesmo nome que o formulrio). Nota: Voc tambm pode clicar no formulrio ou no editor de cdigo com o mouse, mas geralmente o mtodo mais rpido de alternar entre os dois usar a tecla [F12].

Ambiente de ProgramaoO Delphi possui um ambiente integrado de desenvolvimento (IDE - Integrated Development Environment) onde voc utiliza a maioria das funes de desenvolvimento. Nesse ambiente voc projeta o programa e depois executa o programa para testar o seu funcionamento. Sempre que voc executa o programa, o Delphi compila o programa, isto , gera um programa executvel com cdigo de mquina a partir do programa fonte que voc criou. Esses programas executveis se tornam independentes do Delphi e podem rodar separadamente.

Programao Orientada a Objeto (POO)Para compreendermos melhor ambiente de desenvolvimento do Delphi necessrio que voc entenda os conceitos de Programao Orientada a Objetos(POO). A POO um forma de gerenciar a complexidade do programa, de forma que facilite a manuteno e a reutilizaco de partes do programa. O programa dividido em partes relativamente isoladas que podem ser alteradas de forma independente e podem ser reutilizadas mais facilmente em outros programas.Estas partes so chamadas de Classes (Iremos discutir em Objetos).

Eventos e ProcedimentosProgramas DOS convencionais seguem um fluxo seqencial, em que um comando segue o outro de forma definida pelo programador. O usurio deve agir de acordo com os "modos" de operao do programa e saber o momento certo para entrar com comandos. Programas em uma interface multitarefa, como o Windows, apresentam todas as opes ao usurio, para que ele possa selecion-los na ordem em que desejar. O Windows intercepta as aes realizadas pelo usurio e informa ao programa onde, como e quando elas acontecem. O programa deve reagir de forma apropriada nos momentos determinados pelo usurio. Cada resultado de uma ao do usurio chamada de evento, por exemplo: clique do mouse, digitao de uma tecla, etc.

14

Como conseqncia, o programa no mais um bloco nico, mas dividida em pequenas sees, cada uma responsvel pela tarefa a realizar em resposta a um determinado evento. Essas sees so os procedimentos de evento do Delphi. Cada evento associado a um componente e cada componente tem uma lista de eventos que so acionados por ele em situaes especficas (o Object Inspector mostra esta lista na pgina Events). Com isso, o projeto de um programa feito iniciando pelo projeto de sua interface (seus componentes) e depois escrevendo-se os procedimentos de evento. No obrigatrio definir todos os eventos para um componente. Se no existe um procedimento para um evento especfico, simplesmente no acontece nada para aquele evento. Como veremos mais tarde, alm dos procedimentos de evento, voc pode dividir o seu programa, usando rotinas auxiliares. Nota: para melhor utilizao do ambiente de programao e da linguagem, consulte o help do Delphi. Os procedimentos de evento so armazenados na unidade, que um arquivo de texto associado ao formulrio. Voc pode editar todas as unidades no editor de cdigo do Delphi.

Componentes

A paleta de componentes lista tipos de componentes que podem ser utilizados no programa, como botes de pressionar, barras de rolagem, grades de dados e editores de texto. Para criar um componente, voc seleciona o cone correspondente e depois clica no formulrio para coloc-lo. Voc tambm pode cri-lo j com o tamanho desejado, pressionando o boto do mouse sobre o formulrio e arrastando para definir o tamanho. Nota: todos os componentes so descritos em detalhe no Help do Delphi, com todas suas propriedades, mtodos e eventos. Clique em um cone de componente e pressione F1 para ver o texto de help sobre ele. Note que h mais pginas do que cabe na tela em dado momento. Para ver as pginas que restantes, como Dialogs, Midas, Win 3.1, Samples e ActiveX, clique nos botes ficam na extremidade direita da janela do Delphi. Alguns componentes no aparecem para o usurio durante a execuo do programa, apesar de aparecer no formulrio, e serem manipulados pelo cdigo do programa. So os componentes no-visuais (veremos alguns deles no decorrer do curso). Mas a maioria aparece como um objeto de interface durante a execuo. So os controles (ou componentes visuais). importante lembrar que todo controle um componente, mas nem todo componente um controle. O prprio formulrio tambm considerado um componente, embora seja tratado de forma diferente, e geralmente contm vrios outros componentes.

Viso Geral dos ComponentesA paleta de componentes se divide em vrias pginas para facilitar a organizao. Ns veremos alguns deles no curso, mas importante ter uma noo geral do contedo dessas pginas. Standard: componentes padro da interface do Windows, usados para barras de menu, exibio de texto, edio de texto, seleo de opes, iniciar aes de programa, exibir listas de itens etc. Geralmente so os mais usados. Additional: componentes especializados que complementam os da pgina Standard. Contm botes com capacidades adicionais, componentes para exibio e edio de tabelas, exibio de imagens, grficos etc. Win32: componentes comuns de interface que so fornecidos pelo Windows 95/NT para os programas. Contm componentes para dividir um formulrio em pginas, edio de texto

15

formatado, barras de progresso, exibio de animaes, exibio de dados em rvore ou em forma de cones, barras de status e de ferramentas etc. System: componentes que utilizam funes avanadas do sistema operacional, como temporizao, multimdia, OLE e DDE. Internet: componentes para acesso aos recursos e protocolos da Internet, como criao de pginas Web dinmicas, acesso aos protocolos FTP, NNTP, POP, SMTP, TCP, UDP. Data Access: componentes para acesso a banco de dados. Data Controls: componentes visuais para mostrar dados em aplicaes de bancos de dados. So semelhantes aos componentes padro (Standard). Decision Cube (apenas Delphi Client/Server): componentes para anlise multidimensional de dados, com capacidades de tabulao cruzada [crosstab], criao de tabelas e grficos etc. QReport: QuickReport um gerador de relatrios que acompanha o Delphi. Os componentes desta pgina permitem desenhar o seu relatrio dentro do Delphi. Dialogs: O Windows tem caixas de dilogo comuns, como veremos, que facilitam mostrar uma interface padro dentro do seu programa para as tarefas comuns, como abrir e salvar arquivos, impresso, configurao de cores e fontes etc. Esta pgina tem componentes que permitem utilizar essas caixas de dilogo comuns. Midas (apenas Delphi Client/Server e Enterprise) : componentes utilizados para criar aplicaes multi-tiered. Win3.1: Esta pgina contm controles considerados obsoletos, que esto disponveis apenas para compatibilidade com programas antigos. No crie programas novos que utilizam esses controles. Samples: contm exemplos de componentes para que voc possa estud-los e aprender a criar seus prprios componentes. O cdigo fonte desses exemplos est no subdiretrio SOURCE\SAMPLES do diretrio de instalao do Delphi. ActiveX: um componente ActiveX um tipo de componente que pode ser criado em outra linguagem e utilizado no Delphi. Esta pgina contm alguns exemplos de componentes ActiveX prontos para utilizar, que tm funes de grficos, planilha, etc.

PropriedadesComponentes tm propriedades [properties], que definem suas caractersticas especficas e eventos, que so acontecimentos externos, geralmente relacionados com aes do usurio. Por exemplo o formulrio tem como propriedades o ttulo da janela (Caption), sua cor (Color), sua posio na tela (Left e Top). Um quadro de texto tem uma propriedade que define o texto que este contm (Text), entre outras. Quando o usurio clica com o mouse em um controle, isso causa um evento OnClick, e quando ele pressiona uma tecla, causa um evento OnKeyDown (entre outros). Para alterar propriedades durante o projeto da interface, voc seleciona o componente desejado (por exemplo Edit1), depois seleciona a propriedade desejada (por exemplo, Text) no Object Inspector e digita seu valor. Durante a execuo do programa, o cdigo pode alterar uma propriedade dinamicamente (em resposta a um evento). Para isso, basta inserir no cdigo de programa um comando como o seguinte: Edit1.Text := 'Bem-vindo ao Delphi'; Nota: se voc clicar em uma propriedade e teclar [F1], o Delphi mostrar o texto de help relacionado quela propriedade.

MtodosMtodos so nomes para aes executadas por um componente. No programa anterior, por exemplo, usamos o mtodo Clear, que quando executado, limpa o contedo de um controle. Por exemplo, no programa anterior, o procedimento de evento do boto Adicionar faz: Edit1.Clear;

16

Quando esse comando executado, o controle esvaziado. Repare que todo mtodo chamado usando-se primeiro o nome do componente, depois o nome do mtodo, da mesma forma que uma propriedade. Mtodos s tem utilidade no cdigo do programa, por isso no aparecem no Object Inspector (mas veremos mais tarde que possvel consultar a lista de mtodos disponveis).

Object Pascal e BibliotecasTodo cdigo de programa no Delphi escrito em Object Pascal, que a linguagem de programao usada por ele. Essa linguagem derivada da linguagem Pascal original, e tem sido aperfeioada pela Borland por vrios anos, nas diversas verses do Turbo Pascal. A definio da linguagem contm as regras de sintaxe e os tipos de dados bsicos que voc pode usar. A maioria das rotinas teis do Delphi no fazem parte da linguagem em si, mas so implementados pela biblioteca de tempo de execuo [run-time library] do Delphi.

VCL - Visual Component LibraryOs componentes, suas propriedades, eventos e mtodos so implementados pela biblioteca visual de componentes [Visual Component Library], tambm chamada VCL. O cdigo fonte da VCL fornecido com o Delphi e permite voc modificar os componentes ou estudar como eles foram feitos. Voc tambm pode criar novos componentes, escrevendo-os em Object Pascal. O prprio Delphi foi criado em Delphi, utilizando-se a linguagem Object Pascal e verses sucessivas do ambiente. Nota: se voc digitar apenas o nome do componente e um ponto, o CodeInsight do Delphi mostrar a lista das propriedades e mtodos disponveis. Ao continuar digitando, feita uma busca incremental nessa lista. Nota: para obter ajuda sobre qualquer elemento do Object Pascal ou da VCL, clique na palavra desejada, no editor de cdigo e pressione a tecla [F1].

ObjetosComponentes so apenas um tipo de objetos, que um termo bastante utilizado no Delphi. O prprio nome Object Pascal indica que se trata de uma linguagem orientada a objetos. Um objeto, numa definio prtica, uma rea de memria separada, contendo dados (variveis) e o cdigo que manipula esses dados. No caso de um componente, os dados aparecem como propriedades e o cdigo que os manipula composto de mtodos. Basicamente todo objeto contm propriedades e mtodos, mesmo que ele no possa ser colocado num formulrio e editado. Mais tarde veremos vrios exemplos de objetos que no so componentes

ResumoPara dominar a programao em Delphi, preciso conhecer os componentes da VCL, os objetos das bibliotecas do Delphi e a linguagem Object Pascal, que o fundamento no qual tudo se baseia.

ProjetosO Delphi trata cada aplicativo que voc cria como um projeto, que uma lista dos arquivos necessrios para construir um programa. Para saber quais so os formulrios, as unidades correspondentes, etc., o Delphi nos fornece o Project Manager, que pode ser acessado atravs

17

do Menu View, opo Project Manager. A janela de ttulo do Delphi sempre tem, no ttulo, o nome Delphi - Nome do projeto. Um projeto em Delphi se compe de: Formulrios: um formulrio uma janela que projetamos no Delphi. Normalmente toda aplicao contm um ou mais formulrios. Cada formulrio tem uma unidade associada, que um arquivo contendo todo o cdigo associado a eventos; Unidades independentes: uma unidade independente contm cdigo do Delphi que no est necessariamente associado a nenhum formulrio ou controle em particular. Unidades independentes geralmente contm variveis e rotinas usadas por toda aplicao. Lembre-se que um projeto apenas uma lista dos arquivos usados para construir o programa, mas no os contm propriamente.

Salvando o Projeto em DiscoAo gravar o projeto em disco, o Delphi cria vrios arquivos: dois para o projeto em si, e outros para cada formulrio e cada unidade independente usada. Os arquivos tm as seguintes extenses: Projeto: .DPR e .OPT (opes) Formulrios: .DFM e .PAS (unidade associada) Unidades independentes: .PAS Alm disso, o Delphi gera outros arquivos no diretrio do projeto, a maioria deles quando voc compila o programa (por exemplo, automaticamente ao executar): Unidade compilada: nome-da-unit.DCU Arquivo de recursos: nome-do-projeto.RES Programa compilado: nome-do-projeto.EXE Arquivos de backup: *.~PA, *.~DF, *.~DP Para salvar o projeto, juntamente com seus arquivos, use o item de menu File|Save All do Delphi. Da primeira vez que voc salva o projeto, o Delphi pede o nome do arquivo de formulrio (o padro "Unit1.PAS") e o nome do arquivo de projeto (o padro "Project1.dpr"). No necessrio digitar as extenses, pois o Delphi cuida de acrescent-las. Quando voc salva um arquivo de formulrio, o Delphi salva dois arquivos: a unidade associada ao arquivo [unit], com uma extenso .PAS, que um arquivo contendo todo o cdigo de programa associado aos eventos, bem como todo o cdigo gerado pelo Delphi, e outro arquivo contendo as propriedades do formulrio e de todos os componentes, com o mesmo nome de arquivo, mas com a extenso .DFM. O arquivo de projeto um arquivo .DPR, que corresponde ao cdigo principal do programa executvel. A partir desse arquivo, o Delphi localiza os outros arquivos necessrios. Nota: o nome do arquivo de projeto deve ser diferente de qualquer unidade do projeto.

Comandos para trabalhar com ProjetosVrios comandos do menu File do Delphi so usados para trabalhar com os projetos e os arquivos que fazem parte deles: Cria um novo projeto vazio New Application Cria um novo formulrio e sua unidade New Form Abre um projeto ou unidade existente. Open... Mostra os arquivos utilizados recentemente e permite reabrir qualquer um deles. Reopen Salva o arquivo atual (unidade). Se esta a primeira vez que est sendo salvo, Save pergunta pelo nome. Salva uma cpia do arquivo atual com outro nome ou em outro diretrio. Save As... Salva o arquivo de projeto. Sempre pede o nome. Save Project As... Salva todos os arquivos do projeto e o prprio arquivo de projeto. S pede nomes de Save All arquivos para os que no foram salvos ainda.

18

Fecha o arquivo atual. Close Fecha todos os arquivos e o projeto atual. Close All Alm desses comandos, existem cones na SpeedBar que podem ser usados para essas tarefas: Equivale a File|Open, mas mostra apenas os arquivos de projeto. (Open project) O mesmo que File|Save all (Save all) O mesmo que File|Open Project... (Open Project) O mesmo que File|Save (Save ) Adiciona um arquivo ao projeto atual. (Add file to project) Remove um arquivo do projeto atual. (Remove file from project)

Grupos de ProjetosO delphi 4.0 permite trabalhar com mais de um projeto aberto, esses projetos podem ser definidos em um grupo. No menu View|Project Manager informado os projetos que pertencem a um determinado grupo.O arquivo de um grupo tem a extenso ".BPG"

Comandos para tabalhar com grupos de projetosVrios comandos do menu Project so usados para trabalhar com grupos de projetos , os principais so: Adiciona um novo projeto ao grupo. Add New Project Adiciona um projeto existente ao grupo Add Existing Project Compila somente as units que foram modificadas, do projeto ativo. Compile (Projeto Atual) Compila todas as units do projeto ativo, independente se foram ou no Build ( Projeto modificadas. Atual) Compila somente as units que foram modificadas, dos projetos pertencentes Compile All ao grupo. Projects Compila todas as units dos projetos pertencentes ao grupo, independente se Build All Projects foram ou no modificadas.

Edies do DelphiO Delphi est atualmente na verso 4. Essa verso geralmente compatvel com programas desenvolvidos nas verses anteriores, embora alguns necessitem de modificao para funcionar, especialmente os feitos para a verso 1.0. importante saber tambm que existem vrias edies diferentes do Delphi, desde a Standard (a mais simples), passando pela Professional, que tem mais recursos, at a edio Client/Server Suite, mais sofisticada e com recursos teis para grandes empresas: Standard: muito limitada em recursos. Indicada apenas para quem tem interesse em desenvolvimento de pequenos programas ou para fins de aprendizado. Professional: inclui mais recursos que a edio Standard. Recomendada para desenvolvedores profissionais. Client/Server : inclui mais recursos que a Professional, especificamente voltados para grandes desenvolvedores que utilizam bancos de dados no padro cliente/servidor.

19

Note que o Delphi 4 s funciona para ambientes de 32 bits, ou seja, Windows 95/98/etc. e Windows NT. Se voc quiser desenvolver programas compatveis com Windows 3.x, voc deve utilizar a verso 1.0.

20

Captulo 3 Exemplos AdicionaisExemplo: Calculadora

21

Exemplo: CalculadoraO nosso objetivo criar uma calculadora simples, que apenas soma dois nmeros fornecidos e mostra o resultado, semelhante figura:

Criando os ComponentesPara comear, inicie o Delphi ou, se o Delphi estiver aberto, crie um novo projeto com File |New Application e altere a propriedade Caption da janela principal (Form1) para "Calculadora". Agora grave o projeto usando File | Save All no menu do Delphi. D os nomes de CALC ao formulrio e CALCP ao projeto. Isso vai salvar trs arquivos em disco, como j vimos: CALC.PAS A unidade unidade associada ao formulrio CALC.DFM Contm a definio do formulrio e seus controles. CALCP.DPR O arquivo de projeto, que lista os nomes dos outros. D dois cliques no cone Edit para criar um quadro de edio no formulrio. Mova-o at o topo do formulrio e altere a sua propriedade Name, para "editOperando1". A propriedade Name determina o nome que ser usado no programa para manipular esse componente, que ser usado para receber o primeiro operando digitado. Repita as mesmas aes para criar outro quadro de texto para o segundo operando. Ele dever ficar logo abaixo do primeiro. D o nome "editOperando2". Agora crie um boto de comando, com um clique duplo na ferramenta . Altere o seu tamanho para ficar igual ao dos quadros de texto. Nota: Quando voc cria um componente, ele recebe um nome default como Edit1, Button1, etc. recomendvel dar um nome mais descritivo para que seja mais fcil entender o programa mais tarde. Nota: No curso adotaremos um padro para nomes de componentes: um prefixo de trs ou quatro letras que diz o tipo de componente (edit para Edit, btn para Button, etc.) seguido de um nome descritivo (no caso, Operando1). Veremos que esse padro facilita a compreenso dos programas.

Altere sua propriedade Caption para "=" (sinal de igual). Altere Name para "btnCalcula". Finalmente crie um quadro de texto, posicionando-o abaixo do boto de comando, que vai conter o resultado. D o nome de "editResultado".

22

Agora, para mostrar o sinal de "+" vamos usar um componente Label (rtulo), que apenas mostra um texto para o usurio, no permitindo alterao. Selecione o cone e desenhe um rtulo esquerda do editOperando2, como na figura. Altere sua propriedade Caption para conter um sinal de +. Para fazer com que esse sinal fique maior, selecione a propriedade Font, que corresponde s caractersticas do texto, e clique duas vezes do seu lado direito. Selecione "MS Sans Serif" na lista de fontes e um tamanho maior na lista "Tamanho". Depois clique Ok.

Tratando os EventosA interface da calculadora est pronta, mas ela ainda no executa a funo desejada. Precisamos acrescentar cdigo que leia os dois operandos, some os seus valores e coloque o resultado no ltimo quadro de texto. Clique duas vezes no boto 'btnCalcula', no formulrio. Isso vai criar um tratador de eventos para o evento padro do boto, que o evento OnClick. O Delphi vai gerar o seguinte cdigo: procedure TForm1.btnCalculaClick(Sender: TObject); begin end; Para fazer o clculo precisaremos de variveis. Uma varivel uma rea de memria que tem um nome e armazena um determinado valor. No Delphi, toda varivel tambm tem um tipo, que determina quais os valores que ela pode conter. Depois veremos todos os tipos de dados em detalhes, mas por enquanto, usaremos o tipo de dados 'double', que permite armazenar valores numricos com parte fracionria, com a preciso de 15 a 16 dgitos significativos. Nota: Voc pode tambm selecionar o evento no Object Inspector e criar o tratador a partir do nome dele, mas para o evento padro, mais rpido um clique duplo no prprio componente. Variveis so declaradas com a palavra var, informando-se o nome e o tipo das variveis. Antes da palavra reservada begin, acrescente o seguinte: var op1, op2: double; res: double; Isso declara trs variveis: 'op1', 'op2' e 'res', todas do tipo double. Repare que duas variveis do mesmo tipo podem ser declaradas separando-as por vrgula antes do tipo ou em uma declarao separada.No necessrio repetir o var para vrias declaraes, pois elas terminam quando se encontra o begin. Agora vamos utilizar essas variveis para obter os valores digitados pelo usurio. Para ler o valor digitado em um controle Edit, devemos ler a propriedade Text, s que essa propriedade tem um valor alfanumrico (pode conter letras e nmeros), logo precisamos convert-la para numrico. Isso feito com a funo StrToFloat: op1 := StrToFloat(editOperando1.Text); op2 := StrToFloat(editOperando2.Text); Depois basta somar as variveis e mostrar o resultado, utilizando novamente uma funo de converso: res := op1 + op2; editResultado.Text := FloatToStr(res); O resultado final, com todo o cdigo acrescentado, ser o seguinte: procedure TForm1.btnCalculaClick(Sender: TObject); begin op1 := StrToFloat(editOperando1.Text); op2 := StrToFloat(editOperando2.Text); res := op1 + op2; editResultado.Text := FloatToStr(res); end; Repare que foi utilizada a identao (deslocamento direita) dos comandos, mas isso no obrigatrio no Delphi. Foi utilizado apenas para facilitar a legibilidade. Nota: Nomes de variveis em Object Pascal podem ter at 63 caracteres e podem conter letras (A-Z, a-z), nmeros e o caractere '_'. O primeiro caractere no pode ser nmero. O Object Pascal no diferencia maisculas de minsculas (no case-sensitive).

23

Executando o ProgramaExecute o programa com o boto ou a tecla [F9]. Digite um nmero no editOperando1 e outro no editOperando2 e depois clique no btnCalcula. Repare que voc pode usar a tecla [Tab] para passar de um controle para outro utilizando o teclado (e no [Enter], como no DOS). O controle que responde s teclas em determinado momento tem o foco de teclado. Cada controle indica o foco de forma diferente. Por exemplo, um controle Edit mostra o cursor de texto quando ele tem o foco, j um controle Button mostra um retngulo tracejado em volta do texto. Como veremos, esta ordem de foco pode ser alterada.

Melhoras de InterfaceAlguns detalhes podem ser melhorados: primeiro, o quadro de edio 'editResultado' no deveria receber o foco quando o usurio pressiona [Tab] e no deveria permitir edio do texto, pois no faz muito sentido. Para isso, selecione o controle e altere sua propriedade TabStop para False. Voc pode fazer isso selecionando o valor a partir da lista (com o boto de seta) ou com um clique duplo no valor da propriedade, que alterna de True para False. Essa propriedade, quando False, faz com que o controle seja "pulado" pela tecla [Tab]. Tambm altere a propriedade ReadOnly para True, o que faz com que o controle no permita edio de seu valor. Outra mudana: como o usurio no usar a tecla [Enter], podemos fazer com que ela acione o boto "=". Basta alterar a propriedade Default do boto 'btnCalcula' para True (verdadeiro). Isso faz com que ele seja o boto default, que sempre acionado quando o usurio tecla [Enter]. Execute o programa e teste as modificaes. Ao executar o projeto podemos observar que os quadros de edio 'editOperando1', 'editOperando2' e 'editResultado' aparecem com seus respectivos nomes , o ideal seria aparecer inicialmente sem nenhuma informao, para fazer esta modificao vamos retornar ao projeto e alterar a propriedade Text de cada componente edit . a propriedade Text que indica o contedo do componente naquele momento, ao criar o componente edit e modificar a propriedade Name o delphi automaticamente coloca o mesmo contedo desta propriedade na propriedade Text, caso esta no tenha sido modificada antes.

Salvando o ProjetoPara salvar o projeto e todos os arquivos, basta usar File|Save All ou clicar no boto da SpeedBar. Com isso o Delphi vai salvar todas as alteraes feitas no projeto, como foi informado o nome do projeto e da unit ele no ir pedir novamente.

24

Captulo 4 Variveis e Tipos de DadosTipos de Dados Funes de Converso OPeraes Aritmticas Tipos Ordinais Escopo de Variveis Constantes

25

Tipos de DadosToda varivel tem um tipo, que determina quais os valores que voc pode colocar nessa varivel e quais as operaes que podem ser executadas sobre ela. Uma varivel de um tipo numrico, por exemplo, s pode receber valores numricos. Esses valores podem ser constantes, valores de outras variveis, ou expresses com operaes sobre valores. Para colocar um valor em uma varivel, usa-se o operador de atribuio: ':=' (dois-pontos-igual), que lido como "recebe". Por exemplo: procedure TForm1.Button1Click(Sender: TObject); var a: integer; { 'a' uma varivel do tipo Integer } b: integer; { 'b' idem } begin a := 2; b := a; b := b + 3; end; Geralmente, com algumas excees, uma varivel de um determinado tipo s pode receber valores deste tipo. No permitido, por exemplo, o seguinte: a := 'Nome'; ...pois apenas valores numricos podem ser colocados na varivel 'a'. Existem vrios tipos de dados numricos, e cada um tem uma determinada faixa de valores e ocupa um certo espao de memria. No permitido colocar em uma varivel um valor que esteja fora da faixa do seu tipo.

Tipos NumricosA linguagem Object Pascal tem vrios tipos de dados para variveis numricas, que so os seguintes: Tipo Bytes Faixa de Valores Preciso(dgitos) Tipos Inteiros Shortint 1 -128 a 127 N/A Byte 1 0 a 255 N/A Smallint 2 -32768 a32767 N/A Word 2 0 a 65535 N/A Integer 4 -2 bilhes a 2 bilhes N/A (-2.147.483.648 a 2.147.483.647) Longint 4 -2.147.483.648 a 2.147.483.648 N/A Cardinal 4 0 a 4.294.967.295 N/A Longword 4 0 a 4.294.967.295 N/A Int64 8 - 2 63 a 2 63 N/A Tipos Reais Single Real48 Real Double Comp Currency Extended 1.5x10-45 a 3.4x1038 2.9x10-39 a 1.7x1038 5x10-324 a 1.7x10308 5x10-324 a 1.7x10308 -263 a 263-922337203685477.5808 a 922337203685477.5807

4 6 8 8 8 8 10

3.6x10-4951 a 1.1x104932

7-8 11-12 15-16 15-16 19-20 19-20 19-20

*Nota: No Delphi 4, o tipo Real idntico ao tipo Double. No Delphi 3, o tipo Real tem uma faixa de valore menor que o Double e equivale ao tipo Real48 do Delphi 4. No recomendvel utilizar Real48, porque ele muito mais lento para clculos. A coluna "bytes" diz quantos bytes de memria so ocupados por uma varivel do tipo. Quanto maior a faixa de valores, em geral, maior o espao de memria. Os tipos numricos se dividem em tipos inteiros (ou integrais), que s permitem valores inteiros e tipos reais (ou de ponto flutuante [floating point]), que permitem valores com parte fracionria. Uma forma de entender a diferena que tipos inteiros so usados para contagem de

26

elementos, enquanto tipos reais so usados para medir alguma coisa. E essa medida nem sempre exata. Ao fazer clculos com variveis reais, nem sempre o resultado igual ao esperado. Por exemplo: var fracao, a, b: real; {'real' um tipo real} begin a := 1.0; { o mesmo que 1 } fracao := a / 3; b := fracao * 3; if a = b then ... { faz alguma coisa } end; Teoricamente no programa, 'a' igual a 'b', mas como tipos reais no representam valores exatos, a igualdade no exata. A varivel 'b' pode ter um valor de 0.99999999..., que ao ser comparado, no igual a 1.0. Cada tipo real tem uma certa preciso, indicada na tabela, que diz quantos dgitos significativos (dgitos excetuando zeros esquerda e direita) a varivel pode guardar, sem perda de preciso nos clculos. Assim, importante lembrar que os valores guardados em um desses tipos nem sempre exato. Geralmente os tipos inteiros so mais eficientes para clculos, e tambm mantm valores exatos para qualquer operao, desde que o resultado no saia da sua faixa de valores. Os tipos mais utilizados so smallint, para valores inteiros pequenos, integer ou Longint para valores inteiros maiores, e Double para valores reais com uma preciso razovel. Os tipos Shortint e Byte so utilizados quando preciso guardar um contador bem pequeno e necessrio economizar memria.Quando os tipos integer ou longint no so suficientes podemos usar os tipos longWord e int64 que existe somente nesta verso. O tipo Comp considerado como real, mas ele permite apenas valores inteiros. Ele til para valores monetrios.

O tipo CharO tipo Char permite criar variveis que guardam caracteres individuais, como letras, dgitos, sinais de pontuao e caracteres de controle. Cada varivel do tipo Char s pode conter um caractere. Caracteres comuns (imprimveis) so representados entre aspas simples (apstrofos): var minhaVariavel: Char; ... ... minhaVariavel := 'A'; Um caractere tambm pode ser representado atravs do cdigo ASCII/ANSI correspondente. Isso til principalmente com caracteres de controle, que no podem ser impressos nem digitados normalmente no programa, como caracteres de backspace, fim de linha, retorno de carro etc. Por exemplo, para guardar o caractere 13 (retorno de carro), usa-se a sintaxe: minhaVariavel := #13; Se o cdigo estivesse numa varivel em vez de uma constante, no pode ser usada essa sintaxe. Nesse caso, pode-se usar a funo Chr: codigoASCII := 13; minhaVariavel := Chr(codigoASCII); Nota: para ver os caracteres da tabela ANSI (exceto os de controle), use o aplicativo Mapa de Caracteres do Windows (em Iniciar | Programas | Acessrios).

O tipo StringPara guardar mais de um caractere, preciso usar o tipo String. Um valor constante do tipo String representado entre apstrofos, como por exemplo: var nome: string; begin nome := 'Joo da Silva'; Uma varivel string normalmente no tem limite de tamanho definido. O espao de memria que ela ocupa muda dinamicamente de acordo com o contedo atribudo a ela, por exemplo: nome := '123'; {3 caracteres}

27

nome := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; {26 caracs.} nome := ''; {zero caracteres} No ltimo caso, tem-se uma string vazia, que representada por '' (apstrofos sem caracteres dentro), que ocupa zero caracteres. Ela usada para "limpar" o contedo de uma varivel. Nota: O Windows usa uma tabela de caracteres chamada tabela ANSI, que associa um cdigo numrico a cada caractere. Nota: o Windows permite caracteres acentuados e especiais, como , , , , , , etc. Mas uma varivel string pode ser declarada com um tamanho fixo, da seguinte forma: var nome: string[50]; telefone: string[10]; Nesse caso, a varivel ocupa um espao fixo de memria, de acordo com o tamanho declarado. No exemplo, nome ocupa 50 caracteres e telefone ocupa 10. Se voc tentar atribuir mais caracteres do que cabe na varivel, os caracteres restantes so ignorados. Se voc atribuir menos, o tamanho lgico da string passa a ser menor que o tamanho fsico. O Object Pascal usa um byte a mais para armazenar o tamanho lgico. Voc pode concatenar (juntar) duas ou mais strings com o operador +. Por exemplo: var prefixo, linguagem, titulo: string; begin prefixo := 'Curso'; linguagem := 'Delphi'; titulo := prefixo + ' de ' + linguagem; { O resultado uma string 'Curso de Delphi' } Para obter caracteres individuais de uma string, voc pode usar o nome da varivel e mais um valor entre colchetes. Por exemplo, se voc quiser guardar o 7 caractere do nome numa varivel char, basta fazer: c := nome[7]; Existem vrias propriedades que tambm so do tipo String, como Caption e Text, por exemplo. Assim, possvel atribuir uma constante ou varivel do tipo String para elas, por exemplo: btnIniciar.Caption := '&Iniciar'; memoTempoTotal.Text := s; Nota: existem vrias funes de manipulao de strings, por exemplo, para obter uma parte de uma string. Consulte o help do Delphi e procure por 'String manipulation functions'.

O tipo BooleanVrias propriedades (e variveis tambm) podem conter os valores True (verdadeiro) e False (falso), indicando uma condio lgica ou um "flag" (ligado/desligado, habilitado/desabilitado, sim/no). Para isso utiliza-se o tipo Boolean, que s tem dois valores possveis: True e False. Por exemplo: tmrMarca.Enabled := False; O Delphi tambm utiliza o tipo Boolean internamente, ao fazer qualquer comparao lgica, em um comando if, por exemplo. E uma varivel do tipo Boolean sozinha j uma condio lgica, portanto pode ser usada em um comando if diretamente, por exemplo: var ValorCorreto: Boolean; begin ... if ValorCorreto then ... ... { Enabled uma propriedade do tipo Boolean } if tmrMarca.Enabled then ... ... end;

O tipo TDateTimePara trabalhar com datas em Delphi, voc pode usar o tipo TDateTime. Veremos as operaes de data mais em detalhe em Manipulao de datas.

28

Funes de ConversoQualquer varivel numrica pode receber um valor do mesmo tipo ou de um outro tipo numrico, exceto que uma varivel inteira (Integer, Longint, Word etc.) no pode receber um valor real, pois este pode conter uma parte fracionria. Por exemplo: var a: integer; b: longint; x: double; y: extended; begin b := 10; a := b; {ok: inteiro recebe inteiro} x := a; {ok: real recebe inteiro} y := x; {ok: real recebe real} x := 3.7; b := x; {errado: inteiro recebe real} end; Nesse caso preciso usar uma funo de converso, que ou descarta a parte fracionria (funo trunc) ou arredonda o valor (funo round): x := 3.7; a := trunc(x); {a vai valer 3} b := round(x); {b vai valer 4} Existem vrias funes que convertem valores de tipos numricos para o tipo String e viceversa. Ns j vimos algumas em programas-exemplo: var varReal: double; varInteira: integer; varString: string; begin { de String para numrico: } varReal := StrToFloat(varString); varInteira := StrToInt(varString); varInteira64 := StrToInt64(varInteira64); { de numrico para String: } varString := FloatToStr(varReal); varString := IntToStr(varInteira); {VarInteira pode ser de qualquer tipo inteiro,inclusive int64 } end; Alm dessas, existe a funo Str, do Pascal padro, que converte um nmero qualquer para String, permitindo especificar uma largura de campo (o nmero alinhado direita com espaos) e a quantidade de casas depois da vrgula. Por exemplo: segundos := 34.749; Str(segundos:7:2, s); A varivel 's' vai ser preenchida com uma string 'oo34.75' (cada o representa um espao em branco). Ou seja, vai conter no mnimo 10 caracteres, com os dgitos alinhados direita e duas casas depois da vrgula (casas a mais so arredondadas).

Operaes AritmticasOs tipos de dados inteiros suportam as operaes aritmticas usuais: soma: a := x + y; subtrao: a := x - y; multiplicao: a := x * y; diviso: a := x / y;

29

Se os dois operandos so do mesmo tipo, o resultado desse tipo. Se um deles tem uma faixa de valores maior (por exemplo, um Double e um Integer), o resultado ser do tipo deste operando (no exemplo, Double). Para os nmeros inteiros o resultado ser do tipo int64 somente se tiver uma varivel deste tipo, caso contrrio o resultado ser do tipo integer. Se os dois operandos so inteiros, o resultado ser inteiro e pode ser atribudo para uma varivel inteira. Uma exceo que no caso da diviso, o resultado sempre real, mesmo quando os dois operandos so inteiros. Portanto, no permitido fazer: a := b / c; quando 'a' uma varivel inteira. Mas pode-se utilizar uma funo de converso, como trunc: a := trunc( b /c ); ou usa-se o operador de diviso inteira div (os dois operandos dever ser inteiros), por exemplo: b := 13; c := 4; a := b div c; {retorna a parte inteira da diviso = 3} Existe tambm o operador mod, que calcula o resto da diviso: x := b mod c; {retorna o resto de 13 div 4, que = 1} Expresses podem ser combinadas com vrios operadores e operandos. Multiplicao e diviso so executadas primeiro, depois soma e subtrao, a menos que sejam usados parnteses, por exemplo: x := a + b * c; {multiplica 'b' e 'c' e soma com 'a'} y := (a + b)*c; {soma 'a' e 'b' e multiplica por 'c'}

Tipos OrdinaisUm tipo de