delphi total

296
 © 1997, 1998, 1999 GRIAULE Delphi 4 Total

Upload: thalles-santos

Post on 22-Jul-2015

3.677 views

Category:

Documents


2 download

TRANSCRIPT

1997, 1998, 1999 GRIAULE

Delphi 4 Total

1997, 1998, 1999 GRIAULE

Delphi Total Direitos Autorais 1997, 1998 para Griaule (razo social: I.A. Pesquisa & Desenvolvimento de Sistemas Ltda.) Nenhuma parte desta publicao poder ser reproduzida ou transmitida, no todo ou em parte, em qualquer forma ou meio, seja eletrnica ou mecnica, seja qual for o propsito, sem a expressa autorizao por escrito da Griaule. Delphi, Borland, ReportSmith, dBASE e InterBase so marcas registradas da Borland International, Inc. Microsoft, MS, Windows, Windows 95, Microsoft SQL Server so marcas comerciais ou marcas registradas da Microsoft Corporation. Paradox uma marca registrada da Ansa Software, uma empresa da Borland. TrueType uma marca registrada da Apple Corporation. Oracle uma marca registrada da Oracle Corporation. Todas as outras marcas e nomes de produtos so de propriedade de seus respectivos portadores. Contedo: Mrcio Pontes Marla C. vila Converso para mdia eletrnica: Renato de A. Martins

Delphi 4 Total

1997, 1998, 1999 GRIAULE

Captulo 1 Iniciando o Delphi ___________________________________________________ 1Princpios da Programao Windows _________________________________________________ 2 Iniciando o Delphi _________________________________________________________________ 3 Criando um Primeiro Programa _____________________________________________________ 5Propriedades do Formulrio _________________________________________________________________5 Colocando Componentes ___________________________________________________________________5 Alterando as Propriedades dos Componentes____________________________________________________7 Respondendo a Eventos ____________________________________________________________________7 Testando o Programa ______________________________________________________________________8 Salvando o Programa ______________________________________________________________________8

Captulo 2 Noes Bsicas______________________________________________________ 9Ambiente de Programao _________________________________________________________ 10Programao Orientada a Objeto (POO) ______________________________________________________10

Eventos e Procedimentos __________________________________________________________ 11 Componentes ____________________________________________________________________ 12Viso Geral dos Componentes ______________________________________________________________12

Propriedades ____________________________________________________________________ 14 Mtodos ________________________________________________________________________ 15 Object Pascal e Bibliotecas _________________________________________________________ 16 VCL - Visual Component Library___________________________________________________ 17 Objetos _________________________________________________________________________ 18 Resumo _________________________________________________________________________ 19 Projetos_________________________________________________________________________ 20Salvando o Projeto em Disco _______________________________________________________________20 Comandos para trabalhar com Projetos _______________________________________________________21

Grupos de Projetos _______________________________________________________________ 23Comandos para tabalhar com grupos de projetos ________________________________________________23

Edies do Delphi ________________________________________________________________ 24

Captulo 3 Exemplos Adicionais ________________________________________________ 25Exemplo: Calculadora ____________________________________________________________ 26Criando os Componentes __________________________________________________________________26 Tratando os Eventos ______________________________________________________________________27 Executando o Programa ___________________________________________________________________29 Melhoras de Interface _____________________________________________________________________29 Salvando o Projeto _______________________________________________________________________30

Captulo 4 Variveis e Tipos de Dados ___________________________________________ 31Tipos de Dados___________________________________________________________________ 32Tipos Numricos_________________________________________________________________________32 Delphi 4 Total

1997, 1998, 1999 GRIAULE O tipo Char _____________________________________________________________________________34 O tipo String ____________________________________________________________________________35 O tipo Boolean __________________________________________________________________________36 O tipo TDateTime________________________________________________________________________37

Funes de Converso_____________________________________________________________ 38 Operaes Aritmticas ____________________________________________________________ 40 Tipos Ordinais ___________________________________________________________________ 42 Escopo de Variveis_______________________________________________________________ 44Variveis Locais _________________________________________________________________________44 Variveis Globais da Unidade ______________________________________________________________44 Variveis Globais do Projeto _______________________________________________________________45

Constantes ______________________________________________________________________ 46

Captulo 5 Estruturas de Controle_______________________________________________ 48Inserindo comandos com o CodeInsight ______________________________________________ 49 Estruturas de Deciso _____________________________________________________________ 50O Comando if...then...else... ________________________________________________________________50 O Comando case...of... ____________________________________________________________________51

Estruturas de Laos_______________________________________________________________ 53O comando for __________________________________________________________________________53 O comando while...do... ___________________________________________________________________54 O comando repeat..until ___________________________________________________________________54

Outros Comandos ________________________________________________________________ 55Comandos para sair de laos________________________________________________________________55 O comando exit__________________________________________________________________________55

Captulo 6 Propriedades e Eventos Comuns_______________________________________ 56Tipos de Propriedades_____________________________________________________________ 57 Propriedades Mais Usadas _________________________________________________________ 59Propriedades para Todos os Componentes _____________________________________________________59 Propriedades de Tamanho e Posio _________________________________________________________59 Propriedades do Formulrio ________________________________________________________________59 Propriedades de Controles _________________________________________________________________61

Eventos Comuns _________________________________________________________________ 63Eventos de Mouse________________________________________________________________________63 Eventos de Teclado_______________________________________________________________________63 Eventos do Formulrio ____________________________________________________________________65 Outros Eventos __________________________________________________________________________65

Detalhes do Tratamento de Eventos _________________________________________________ 67Tratando um Evento para Vrios Controles: OnKeyPress _________________________________________67 Renomeando um Procedimento de Evento _____________________________________________________68 Associando um Procedimento Existente_______________________________________________________68 Eliminando um Procedimento de Evento ______________________________________________________69 Delphi 4 Total

1997, 1998, 1999 GRIAULE

Captulo 7 Usando Vrios Formulrios __________________________________________ 70Caixas de Dilogo ________________________________________________________________ 71 Funes de Mensagem_____________________________________________________________ 72Mensagens Informativas___________________________________________________________________72 Mensagens de Confirmao ________________________________________________________________72

Exemplo: CalcData _______________________________________________________________ 75Pedindo Confirmao ao Usurio ____________________________________________________________76 Criando um Novo Formulrio ______________________________________________________________77 Salvando o Projeto _______________________________________________________________________78 Executando um Arquivo ___________________________________________________________________78

Gerenciando os Arquivos do Projeto_________________________________________________ 81Usando a Speedbar ou Menus_______________________________________________________________81 Usando o Project Manager _________________________________________________________________82

Definindo o Formulrio Principal ___________________________________________________ 85

Captulo 8 Estrutura das Unidades ______________________________________________ 86Estrutura Geral das Unidades ______________________________________________________ 87 O Cdigo Gerado pelo Delphi ______________________________________________________ 88Seo de Interface________________________________________________________________________88

Unidades Associadas e Independentes________________________________________________ 90 Compilao de Unidades___________________________________________________________ 91 Usando uma Unidade _____________________________________________________________ 92 Resolvendo Conflitos de Nomes _____________________________________________________ 94 Arquivo de Projeto _______________________________________________________________ 95

Captulo 9 Outros Tipos de Dados e Depurao____________________________________ 97Tipos Enumerados________________________________________________________________ 98Operaes com Ordinais___________________________________________________________________98 Tipos Enumerados no Delphi _______________________________________________________________99

Tipos Faixa_____________________________________________________________________ 100Opo "Range Checking" _________________________________________________________________100

Vetores ________________________________________________________________________ 102Vetores Estticos _______________________________________________________________________102 Verificao de Faixa para Vetores __________________________________________________________102 Usando Outros Tipos de ndice ____________________________________________________________103 Vetores Dinmicos ______________________________________________________________________104 Vetores Multidimensionais________________________________________________________________104

Exemplo: Clculo de Mdia _______________________________________________________ 106Declarando o Vetor______________________________________________________________________106 Adicionando um Elemento ________________________________________________________________107 Limpando a Lista _______________________________________________________________________107 Calculando a Mdia dos Elementos _________________________________________________________107 Delphi 4 Total

1997, 1998, 1999 GRIAULE Testando o Programa ____________________________________________________________________108 Salvando o Projeto ______________________________________________________________________108

Conjuntos ______________________________________________________________________ 109Verificando Elementos ___________________________________________________________________109 Operaes com Conjuntos ________________________________________________________________110 Propriedades de Conjunto_________________________________________________________________111

Depurao _____________________________________________________________________ 112Colocando um Ponto de Parada ____________________________________________________________112 Executando Passo a Passo ________________________________________________________________112 Executando At o Cursor _________________________________________________________________113 Vendo Valores de Variveis _______________________________________________________________113 Monitorando o Valor de uma Varivel Dinamicamente __________________________________________114 Forando a Finalizao do Programa ________________________________________________________115 Outras Ferramentas de Depurao __________________________________________________________115

Captulo 10 Procedimentos e Funes __________________________________________ 116Procedimentos Gerais ____________________________________________________________ 117Criando um Procedimento Geral ___________________________________________________________117

Unidades Independentes __________________________________________________________ 119Criando uma Unidade Independente_________________________________________________________119 Transferindo o Procedimento ______________________________________________________________119 Usando a Unidade no Mesmo Projeto _______________________________________________________120 Usando a Unidade em Outros Projetos _______________________________________________________120 Gerenciando um Projeto com Unidades Independentes __________________________________________121 Criando uma Biblioteca de Rotinas _________________________________________________________121

Funes________________________________________________________________________ 123Criando uma Funo_____________________________________________________________________123 Retornando um Valor ____________________________________________________________________123 Chamando a Funo _____________________________________________________________________124

Passagem de Parmetros _________________________________________________________ 125Declarao de Parmetros e Argumentos _____________________________________________________125 Tipos de Passagem ______________________________________________________________________126

Captulo 11 Objetos _________________________________________________________ 128O Que Contm um Objeto ________________________________________________________ 129 Classes e Objetos ________________________________________________________________ 130 Herana _______________________________________________________________________ 131Hierarquia de Classes do Delphi____________________________________________________________131 O Object Browser _______________________________________________________________________132 Simplificando o Acesso aos Campos ________________________________________________________132

Formulrios como Objetos ________________________________________________________ 133A Classe de Formulrio __________________________________________________________________133 Procedimentos na classe de formulrio_______________________________________________________134

Variveis de Objeto ______________________________________________________________ 136 Listas de Strings ________________________________________________________________ 140Delphi 4 Total

1997, 1998, 1999 GRIAULE Propriedades da String List________________________________________________________________140 Mtodos da String List ___________________________________________________________________140 Criando String Lists Independentes _________________________________________________________141

Objetos Predefinidos _____________________________________________________________ 143O Objeto Application ____________________________________________________________________143 O Objeto Clipboard _____________________________________________________________________143 O Objeto Screen ________________________________________________________________________144

Code Explorer __________________________________________________________________ 145 Programao Orientada a Objetos _________________________________________________ 147

Captulo 12 Aplicaes de Banco de Dados ______________________________________ 149Termos Usados__________________________________________________________________ 150 Desktop x Cliente/Servidor________________________________________________________ 151 Formatos de Bancos de Dados _____________________________________________________ 153 Criando Tabelas ________________________________________________________________ 154Definindo um Diretrio de Trabalho ________________________________________________________154 Definindo a Estrutura dos Campos __________________________________________________________154 Salvando a Tabela_______________________________________________________________________155 Entrando com Dados ____________________________________________________________________155

Exemplo: Criando um Formulrio "Manualmente"___________________________________ 157A Pgina Data Access____________________________________________________________________157 Criando os Controles de Dados ____________________________________________________________157 Adicionando o DBNavigator ______________________________________________________________159 Ativando a Tabela_______________________________________________________________________160 Testando o Programa ____________________________________________________________________160

Exemplo: Usando o Database Form Wizard__________________________________________ 162Criando um campo autoincremento _________________________________________________________162 Criando um Formulrio para Acessar a Tabela com Form Wizard _________________________________162 Testando o Programa ____________________________________________________________________163 Salvando o Projeto ______________________________________________________________________164

Resumo dos Componentes de Dados ________________________________________________ 165 Apelidos de Bancos de Dados ______________________________________________________ 166

Captulo 13 Recursos Adicionais_______________________________________________ 169Definindo Tabelas _______________________________________________________________ 170Reestruturando a Tabela "Cliente" __________________________________________________________171 Criando um ndice Secundrio _____________________________________________________________171 Criando a Tabela "Venda" ________________________________________________________________172 Criando Integridade Referencial____________________________________________________________172 Criando a Tabela de Itens _________________________________________________________________173 Criando a tabela Fornecedores _____________________________________________________________173

Criando o Menu Principal ________________________________________________________ 175O MenuDesigner: criando menus ___________________________________________________________175 Tratando Eventos de Menus _______________________________________________________________178 Delphi 4 Total

1997, 1998, 1999 GRIAULE Teclas de Acesso e Teclas de Atalho ________________________________________________________179

Alterando o Menu Principal_______________________________________________________ 181Alterando Propriedades __________________________________________________________________181 Acrescentando os formulrios anteriores _____________________________________________________181 Associando os formulrios aos itens de menu _________________________________________________181

Usando o Controle DBGrid _______________________________________________________ 183Criando os Componentes de Dados _________________________________________________________183 Manipulando dados no DBGrid ____________________________________________________________183 Usando o Editor de Campos _______________________________________________________________184 Alterando a Mscara de Edio ____________________________________________________________185

Captulo 14 Validao e Pesquisas _____________________________________________ 186Exemplo: Cliente por Estado ______________________________________________________ 187 Exemplo: Clientes - Alterando _____________________________________________________ 189 Validao de Campos e Registros __________________________________________________ 190Validando Campos ______________________________________________________________________190 Validando Registros _____________________________________________________________________192

Tratamento de Excees __________________________________________________________ 194Visualizando Informaes sobre Excees____________________________________________________195 Classes de Excees _____________________________________________________________________196

Pesquisas na Tabela _____________________________________________________________ 197Adicionando um DBGrid _________________________________________________________________197 Utilizando um ndice Secundrio ___________________________________________________________198 Pesquisando pelo Nome __________________________________________________________________199 Pesquisando pelo Cdigo _________________________________________________________________199

Blocos Protegidos________________________________________________________________ 201 Usando Outros Controles de Dados_________________________________________________ 202Usando o DBComboBox _________________________________________________________________202

Captulo 15 Acesso s/ Controle de Dados ________________________________________ 204Estados de uma Tabela ___________________________________________________________ 205 Mtodos para Percorrer Dados ____________________________________________________ 206Mtodos de Abertura e Fechamento _________________________________________________________206 Mtodos para Percorrer Registros___________________________________________________________206 Exemplo: Percorrendo a Tabela de Itens _____________________________________________________208

Mtodos para Modificar Dados ____________________________________________________ 210Editando Registros ______________________________________________________________________210 Acrescentando Registros _________________________________________________________________211 Excluindo Registros _____________________________________________________________________212 Outros Mtodos ________________________________________________________________________212

Eventos dos Componentes de Dados ________________________________________________ 214Eventos do Componente Table _____________________________________________________________214

Manipulao de Datas____________________________________________________________ 216Delphi 4 Total

1997, 1998, 1999 GRIAULE

Exemplo: Criando formulrio sem utilizar o dbNavigator ______________________________ 218 Tratamento do Erro 'Key violation.' ________________________________________________ 224 Usando um Controle DBLookupComboBox__________________________________________ 225

Captulo 16 Utilizando Mestre/Detalhe__________________________________________ 227Criando um Formulrio Mestre/Detalhe ____________________________________________ 228Usando o DFW para criar o formulrio ______________________________________________________228 Testando o Formulrio Gerado _____________________________________________________________229 Analisando o Formulrio _________________________________________________________________230 Alterando Propriedades do Formulrio_______________________________________________________231 Salvando o Projeto ______________________________________________________________________232

Usando Trs Tabelas no Formulrio ________________________________________________ 233Ligando os Componentes de Dados _________________________________________________________233 Criando Controles de Dados_______________________________________________________________233 Criando Campos Calculados_______________________________________________________________234 Usando um campo Lookup________________________________________________________________236 Testando e Salvando o Projeto _____________________________________________________________237 Atualizando Quantidade em Estoque________________________________________________________238

Captulo 17 Consultas e SQL__________________________________________________ 241Exemplo: Usando Consultas_______________________________________________________ 242Criando o Formulrio ____________________________________________________________________242 Obtendo um Resultado Modificvel _________________________________________________________243 Simplificando o Select ___________________________________________________________________244 Alterando a Consulta ____________________________________________________________________244 Alterando a Consulta Dinamicamente _______________________________________________________244 Alterando Outras Partes da Consulta ________________________________________________________247

Exemplo: Consultando Vrias Tabelas ______________________________________________ 249Consulta com Duas Tabelas _______________________________________________________________249 Consultando Trs Tabelas_________________________________________________________________250 Usando Campos Calculados no SQL ________________________________________________________250 Usando Funes de Resumo_______________________________________________________________251

Outros Comandos SQL___________________________________________________________ 253Testando Comandos SQL _________________________________________________________________253 Alterando Registros _____________________________________________________________________253 Excluindo Registros _____________________________________________________________________254 Inserindo e Copiando Registros ____________________________________________________________254 Executando um Comando de Atualizao ____________________________________________________255

Consultas num Ambiente Cliente/Servidor___________________________________________ 256 Mtodos e Eventos do Componente Query ___________________________________________ 257

Captulo 18 Instalador e Alias Local____________________________________________ 258Usando um Alias Local ___________________________________________________________ 259Usando o Componente Database ___________________________________________________________259 Alterando os Componentes de Dados________________________________________________________260 Alterando o Caminho em Tempo de Execuo ________________________________________________261 Delphi 4 Total

1997, 1998, 1999 GRIAULE

Criando um programa instalador __________________________________________________ 262Iniciando o InstallShield __________________________________________________________________262 Criando um Instalador ___________________________________________________________________263 Definindo as Opes de Instalao __________________________________________________________263 Definindo os Arquivos Utilizados __________________________________________________________264 Escolhendo as caixas de dilogo____________________________________________________________265 Definindo os cones do Programa___________________________________________________________266 Gerando os disquetes de instalao _________________________________________________________267

A Configurao do BDE __________________________________________________________ 268

Captulo 19 Relatrios _______________________________________________________ 269Conceitos do QuickReport ________________________________________________________ 270A pgina QReport_______________________________________________________________________270 Construindo o Relatrio __________________________________________________________________271

Usando o QuickReport Wizard ____________________________________________________ 273Imprimindo o Relatrio __________________________________________________________________274 Analisando o Relatrio Gerado_____________________________________________________________274

Criando um Relatrio com Vrias Tabelas___________________________________________ 276Inserindo um Nmero de Pgina ___________________________________________________________278 Visualizando o Relatrio _________________________________________________________________278 Acrescentando Vrias Tabelas ao Relatrio ___________________________________________________279 Conectando as Tabelas ___________________________________________________________________279 Criando Sub-detalhes para Vendas __________________________________________________________280 Criando Sub-detalhes para Itens de Venda ____________________________________________________281 Formatando os Campos __________________________________________________________________282 Criando um Campo Calculado _____________________________________________________________283 Criando um Sub-total ____________________________________________________________________284 Chamando o Relatrio a Partir do Menu _____________________________________________________285

Delphi 4 Total

1997, 1998, 1999 GRIAULE

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

Delphi 4 Total

1

1997, 1998, 1999 GRIAULE

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.

Delphi 4 Total

2

1997, 1998, 1999 GRIAULE

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:

Delphi 4 Total

3

1997, 1998, 1999 GRIAULE

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 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.

Delphi 4 Total

4

1997, 1998, 1999 GRIAULE

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 Delphi 4 Total 5

1997, 1998, 1999 GRIAULE 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. 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 ( . O formulrio deve ficar parecido com o seguinte: )

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. Delphi 4 Total 6

1997, 1998, 1999 GRIAULE

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); 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: Delphi 4 Total 7

1997, 1998, 1999 GRIAULE

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].

Delphi 4 Total

8

1997, 1998, 1999 GRIAULE

Captulo 2 Noes BsicasAmbiente de Programao Eventos e Procedimentos Componentes Propriedades Mtodos Object Pascal e Bibliotecas VCL- Visual Component Library Objetos Resumo Projetos Grupos de Projetos Edies do Delphi

Delphi 4 Total

9

1997, 1998, 1999 GRIAULE

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).

Delphi 4 Total

10

1997, 1998, 1999 GRIAULE

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. Como conseqncia, o programa no mais um bloco nico, mas dividido 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.

Delphi 4 Total

11

1997, 1998, 1999 GRIAULE

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 restantes, como Dialogs, Midas, Win 3.1, Samples e ActiveX, clique nos botes ficam na extremidade direita da janela do Delphi. que

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.

Delphi 4 Total

12

1997, 1998, 1999 GRIAULE 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 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.

Delphi 4 Total

13

1997, 1998, 1999 GRIAULE

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.

Delphi 4 Total

14

1997, 1998, 1999 GRIAULE

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;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).

Delphi 4 Total

15

1997, 1998, 1999 GRIAULE

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.

Delphi 4 Total

16

1997, 1998, 1999 GRIAULE

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].

Delphi 4 Total

17

1997, 1998, 1999 GRIAULE

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.

Delphi 4 Total

18

1997, 1998, 1999 GRIAULE

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.

Delphi 4 Total

19

1997, 1998, 1999 GRIAULE

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 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: Formulrios: Unidades independentes: .DPR e .OPT (opes) .DFM e .PAS (unidade associada) .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: Arquivo de recursos: Programa compilado: Arquivos de backup: nome-da-unit.DCU nome-do-projeto.RES nome-do-projeto.EXE *.~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 acrescentlas. Delphi 4 Total 20

1997, 1998, 1999 GRIAULE 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: New Cria um novo projeto vazio Application New Form Cria um novo formulrio e sua unidade Open... Reopen Abre um projeto ou unidade existente. Mostra os arquivos utilizados recentemente e permite reabrir qualquer um deles. Salva o arquivo atual (unidade). Se esta a primeira vez que est sendo salvo, pergunta pelo nome.

Save

Save As... Salva uma cpia do arquivo atual com outro nome ou em outro diretrio. Save Project As... Save All Close Close All

Salva o arquivo de projeto. Sempre pede o nome.

Salva todos os arquivos do projeto e o prprio arquivo de projeto. S pede nomes de arquivos para os que no foram salvos ainda. Fecha o arquivo atual. Fecha todos os arquivos e o projeto atual.

Alm desses comandos, existem cones na SpeedBar que podem ser usados para essas tarefas: (Open project) Equivale a File|Open, mas mostra apenas os arquivos de projeto.

Delphi 4 Total

21

1997, 1998, 1999 GRIAULE (Save all) (Open Project) (Save ) (Add file to project) (Remove file from project) O mesmo que File|Save all O mesmo que File|Open Project... O mesmo que File|Save Adiciona um arquivo ao projeto atual.

Remove um arquivo do projeto atual.

Delphi 4 Total

22

1997, 1998, 1999 GRIAULE

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: Add New Project Add Existing Project Adiciona um novo projeto ao grupo.

Adiciona um projeto existente ao grupo

Compile Compila somente as units que foram modificadas, do projeto ativo. (Projeto Atual) Build ( Projeto Atual) Compile All Projects Build All Projects Compila todas as units do projeto ativo, independente se foram ou no modificadas. Compila somente as units que foram modificadas, dos projetos pertencentes ao grupo. Compila todas as units dos projetos pertencentes ao grupo, independente se foram ou no modificadas.

Delphi 4 Total

23

1997, 1998, 1999 GRIAULE

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. 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.

Delphi 4 Total

24

1997, 1998, 1999 GRIAULE

Captulo 3 Exemplos AdicionaisExemplo: Calculadora

Delphi 4 Total

25

1997, 1998, 1999 GRIAULE

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". Delphi 4 Total 26

1997, 1998, 1999 GRIAULE

Agora crie um boto de comando, com um clique duplo na ferramenta seu tamanho para ficar igual ao dos quadros de texto.

. Altere o

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". Agora, para mostrar o sinal de "+" vamos usar um componente Label (rtulo), que e apenas mostra um texto para o usurio, no permitindo alterao. Selecione o cone 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 Delphi 4 Total 27

1997, 1998, 1999 GRIAULE 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. Delphi 4 Total 28

1997, 1998, 1999 GRIAULE 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).

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.

Delphi 4 Total

29

1997, 1998, 1999 GRIAULE

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.

Delphi 4 Total

30

1997, 1998, 1999 GRIAULE

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

Delphi 4 Total

31

1997, 1998, 1999 GRIAULE

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-pontosigual), 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 Tipos Inteiros Shortint Byte Smallint 1 1 2 -128 a 127 0 a 255 -32768 a32767 N/A N/A N/A BytesFaixa de Valores Preciso(dgitos)

Delphi 4 Total

32

1997, 1998, 1999 GRIAULE Word Integer Longint Cardinal Longword Int64 2 4 4 4 4 8 0 a 65535 -2 bilhes a 2 bilhes (-2.147.483.648 a 2.147.483.647) -2.147.483.648 a 2.147.483.648 0 a 4.294.967.295 0 a 4.294.967.295 -263

N/A N/A N/A N/A N/A N/A

a2

63

Tipos Reais Single Real48 Real Double Comp Currency Extended 4 6 8 8 8 8 10 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

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

3.6x10-4951 a 1.1x104932

*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 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}Delphi 4 Total 33

1997, 1998, 1999 GRIAULE

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: Delphi 4 Total 34

1997, 1998, 1999 GRIAULE

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} 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 Delphi 4 Total 35

1997, 1998, 1999 GRIAULE 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 ...Delphi 4 Total 36

1997, 1998, 1999 GRIAULE

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.

Delphi 4 Total

37

1997, 1998, 1999 GRIAULE

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); {VarInteira pode ser de varString := IntToStr(varInteira); qualquer tipo inteiro,inclusive int64 }Delphi 4 Total 38

1997, 1998, 1999 GRIAULE

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).

Delphi 4 Total

39

1997, 1998, 1999 GRIAULE

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

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'}Delphi 4 Total 40

1997, 1998, 1999 GRIAULE

Delphi 4 Total

41

1997, 1998, 1999 GRIAULE

Tipos OrdinaisUm tipo de dados considerado um tipo ordinal quando existe uma seqncia definida entre seus elementos, ou seja, a partir de um elemento sempre possvel passar para o prximo elemento do tipo. Os tipos ordinais predefinidos pela linguagem (veremos que voc pode criar outros) so: Todos os tipos inteiros (Integer, Word, Cardinal, Longint,Enumerados...); O tipo Char (os caracteres so ordenados pela tabela ASCII/ANSI); O tipo Boolean (s tem dois elementos: False,True nessa ordem). Notas: Os tipos reais no so considerados tipos ordinais. Algumas operaes podem ser feitas com qualquer tipo ordinal. A funo succ retorna o prximo elemento do tipo, enquanto pred retorna o anterior:

var c1, c2: char; x, y: integer; a, b: boolean; begin c1 := 'G'; c2 := succ(c1); {vai ser c2 := pred(c1); {vai ser x := 299; y := succ(x); {succ(x) = a := False; b := succ(a); {vai ser = end;

= 'H'} = 'F'} x + 1 e pred(x) = x - 1} True}

Se voc chamar succ para o ltimo elemento da seqncia ou pred para o primeiro elemento, isso vai causar um erro de execuo (por exemplo, 'succ(True)' no permitido). A funo ord retorna a posio numrica do elemento dentro do tipo. No caso de um nmero inteiro, retorna o prprio nmero, portanto no tem utilidade prtica. No caso de um caractere, retorna o cdigo ASCII (ANSI) do caractere, que sua posio na tabela ASCII (ANSI):

x := ord('G'); {x vai ser 71}No caso do tipo Boolean, ord(False) = 0 e ord(True) = 1. Isso pode ser usado para converter uma condio lgica em valor numrico. Mais tarde veremos outras operaes que podem ser executadas em tipos ordinais. Delphi 4 Total 42

1997, 1998, 1999 GRIAULE Notas : As funes succ e pred podem ser utilizadas para variveis do tipo int64, mas o mesmo no vlido para a funo ord.

Delphi 4 Total

43

1997, 1998, 1999 GRIAULE

Escopo de VariveisO lugar onde declarada uma varivel determina o escopo de uma varivel, ou seja, qual a regio do programa onde a varivel pode ser acessada e o tempo de vida da varivel, ou seja, qual o intervalo de tempo durante o qual ela mantm seu valor. Qualquer varivel s pode ser utilizada no programa depois do ponto onde foi declarada.

Variveis LocaisUma varivel declarada dentro de um procedimento uma varivel local. Ela s pode ser utilizada dentro do procedimento (o escopo da varivel o corpo do procedimento). O tempo de vida de uma varivel local o tempo durante a execuo do procedimento. Quando a execuo do procedimento iniciada, a varivel est indefinida, ou seja, seu valor pode ser qualquer dado que existia anteriormente na memria. Se esse valor for utilizado, os resultados so imprevisveis. Depois que o procedimento termina, a memria ocupada pela varivel liberada, e seu valor anterior perdido. Como j vimos, variveis locais so declaradas com a palavra var, logo aps o cabealho do procedimento, mas antes do begin que inicia os comandos:

procedure btnCalculaClick(Sender: TObject); var op1, op2, res: double; begin ... end;

Variveis Globais da UnidadeSe uma varivel precisa ser usada em vrios procedimentos, mantendo o seu valor, preciso declarar a varivel como global, ou seja, fora de qualquer procedimento. O escopo dessa varivel passa a ser desde o ponto onde foi declarada at o fim da unidade. Por exemplo:

implementation {$R *.DFM} var VariavelGlobal: integer;Variveis globais so inicializadas com valores padro: zero para numricas, False para booleans, '' (texto vazio) para strings, etc. Elas mantm seus valores durante toda a execuo do programa. Ao declarar uma varivel global, voc pode fornecer um valor inicial diferente do padro. Para isto, a varivel deve ser declarada em separado de outras (no em uma lista) e depois Delphi 4 Total 44

1997, 1998, 1999 GRIAULE do tipo de dados, voc deve colocar um "=" e o valor inicial, que deve ser constante. Por exemplo:

var VariavelGlobal: integer = 1; Titulo: string = 'Ttulo inicial'; AtivaTimer: boolean = true;

Variveis Globais do ProjetoUma varivel global, se declarada na parte implementation, s pode ser acessada dentro daquela unidade. Se for declarada na parte interface, pode ser usada por outra unidade, desde que essa outra tenha uma clusula uses para a unidade que contm a varivel. Veremos mais sobre isso em Estrutura das Unidades.

Delphi 4 Total

45

1997, 1998, 1999 GRIAULE

ConstantesConstantes so valores que podem ser colocados em variveis, usados em expresses etc. Uma constante literal um valor sem nome, escrito explicitamente, como os seguintes:

20 3.5 (constantes numricas - integer e double) 'Testando' (constante do tipo string) False True (constantes do tipo boolean) 'x' #8 (constantes do tipo char)O tipo de dados de uma constante determinado pela forma desta. Nmeros sem parte fracionria so considerados constantes inteiras (isso se o nmero couber na faixa de valores de um tipo inteiro). Uma constante inteira tambm pode ser especificada como um valor hexadecimal, prefixado por '$', por exemplo:

x := $2F3;Nmeros hexadecimais contm tambm os dgitos A at F, alm de 0 a 9. Uma constante real tambm pode ser escrita em notao cientfica, especificando-se um valor e uma potncia de 10:

y := 3.5e4; { = 3.5 x 104 = 35000 } z := 2.78e-6; { = 2.78 x 10-6 = 0.00000278 }Voc pode criar constante especificando o tipo que esta constante ir retornar , por exemplo:

const Inteiro64 = int64(17)Desta forma o tipo que a constante ir retornar int64. Voc tambm pode criar constantes nomeadas, que so simplesmente substitudas pelos valores correspondentes durante a compilao do programa. Elas facilitam a manuteno do programa, quando um valor utilizado em vrios lugares. Para isso, usa-se a declarao const:

const TAMANHO = 30; METADE = TAMANHO/2; PI = 3.1415926536; MENS_ERRO = 'Valor incorreto. Digite novamente.'; >Constantes nomeadas so utilizadas como qualquer outra constante:

x := TAMANHO * 8;Delphi 4 Total 46

1997, 1998, 1999 GRIAULE

angulo := PI*graus/180;Mas no so variveis, portanto no podem receber outro valor:

TAMANHO := 15; { erro de compilao }Da mesma forma que variveis, uma constante pode ser local (se declarada em um procedimento) ou global (se declarada fora).

Delphi 4 Total

47

1997, 1998, 1999 GRIAULE

Captulo 5 Estruturas de ControleInserindo Comandos com o CodeInsight Estruturas de Deciso Estruturas de Laos Outros Comandos

Delphi 4 Total

48

1997, 1998, 1999 GRIAULE

Inserindo comandos com o CodeInsightPara facilitar a digitao dos comandos da linguagem e reduzir os erros, o CodeInsight do Delphi possui um recurso chamado modelos de cdigo [code templates], que permite inserir rapidamente um comando da linguagem contendo apenas a estrutura bsica, que depois voc pode preencher. Por exemplo, digite casee no editor de cdigo e tecle [Ctrl+J]. O CodeInsight ir inserir um comando case com uma clusula else e espaos em branco para voc completar:

case : : else end;

of ; ; ;

O cursor ficar posicionado entre case e of. Voc pode completar com um nome de varivel, valores constante e os comandos a serem executados. Para ver uma lista completa dos modelos de cdigo, tecle [Ctrl+J]. Veja por exemplo, os modelos ife, ifb, ifeb, ifs, forb, fore, whileb, whiles, caseb, cases. Note que os outros usam comandos do Object Pascal que ainda no foram vistos. ] Nota: voc pode alterar os modelos de cdigo ou criar novos. Para isso clique em Tools|Environment Options e na pgina CodeInsight. Nesta mesma pgina, voc pode tambm desmarcar a opo "Code Completion" se quiser. Essa opo mostra a lista de propriedades e mtodos de um componente quando voc digita o nome do componente e um ponto.

Delphi 4 Total

49

1997, 1998, 1999 GRIAULE

Estruturas de DecisoO Comando if...then...else...Ns j vimos o comando if em vrias situaes. A sua sintaxe bsica :

if condio then comando1 else comando2; { OU sem o else: } if condio then comando1;A identao de comandos, ou a separao do comando em vrias linhas no so obrigatrias em nenhuma situao no Object Pascal. Mas geralmente um comando if escrito em vrias linhas, para maior legibilidade:

if condio then comando1 else comando2;Dica: No editor de cdigo, para identar um bloco de comandos (deslocar direita), use [Ctrl+Shift+I]. Para deslocar esquerda, use [Ctrl+Shift+U]. Nessa sintaxe, condio qualquer expresso que gere um resultado do tipo Boolean (True para verdadeiro, False para falso), podendo ser uma nica varivel booleana, embora na maioria das vezes seja construda usando operadores de comparao, como '=', '>' etc. Note que no permitido o ';' (ponto-e-vrgula) logo depois do then ou logo antes ou depois do else. S pode haver ';' depois do fim do comando if. Se no houver o else, o ';' colocado depois do comando1. Por exemplo:

if memoEditor.SelLength 0 then menuEdiRecortar.Enabled := True else menuEdiRecortar.Enabled := False;Quando, em lugar de comando1 ou comando2 preciso executar vrios comandos, usa-se os delimitadores begin e end para criar um comando composto. Um comando composto tratado pelo Object Pascal como um nico comando, por exemplo:

if condio then begin comando1; comando2; end elseDelphi 4 Total 50

1997, 1998, 1999 GRIAULE

begin comando3; comando4; end;Dentro do comando composto, os comandos so separados por ';', mas fora dele se aplicam as regras do if. Um comando if pode ser usado dentro de outro, mas isso pode dificultar o entendimento se um deles inclui uma clusula else. Nesse caso o else fica ligado ao if mais prximo. Mais de uma condio pode ser usada no if, combinando-as com and (e), or (ou) e not (no). Mas nesse caso, so obrigatrios parnteses em volta das condies:

if (Key < '0') or (Key > '9') then Key := #0;O operador and tem precedncia sobre o or, e o not tem precedncia sobre os dois, portanto preciso levar isso em conta em condies mais complexas, e utilizar parnteses para especifica