Download pdf - Apostila Delphi - 2005

Transcript

CINCIA DA COMPUTAO - DELPHI

APOSTILA : DELPHI

Disciplina : LINGUAGENS E TCNICAS DE PROGRAMAO - III

Curso : Cincia da Computao

UFPR

PROF. : RIX MORATO

ANO 2005LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III PAG.1

CINCIA DA COMPUTAO - DELPHI

NDICE APRESENTAO 1. INTRODUO 2. AMBIENTE INTEGRADO DE DESENVOLVIMENTO DELPHI2.1 Barra de Menus 2.2 SPEEDBAR 2.3 PALHETA DE COMPONENTES 2.3 O FORMULRIO 2.3.1 Alignment Palette(Palheta de Alinhamento) 2.4 CODE EDITOR 2.5 OBJECT INSPECTOR 2.6 Object TreeView 2.7 PROJECT MANAGER 2.8 CONFIGURAES DO PROJETO 2.9 CONFIGURAES DO AMBIENTE 2.10 IMAGE EDITOR

7 7 77 7 8 8 8 9 9 10 10 11 11 12

3. INTRODUO PROGRAMAO 3. INTRODUO PROGRAMAO3.1 Metodologia de Programao no DELPHI 3.2 Gerenciamento de Projetos 3.2.1 Principais Arquivos de um Projeto Delphi 3.2.2 Normas Usadas para otimizar o desenvolvimento de sistemas 3.3 Primeiro Projeto 3.4 Segundo Projeto

12 1313 13 13 13 14 15

4. A

LINGUAGEM OBJECT PASCAL

1717 17 17 18 18

Object Pascal Algumas Observaes Sobre Comandos Comentrios 4.1 Composio de Programas Escritos em OBJECT PASCAL. 4.2 SMBOLOS ESPECIAIS USADOS NA LINGUAGEM.

4.3 TIPOS E DECLARAES DE VARIVEIS4.3.1 Declarao de Variveis

1919

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.2

CINCIA DA COMPUTAO - DELPHI4.3.2 Tipos de Variveis 4.3.3 Vetores / Matrizes 4.3.3.1 Matrizes Comuns 4.3.3.2 Matrizes Dinmicas 4.3.3.3 Matrizes de Strings 4.3.4 Tipo Record - Registros 4.4 Constantes 4.5 Operadores 4.5.1 OPERADORES ARITMTICOS 4.5.2 OPERADORES RELACIONAIS 4.5.3 OPERADORES LGICOS 4.5.4 CONJUNTOS 4.5.5 STRINGS 4.5.6 DATA - HORA 4.5.7 PRIORIDADES NAS EXPRESSES USADAS NO PASCAL. 4.6 Comandos 4.6.1 Comando de Atribuio 4.6.2 Comandos de Deciso 4.6.2.1 Comando IF ... Then ... Else 4.6.2.2 Comando Case 4.6.3 Estruturas de Repetio 4.6.3.1 Comando FOR 4.6.3.2 Comando WHILE 4.6.3.3 Comando Repeat ... Until 4.6.3.4 Comandos Break / Continue ( Desvios dentro da repetio) 4.6.4 Comandos de desvio 4.6.4.1 GOTO 4.6.4.2 EXIT 4.6.5 Comandos para Entrada e Sada de Dados (Padro- Janela DOS) 4.7 Sub-Rotinas Procedures e Functions 4.8 Procedimentos e Funes Predefinidas usuais do Object Pascal 4.8.1 Manipulao de strings 4.8.2 Manipulao Nmerica 4.8.3 MANIPULAO DE TIPOS ESCALARES 4.8.4 Controle de memria 4.8.5 INTERAGINDO COM O SISTEMA OPERACIONAL 4.9 Desenvolvimento de Units 4.10 Mdulos em Object Pascal 4.10.1 Introduo e Objetivos da Modularizao 4.10.2 Tipos de Mdulos 4.10.3 Units e DLLs 4.10.4 Procedures e Functions 4.10.5 Contruo de Units 4.10.6 Contruo de DLLs 20 21 21 22 23 23 25 25 25 25 25 25 26 26 26 27 27 27 27 27 28 28 28 29 29 29 29 30 30 30 31 32 35 40 40 40 42 43 43 44 45 45 46 48

5. UTILIZANDO COMPONENTES5.1 PGINA STANDARD 5.2 PGINA ADICIONAL 5.3 PGINA WIN32 5.4 PGINA DIALOG

5050 50 51 51

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.3

CINCIA DA COMPUTAO - DELPHI5.5 PGINA SYSTEM 5.6 PGINA INTERNET 5.7 Interface Grfica com o Usurio 5.7.1 Projeto de Telas 5.7.2 Objetos usuais para o projeto das Telas 51 52 52 52 52

6. CAIXAS DE MENSAGENS, ENTRADA DE DADOS E DIALOGOS6.1 Caixas de Mensagem 6.1.1 MESSAGEDLG 6.1.2 MESSAGEDLGPOS 6.1.3 SHOWMESSAGE 6.1.4 SHOWMESSAGEPOS 6.1.5 MESSAGEBOX 6.2 Caixas de Entrada de Dados 6.2.1 INPUBOX 6.2.2 INPUQUERY 6.3 Caixas de Dilogo

7070 70 71 71 71 71 72 72 72 73

7. PROJETANDO BARRAS DE MENUS7.1 Exemplo de Projeto da Barra de Menu em uma aplicao 7.2 Definindo ShortCuts (Atalhos para os itens do Menu) 7.3 Construindo Sub-Menus 7.4 Removendo e Reposicionando opes de Menu

7373 76 77 77

8. MENU POP-PUP8.1 Exemplo de Projeto usando Popup Menu

7777

9. EXPLORANDO O OBJECT INSPECTOR9.1 Eventos 9.2 Propriedades

8080 81

10. FORMULRIOS MDI E SDI ( MULTIPLE E SINGLE DOCTO INTERFACE)10.1 Formulrio SDI Single Document Interface 10.2 Formulrio MDI Multiple Document Interface

8181 83

11. UTILIZANDO A REA DE TRANSFERNCIA11.1 Objetivo 11.2 Manipulando Textos 11.3 Manipulando Figuras

8484 84 85

12. ENTRADA, SADA E IMPRESSO12.1 Arquivos de Texto Exemplo de um Editor de Textos Simples

8787 87

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.4

CINCIA DA COMPUTAO - DELPHI12.1.1 Arquivos de Inicializao O Objeto TInifile Criando um Arquivo de Configurao Lendo o Arquivo de Configurao Modificando um Arquivo .INI Outras Operaes com Arquivos .INI Manipulao de Arquivos 12.2 Arquivos Binrios 12.2.1 Arquivos com Tipo Exemplo de Projeto Cadastro de Clientes 12.2.2 Arquivos sem Tipo Exemplo de Projeto de Troca de espaos por vrgulas em arquivos sem tipo 12.3 Impresso 12.3.1 Impresso Bsica com Pascal 12.3.2 Impresso com objeto Tprinter Exemplo de projeto para Imprimir um Arquivo Texto via objeto Printer 89 89 89 90 90 91 91 91 91 92 101 101 102 103 103 103

13. APLICAES DE BANCO DE DADOS13.1 Objetivo 13.2 Borland Database Engine (BDE) 13.3 Pgina DataAccess e BDE 13.4 Pgina DataControls 13.5 Modelo de Acesso a Banco de Dados 13.6 DataSource 13.7 Componente Table 13.7 Desenvolvendo uma aplicao com o componente Table 13.8 Componente Query 13.8.1 Fundamentos do componente Query 13.8.2 SQL - Structured Query Language 13.9 Desenvolvendo uma aplicao com o componente Query 13.10 Desenvolvendo a navegao entre registros. 13.11 Dbnavigator 13.12 Campos Calculados 13.13 Pesquisa de Registros 13.14 Pesquisa com Intervalos 13.15 DBLOOKUP COMBO BOX 13.16 QUERIES PARAMETRIZADAS

106106 106 106 107 107 108 108 109 111 111 112 119 120 123 124 126 127 128 130

14. QUICK REPORTConstruindo uma caixa de configurao de relatrios Construindo um Relatrio Rpido Explorando o componente QRBAND Explorando o Componente QRDBText

132132 133 135 136

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.5

CINCIA DA COMPUTAO - DELPHI 15. PROGRAMAO ORIENTADA A OBJETOSObjetivo Classes, Objetos e Mtodos Evento e sua relao com Classes Propriedades e sua relao com as Classes Herana Encapsulamento Exemplo da Construo uma Classe

136136 136 137 137 137 137 138

16. ANEXO: CLASSES E COMPONENTES 17. ANEXO : FUNES DE DATA/HORA, STRINGS,FORMATAO E CONVERSO DE TIPOS 17. ANEXO : TECLAS DE ATALHO PARA TRABALHAR MAIS RPIDO DURANTE O DESENHO E A CODIFICAO BIBLIOGRAFIA

141

149

151 152

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.6

CINCIA DA COMPUTAO - DELPHI

ApresentaoEsta apostila destinada as pessoas que desejam obter conhecimentos bsicos da linguagem de programao orientada a eventos e a objetos DELPHI. Os assuntos so abordados de forma sinttica, procurando a medida do possvel apresent-los com clareza e simplicidade. Todas as criticas e sugestes sero bem recebidas no intudo de aprimorar este trabalho.

1. INTRODUOA linguagem PASCAL ( nome dado em homenagem ao matemtico BLAISE PASCAL) foi criada em 1968 por Niklaus Wirth, do Institut fur Informatik de Zurich, tem como principais caractersticas: Ser uma linguagem adequada ao ensino de programao, isto , estruturada, bem organizada e compreensvel. Permitir uma implementao confivel e eficiente em grandes computadores ou em pequenos computadores. Simplicidade, incluindo os avanos da cincia de computao atingidos na poca. Baseada no ALGOL 60, de modo a criar bons hbitos de programao.

Em 1.983 a software house americana Borland International lanou o Turbo Pascal para microcomputadores. O turbo Pascal consegue em um ambiente, colocar um editor de textos, bastante parecido com o Wordstar e um compilador de um passo bastante veloz, com a desvantagem de que apenas um erro localizado pr vez, e tambm oferece facilidades para a depurao de programas e programao orientada o objetos. O Delphi uma linguagem de programao orientada a eventos e a objetos (OBJECT PASCAL), criada pela BORLAND, voltada para o ambiente Windows 95/98, NT, com capacidade para gerar aplicaes em arquitetura Cliente/Servidor ou Local. O Delphi baseia-se na programao visual onde o programador utiliza-se de diversos cones para recriar todos os objetos presentes na tela do Windows, tais como: Botes de Presso, Pop-Ups, Caixas de Listagem, Botes de Rdio, etc; o que facilita a utilizao dos programas para os usurios dos programas at mesmo para os iniciantes. Alm de todas facilidades que esta linguagem apresenta, vale dizer, que ela herda muitos recursos e estruturas prprias do Turbo Pascal, o que torna o Delphi uma linguagem extremamente prtica e clara. Todas as regras para a estruturao do cdigo dos programas foram recriadas semelhana do Turbo Pascal, tornando os programas muito organizados e fceis de ler e entender. Podemos arriscar a dizer que ao mesmo tempo em que o Delphi marca o retorno da Borland ao segmento das linguagens de programao , representando de certa forma a retomada e evoluo do excelente Turbo Pascal. O Delphi uma linguagem de programao que permite compilao e linkedio de suas aplicaes, gerando um arquivo executvel (EXE) real, dispensando o uso de RunTime.

2. AMBIENTE INTEGRADO DE DESENVOLVIMENTO DELPHIOs principais recursos do ambiente de programao Delphi so: a Barra de Menus, Speedbar, a Palheta de Componentes, o Project Maneger, o Formulrio, a Janela Code Editor, Object TreeView, as caixas de configurao do ambiente e do projeto e o Image Editor.

2.1 Barra de Menus

Atravs da barra de menu o usurio ter acesso a todos os recursos do Delphi. Os menus seguem at certo ponto a padronizao do Windows. Com isto queremos dizer que, dentro do menu File (Arquivo), voc encontrar opes para Abrir, Salvar e Fechar arquivos, etc; portanto de forma semelhante aos demais programas voltados para Windows. Alm disso, caso voc queira acessar aos menus do Delphi atravs do teclado, dever pressionar a tecla ALT seguido de F . Caso Voc precise de qualquer ajuda adicional, clique no menu Help/Help Topics.

2.2 SPEEDBAR LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III PAG.7

CINCIA DA COMPUTAO - DELPHI

A Speedbar contm cones que foram considerados como de uso comum, justamente para que os programadores Delphi no precisem acessar constantemente barra de menus. Em caso de dvida sobre a funo de qualquer cone na tela do Delphi, basta mover o mouse sobre o cone que surgir um texto descritivo. Todo item da Speedbar possui uma tecla de atalho correspondente, portanto, se voce j tiver o costume de utilizar de teclas de atalho poder dispensar o uso do mouse.

2.3 PALHETA DE COMPONENTES

Est a principal barra de ferramentas do Delphi. Atravs dela voc tem acesso a todos os recursos que permitiro construir visualmente a sua aplicao. Na pgina Standard, por exemplo, voc tem acesso a objetos como: caixas de textos, combos, botes de rdio, caixas de verificao, campos de textos, e muito mais. Para utilizar qualquer um destes objetos basta selecionlo com o mouse e arrast-lo para o formulrio de sua aplicao.

2.3 O FORMULRIO

O Formulrio o ponto central de qualquer aplicao Delphi e constitui a rea de programao e a tela da aplicao em desenvolvimento. O formulrio equivalente s janelas dos programas Windows. A partir de um formulrio voc constri a janela da sua aplicao. Nesta janela voc deve posicionar os componentes ou objetos desejados (Combos, Caixas de listagem, etc) e escrever os cdigos associados aos eventos selecionados dos componentes. Tudo o que colocado e realizado para o formulrio, fica gravado num arquivo (.DFM) anexado ao projeto da aplicao. Embora este arquivo esteja em formato binrio, possvel abr-lo no Delphi e ler o seu contedo.

2.3.1 Alignment Palette(Palheta de Alinhamento)

Centraliza Alinhamento horizontal horizontalmente na janela Alinha para o canto esquerdo Alinha para cima

Espaos iguais na horizontal Alinha para o canto direito Alinha para baixo

Alinha Centralizando na vertical

Centraliza verticalmente Espaos iguais na vertical na janela

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.8

CINCIA DA COMPUTAO - DELPHI 2.4 CODE EDITOR

A janela Code Editor propriamente o lugar onde o cdigo do programa, ser escrito. O cdigo dos eventos, definidos no formulrio atravs dos mais variados componentes, ser necessrio para fazer com que o Delphi responda as aes do usurio. Em outras palavras quando o usurio clicar sobre um boto do formulrio, os comandos executados sero escritos no Code Editor. O cdigo escrito em Pascal, ou seja o programa, ser gravado num arquivo com extenso (.PAS) que ser designado UNIT. Estes arquivos so armazenados no padro ASCII podendo ser acessados atravs de qualquer editor de textos no Windows. bom saber que nem tudo o que estiver escrito na UNIT ser por iniciativa prpria do usurio. O Delphi nos auxilia escrevendo sozinho a maior parte do cdigo e insere nos lugares certos aqueles comandos que o programador deseja acrescentar.

2.5 OBJECT INSPECTOR

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.9

CINCIA DA COMPUTAO - DELPHIAtravs desta importantssima janela auxiliar o Delphi permite que voc altere certos atributos dos componentes e dos formulrios usados na aplicao. Alguns dos atributos ou propriedades poderiam ser: a cor do texto, a cor do fundo, o tipo de letra, etc. (PROPRIEDADES) Alm disso atravs do Object Inspector que podemos programar o que dever acontecer quando o usurio da aplicao clicar sobre um boto , selecionar uma opo no formulrio, etc. (EVENTOS).

2.6 Object TreeView

O Object TreeView uma forma alternativa para visualizao e seleo dos componentes de um Form. Os Componentes so apresentados numa rvore de acordo com o agrupamento lgico entre eles. O Object Treeview, o Form Designer e o Object Inspector trabalham de forma sincronizada, de modo que quando um componente selecionado em uma dessas janelas, a mesma seleo exibida nas outras duas.

2.7 PROJECT MANAGER

Uma vez que muito comum termos vrios Fomulrios e Units numa nica aplicao e compartilharmos cdigos, o Delphi organiza todos num nico arquivos, extenso (.DPR) chamado PROJETO. Mais tarde o projeto ser transformado no arquivo executvel responsvel pelo funcionamento de toda a sua aplicao. Um projeto formado pela interface visual (formulrio) juntamente com o cdigo (Unit) que ativa a interface. Cada projeto pode ter vrios formulrios permitindo a construo de aplicaes com vrias janelas.

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.10

CINCIA DA COMPUTAO - DELPHIAs UNITS podem ser armazenadas separadamente e adicionadas ou retiradas do projeto conforme necessrio. No entanto, se for retirado ou adicionado qualquer formulrio, sua Unit o acompanhar. Sempre que voc modificar qualquer formulrio ou unit, poder escolher a opo Save All no menu File. Com isto poupar o trabalho de salvar cada formulrio ou unit alterada separadamente. Cada projeto ser formado pelo conjunto dos arquivos DFM e PAS que podem ser visualizados e manipulados atravs do comando View/Project Manager.

2.8 CONFIGURAES DO PROJETO

O ambiente de desenvolvimento do Delphi permite que sejam feitas algumas configuraes relativas a cada projeto. Dentre estas opes podemos destacar a criao automtica dos formulrios do projeto, definio do ttulo e do cone da aplicao, os mtodos de compilao e linkedio, etc. Normalmente as opes padro so as mais recomendveis para a maioria das aplicaes. Para visualizar a caixa de dilogo de configuraes clique em Project/Options. Logo abaixo, veja as descries sintetizadas sobre as funes das principais opes de configurao. Guia Form: permite que sejam definidos os formulrios que sero autocriados durante o incio da execuo da aplicao. A autocriao do formulrio permite que o mesmo seja reconstrudo e exibido na tela. J que cada formulrio autocriado consome recursos do equipamento, comumente apenas o primeiro formulrio (Principal) definido como autocriado. Guia Application: possibilita a definio do ttulo e do cone da aplicao quando na forma de um arquivo executvel no Windows. Guia Compiler: permite o ajuste de diretivas de compilao e depurao de erros, bem como ajustes na maneira como sero detectados erros em tempo de execuo. Guia Linker: permite a configurao do uso da memria e a definio dos arquivos de sada contendo o mapeamento da memria. Guia Diretories/Condicional: permite a definio do diretrio de sada para o executvel da aplicao e do diretrio de procura para os arquivo fontes. Guia Version Info: quando a Version Info includa, se o usurio clicar com o boto direito do mouse no cone do programa e selecionar a opo Properties (Propriedades) as informaes fornecidas sero mostradas. Guia Packages: especifica Design-time packages utilizados para instalar componentes na interface do ambiente de desenvolvimento do Delphi e para criar propriedades especiais para personalizar componentes.

2.9 CONFIGURAES DO AMBIENTEAtravs da caixa de dilogo de configuraes do ambiente, disponvel no menu Tools/Options, pode-se de um modo geral, controlar funes de depurao, compilao, gravao automtica do projeto, cor e tipo da letra nos cdigos dos programas, aparncia dos formulrios, etc. Logo abaixo, veja as descries sintetizadas sobre as funes das principais opes de configurao.

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.11

CINCIA DA COMPUTAO - DELPHIGuia Preferences: permite o ajuste das opes mais comuns do ambiente Delphi, tais como as de autogravao do projeto e layout de tela, as de definio de aparncia e funcionamento do formulrio no que concerne ao Grid. Guia Editor: permite a configurao do uso da tecla TAB e BACKSPACE para indentaes, do limite da memria para operaes de Undo, do destaque automtico de palavras reservadas no cdigo fonte dos programas, etc. Guia Colors: permite a configurao do sistema de cores para o cdigo fonte dos programas. A ttulo de exemplo, possvel colorir de vermelho todas as palavras reservadas da linguagem e de azul todo o restante do texto.

2.10 IMAGE EDITORo Image Editor um software acessvel pelo menu Tool/Image Editor , sendo fundamental para o programador que deseja criar ou personalizar cones, bitmaps e cursores na sua aplicao.

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.12

CINCIA DA COMPUTAO - DELPHI

3. INTRODUO PROGRAMAONeste captulo voc ter uma viso geral do funcionamento da programao no Delphi, desde a etapa de elaborao/codificao do projeto, at a compilao e execuo.

3.1 Metodologia de Programao no DELPHIA maneira de programao no Delphi, bem como nas linguagens para ambiente Windows, tende a ser diferenciada a ponto de termos necessidade de definirmos um roteiro para a elaborao das aplicaes. Veja a seguir um resumo da metodologia de programao: Elaborao da Interface Visual: criao do visual dos formulrios atravs da alocao adequada de objetos (botes de presso, combos, caixas de listagem, botes de rdio, Menu, Barra de Ferramentas, etc). Configurao dos objetos: ajuste dos atributos ou propriedades de cada objeto alocado aplicao atravs do uso da janela Object Inspector/ Properties. Codificao: criao do cdigo do formulrio que ficar armazenado na Unit. Para isto, so selecionados os eventos dos objetos aos quais sero anexados os blocos de cdigos, isto feito atravs da janela Object Inspector/Events. O Delphi automaticamente abre o espao para programao na Janela Code Editor. Teste/Depurao: verificao do correto funcionamento do programa bem como checagem dos erros possveis em tempo de execuo. Nesta etapa o programador dispe de diversos recursos que vo desde as ferramentas para checagem da sintaxe do cdigo, at ferramentas de compilao, linkedio e depurao em tempo de execuo. Gerao do Executvel: depois de cumpridas as etapas precedentes, deve-se gerar o arquivo executvel a partir do projeto desenvolvido. Este arquivo executvel que ser distribudo ao cliente numa etapa final, sendo extremamente rpidos em sua execuo e pequenos em tamanho. Alm do programa executvel, existe tambm a possibilidade da criao de uma DLL a partir do projeto. DLLs so bibliotecas de ligao dinmica, somente se incorporando ao executvel no momento da execuo do mesmo; o que possibilita a utilizao da mesma em diversas aplicaes simultaneamente e por diversas linguagens diferentes.

3.2 Gerenciamento de Projetos 3.2.1 Principais Arquivos de um Projeto DelphiArquivo Arquivo de Projeto Unit Extenso .DPR .PAS Descrio Este aquivo criado em tempo de desenvolvimento, o principal fonte do programa onde existe a declarao Program. Units so arquivos fontes em Object Pascal. Existe tres possibilidades de existncia de Units: Forms : Todas Units so criadas automticamente quando um novo formulrio ou Data Module criado. Units Genricas: So units que possuem funes teis em geral. Componentes: So units criadas pelo Delphi quando um novo componente criado. Este arquivo contm a representao binria da aparncia visual do Form.(Delphi Form Module) As Units depois de compiladas recebem a extenso DCU Estes arquivos possuem dados binrios (cone da aplicao, verso,...) e so linkados ao executvel da aplicao Armazena as configuraes especificas do projeto. Cpias de Backup so criadas automticamente para os diversos arquivos que trabalham com o Delphi. um arquivo gerado pela compilao de um projeto do tipo Library. O Arquivo Executvel gerado pela linkedio de todos os arquivos compilados do projeto.

Arquivo de Form Unit Compilada Arquivo de Recursos Arquivo de Opes do Projeto Arquivos de Backup

.DFM .DCU .RES .DOF (DPR) ~DP (PAS) ~PA (DFM) ~DF .DLL .EXE

Dinamic Link Libraries Arquivo Executvel

3.2.2 Normas Usadas para otimizar o desenvolvimento de sistemasPadronizao de Nomes Nomes de Arquivos do Projeto Ex: Clientes.DPR, CadastroClientes.Pas, ConsultaClientes.Pas, ... , a dica colocar nomes de arquivo que signifiquem algo. Nomes de Objetos Ex.: FrmPrincipal, FrmConfiguracao, EditNome, LabelNome,...

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.13

CINCIA DA COMPUTAO - DELPHI Tabela com sugestes para padronizao de nome de objetos usuaisObjeto Formulrio Caixa de Texto Label Boto de Comando Caixa de Verificao Frame Boto de Opo Caixa de Lista Combo Box Menu Timer Prefixo Form Edit Label Button CheckBox GroupBox RadioGroup ListBox ComboBox Menu Timer Exemplo FormCliente EditNome LabelMensagem ButtonExecutar CheckBox GravaSempre GroupBoxDados RadioGroupEstadoCivil ListBoxCidade ComboBoxBancos MenuAbrir TimerHora

Nomes de Variveis A dica colocar nomes de arquivo que signifiquem algo. Modularizao Modularize seu projeto e procure no misturar funcionalidades diferentes na mesma unit. Diretrios Utilizar um diretrio para cada projeto Delphi.

3.3 Primeiro ProjetoEste primeiro projeto ter o objetivo de familiariz-lo na programao Delphi que se caracteriza por ser orientada a eventos e a objetos. Desenvolveremos um projeto simples, composto de apenas um formulrio. Para iniciar, abra o Delphi, no Windows, clicando em Iniciar / Programas / Delphi. Note que o Delphi j abriu um novo projeto chamado de Project1 composto de uma Unit chamada Unit1 e de um formulrio chamado Form1. Siga os passos abaixo: Acione a janela Object Inspector e na guia Properties, frente da propriedade Name, escreva FrmPrimeiroProjeto. No Form1 criaremos um boto de presso. Para isto v at a palheta de componentes Standard e clique em Button. Leve o mouse at o meio do formulrio e d um clique. Observe que um boto de presso ter sido criado com a legenda Button1. Acione a janela Object Inspector e na guia Properties, frente da propriedade Caption, escreva &Fechar e frente da proriedade Name escreva CmdFechar.

-

-

Agora devemos escrever o cdigo que ser executado quando o boto for pressionado. Para isto, selecione a guia Events no Object Inspector e dar um clique duplo sobre o evento OnClick ou clique duplo sobre o boto fechar (apesar de rpido este mtodo mais limitado). Digite o cdigo na figura seguinte. Ele ser o responsvel por fechar o formulrio e finalizar o funcionamento do nosso primeiro projeto quando este estiver sendo executado.

Mtodo Close para fechar o formulrio

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.14

CINCIA DA COMPUTAO - DELPHIPara executarmos o projeto basta pressionar a tecla F9 ou escolher a opo Run no menu Run. O Delphi ir compilar o projeto e execut-lo. Caso haja algum tipo de erro, ele o apontar no cdigo da Unit.

3.4 Segundo ProjetoO Segundo Projeto uma continuao do primeiro, incluindo alguns novos componentes e novos comandos: Vamos modificar o Formulrio de modo que ele se apresente como na figura a seguir:

O Objetivo deste programa fazer com que o usurio digite o seu primeiro nome e sobrenome nas caixas de edio prprias e clique no boto Mostrar Nome para mostrar o Nome Completo na caixa Nome Completo. Logo a seguir o usurio poder mudar a cor do nome completo atravs dos botes Azul, Vermelho e Verde. Alocar no formulrio os componentes ou objetos via palheta de componentes Standard: 6 Botes de Presso 3 caixas de textos 3 labels Ajustar as Propriedades Name, Caption e Text dos objetos atravs da Janela Object Inspector e guia Properties. Tipo de Componente Boto de Presso Name CmdFechar CmdApagar CmdMostrar CmdAzul CmdVermelho CmdVerde TxtPNome TxtSobreNome TxtNome LblPNome LblSobreNOme LblNome FrmSegundoProjeto Caption / Text &Fechar Apagar Nome Mostrar Nome Azul Vermelho Verde

Caixa de Texto

Label

Formulrio

Digite o primeiro nome Digite o sobre nome Nome Completo Segundo Projeto

Em seguida salve o projeto clicando no menu File/Save All ou Save Project As. Ateno, primeiro o Delphi solicita um nome para a Unit (sugesto: SegundoProjeto) e, depois o nome para o projeto (sugesto: Projeto2). Aps a construo do formulrio, queremos alert-lo para um procedimento da maior importncia no desenvolvimento de qualquer aplicao. Quando voc insere qualquer componente no formulrio, ele recebe um nome interno que utilizado como referncia durante a programao. Acontece que os nomes do Delphi inicialmente sugere no so ideais para uma aplicao com vrios componentes. Da necessrio que voc clique em cada um dos objetos e no Object Inspector, d nomes padronizados e sugestivos aos componentes atravs da propriedade Name. Depois de criada a interface visual e ajustadas as propriedades, vamos adicionar o cdigo necessrio para a execuo do projeto. Para os botes Mostra Nome e Apaga Nome, no evento OnClick:

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.15

CINCIA DA COMPUTAO - DELPHI

Ao clicar no boto CmdApagar, o contedo das caixas de edio TxtPNome, TxtSobreNome e TxtNome (Mtodo Clear) sero eliminados liberando espao para uma nova digitao, a cor do texto da caixa TxtNome (Propriedade Color) ser restaurada para preto e o foco ser dirigido para a caixa TxtPNome (Mtodo SetFocus). Ao clicar no boto CmdMostrar, a caixa TxtNome receber como contedo, o contedo das caixas TxtPNome e TxtSobreNome. A referncia ao contedo das caixas feita atravs do uso de uma propriedade chamada Text, encontrada no Object Inspector. Para os botes Azul, Vermelho e Verde, no evento OnClick:

Ao clicar em qualquer um destes trs botes, a cor do nome completo mostrado na caixa Nome Completo ser imediatamente alterada. Este efeito obtido porque atravs das propriedades Font e Color atribuimos uma cor de fonte diferente ao contedo (Text) no TxtNome. Por fim, clique numa rea vazia do formulrio, v pgina Events no Object Inspector e d um clique duplo no evento OnCreate. Queremos que no momento em que o projeto for executado e o formulrio for criado (transformado internamente numa janela Windows), surja uma caixa de dilogo com uma mensagem para o usurio. A caixa de dilogo surgir antes da janela do formulrio. Para isto, digite o cdigo abaixo e execute o projeto:

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.16

CINCIA DA COMPUTAO - DELPHI

Com estes dois projetos voc j deve ter percebido que a programao Delphi bastante diferente da programao procedural na qual se baseiam linguagens como o Clipper e o antigo Turbo Pascal. Nelas os cdigos de programao so escritos de cima para baixo e percebe-se claramente o nicio e o fim do programa. A nova filosofia de programao Delphi muda bastante o estilo tradicional ao permitir que a programao deixe de ser de cima para baixo e se concentre apenas nos pontos fundamentais. Voc j observou que nos exemplos descritos anteriormente a maior parte do cdigo foi escrita pelo Delphi, bastando apenas complet-la.

4. A LINGUAGEM OBJECT PASCALAgora que voc tem uma idia da aparncia de uma aplicao Delphi, viu como utilizar alguns componentes e escreveu cdigos para manipulao de eventos, voc estar mais a vontade para aprofundar-se no estudo desta nova linguagem de programao do Delphi conhecida como Object Pascal. Assim, alm de ter o contato com conceitos fundamentais como constantes, variveis, estruturas de repetio condicional, tambm comear a entender como trabalhar com a programao orientada a objetos.

Object PascalNunca demais enfatizar que a chave da programao Delphi consiste em reconhecer que ele geralmente processa um cdigo apenas em resposta a eventos. Pense num programa como um conjunto de elementos independentes que acordam apenas em resposta a eventos que forma ensinados a reconhecer. Tambm vale a pena dizer, que mesmo que voc conhea uma linguagem de programao convencional, no tente obrigar seus programas Delphi a se adaptarem s estruturas dela. Caso imponha hbitos antigos de programao enfrentar problemas. No pense num programa Delphi executando seus comandos de cima para baixo.

Algumas Observaes Sobre ComandosQuando voc digita certos comandos no Delphi ele automaticamente reconhece e negrita as palavras-chave. Alm disto, destaca de maneira bem diferenciada os comentrios ao longo do cdigo. Com exceo do que for escrito entre apstrofes , letras maisculas e espaamentos so ignorados. Sempre aconselhvel apegar-se a um mtodo padronizado de escrita de cdigo. As declaraes de comandos no utilizam linhas numeradas e normalmente cada comando est numa linha prpria. Desde que o comando esteja com a sintaxe correta, voc poder descobr-lo ao longo de vrias linhas; esta tcnica especialmente utilizada com comandos longos, pois as linhas so limitadas em 126 caracteres. Um ponto e vrgula o separador de comandos. Cada comando tem apenas um ponto e vrgula, salvo algumas excees. A declarao END de seu programa tem um ponto porque indica que o programa acabou no havendo mais nenhuma declarao abaixo.

Comentrios muito comum que seja solicitado ao programador pequenas alteraes no cdigo dos programas. Tais alteraes so muito mais simples de serem feitas quando o programador dispes de meios para lembrar-se de certos comandos. Portanto, os comentrios so sempre teis no cdigo fonte como forma de auxiliar o programador na leitura e na compreenso da finalidade dos comandos no programa.

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.17

CINCIA DA COMPUTAO - DELPHIH duas maneiras de fazer comentrios no Delphi: escrevendo seus comentrios entre chaves {}, ou escrevendo-os entre parntesis e asteriscos (* *). Por exemplo:

4.1 Composio de Programas Escritos em OBJECT PASCAL." A arte de programar consiste na arte de organizar e dominar a complexidade " ( Dijkstra ). O programa principal escritos em Pascal so divididos em trs partes: - Cabealho - Declaraes - Comandos PROGRAM ; USES ,,...; CONST ...; LABEL ...; TYPE ...; VAR ...; PROCEDURE ...; FUNCTION ...; BEGIN comandos; END. . Cabealho do Programa. PROGRAM . rea de Declaraes: . Clusula USES Identifica as bibliotecas (units) usadas programa. . Definio de Constantes ( CONST ) Declara constantes que sero usadas no programa. . Identificao de Rtulos ( LABEL ) Identifica os rtulos que sero referenciados no comando GOTO. . Definio de tipos ( TYPE ) . Declarao de Variveis. ( VAR ) . rea de definies de Procedimentos e Funes PROCEDURE FUNCTION . Comandos BEGIN comandos;... ...... END.

pelo

4.2 SMBOLOS ESPECIAIS USADOS NA LINGUAGEM.# - Procede um valor inteiro de 0 a 255, representando o caractere correspondente da tabela ASCII. Exemplo: WRITE (#7); { ALARME } $ - Procede um valor hexadecimal. Exemplo: WRITE (LST,$D); { ALIMENTAO DE PAPEL } - Delimitador de constantes alfanumricas. Exemplo: WRITE (RELAO DE ALUNOS APROVADOS);

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.18

CINCIA DA COMPUTAO - DELPHI()- Modificar a prioridade de operadores aritmticos/lgicos envolver parmetros de subprogramas e valores na rea de declaraes. , - Separar identificadores nos comandos e declaraes. Exemplo : SALDO , MEDIA : REAL; WRITE ( SALDO, MEDIA); .. - Indica um faixa de valores. Exemplo: CASE X of 1..3 : WRITE(1.FAIXA ); 4..8 : WRITE(2.FAIXA ); 9..15: WRITE(3.FAIXA ); END; : - Procede o identificador de tipo das declaraes de variveis, lista de parmetros e definies de funes e comando case.

Exemplo: FUNCTION TESTE ( X:INTEGER ) : INTEGER; := - Atribuio de valores. Exemplo : TOTAL := 0; ; - Delimitador de comandos, termina declaraes, definies e cabealhos. = - Usado como operador relacional, associa tambm tipos ou Exemplos: CONST INDICE = 1.3452; TYPE VET = ARRAY [ 1..50 ] OF INTEGER; [] - Usado na identificao de um elemento em uma matriz e na definio de conjuntos. constantes aos seus identificadores.

Exemplo: IF TECLA IN [ A .. Z ] THEN WRITE (DIGITOU UMA LETRA MAIUSCULA ); ^ - Define um identificador como ponteiro (POINTER), ou indica um caractere de controle. Exemplo: var key : char; begin readln(Key); CASE Key of ^G : writeln('DIGITOU CTRL-G '); ^D,^A : writeln('DIGITOU CTRL-D OU CTRL-A '); End; readln; end. (* *) {} - Usado para envolver comentrios dentro do programa.

4.3 TIPOS E DECLARAES DE VARIVEIS4.3.1 Declarao de VariveisSempre que desenvolvemos nossas aplicaes, surge a necessidade de armazenarmos temporariamente certas informaes. Para isto utilizamos variveis. No Delphi podemos Ter diversos tipos de variveis com caractersticas de armazenamento prprias. Tais variveis devem ser sempre bem definidas antes de tentarmos utiliz-las. Ao definir ou declarar uma varivel, indique seu nome seguido do tipo de informao que deseja que ela armazene. As variveis esto dispostas em cinco grupos: Numricas : Podem ser nmeros inteiros ou reais, formadas pelos dgitos de 0 a 9, sinais + podendo tambm conter o . para determinar a casa decimal. Alfanumricas: Podem ser formadas pr qualquer tipo de caractere da tabela ASCII. Lgicas : Podem assumir apenas dois valores: TRUE para valores verdadeiros ou FALSE para falsos. e -

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.19

CINCIA DA COMPUTAO - DELPHIData/Hora: Ponteiros : Podem armazenar data e hora, permitindo um processamento simples de data/hora. Podem armazenar apenas endereos de memria.

O nome da varivel deve ser nico em cada bloco do programa e deve conter at 255 caracteres, podendo ser composto pr letras, nmeros e sublinhado _ , porm serve sempre iniciar com uma letra e no pode ser uma palavra reservada pelo Object Pascal. aconselhvel que defina o nome da varivel de forma que esta ns lembre a funo que ela ter no contexto do programa. Alm disso, o nome de uma varivel no deve conter smbolos especiais (p.e. &%#@!), , nem ser igual ao nome de uma palavra reservada do Object Pascal. O formato de declarao de variveis deve ter a seguinte sintaxe:

VARnome_da_varivel [, nome_da_varivel ...] : tipo; Exemplo: Var Nome, SobreNome : String; Idade : Integer; N_Pessoas : Byte; Veja abaixo as palavras reservadas do Object Pascal: And Case Div Except Function Inherited Label Object Program Set To Uses As Class Do Exports Goto Inline Libray Of Property Shl Try Var Asm Const Downto File If Initialization Mod Or Raise Shr Type While Array Constructor Else Finally Implementation Interface Nil Packed Record String Unit With Begin Destructor End For In Is Not Procedure Repeat Then Until xor

4.3.2 Tipos de Variveis CategoriasLgicos Boolean Inteiros Shortint Byte Smallint Word Integer Cardinal Longint Ponto Flutuante Real Single Double Extended Comp

Tipos

FinalidadeVariveis booleanas que contm True ou False. Valores True ou False. Ocupa 1 byte. Utilizados para trabalhar com nmeros inteiros dispensando o ponto decimal; as operaes com inteiros so muito rpidas. Abrange inteiros entre 128 e 127. Ocupa 1 byte. Abrange inteiros entre o a 255. Ocupa 1 byte. Abrange inteiros entre 32768 a 32767. Ocupa 2 bytes. Abrange inteiros entre 0 a 65535. Ocupa 2 bytes. Abrange inteiros entre -2147483648 a 2147483647. Ocupa 4 bytes. Abrange inteiros entre 0 a 2147483647. Ocupa 4 bytes. Abrange inteiros entre -2147483648 a 2147483647. Ocupa 4 bytes. Destinadas operaes que podem utilizar tanto nmeros inteiros quanto nmeros com casas decimais. Abrange reais entre 2.9x10-39 a 1.7x1038 com 11 a 12 dgitos significativos e ocupa 6 bytes. Abrange reais entre 1.5x10-45 a 3.4x1038 com 7 a 8 dgitos significativos e ocupa 4 bytes. Abrange reais entre 5.0x10-324 a 1.7x10308 com 15 a 16 dgitos significativos e ocupa 8 bytes. Abrange reais entre 3.4x10-4932 a 1.1x104932 com 19 a 20 dgitos significativos e ocupa 10 bytes. Abrange reais entre 9.2x1018 a 9.2x1018 com 19 a 20 dgitos significativos e ocupa 8 bytes. O tipo Comp , na verdade, um grande inteiro e no um real. A razo de estar incluido nesta tabela que ele implementado no mesmo estilo dos tipos de ponto flutuante. Na verdade, trata-se de um inteiro de 64 bits. Tem uma preciso de 4 casas decimais, e armazenado como um inteiro de 64 bits. Usado para manusear valores monetrios. Variveis prprias para armazenar textos ou qualquer outros valores que no devero ser utilizados em operaes matemticas. Armazena apenas caracteres ASCII. Ocupa 1 byte. Comporta 255 caracteres da tabela ASCII.

Currency Caracteres Char ShortString

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.20

CINCIA DA COMPUTAO - DELPHIString[Tamanho] String AnsiString TDateTime Variant O tipo string e uma seqncia de caracteres com tamanho dinmico variando entre 1 a 255 bytes ou at ~3Gb. Comporta at ~3Gb caracteres da tabela ASCII. Armazena data e hora ocupando 8 bytes. Permite fazer operaes com datas. Flexvel o tipo definido em funo do valor atribuido a varivel, podem ser numrica (inteiro ou ponto flutuante) ou alfanumrica (string).

Data/Hora Variant

Exemplo: VAR INDICE RESP VALOR PALAVRA S_N DIA, MES, ANO QUANTIDADE BYTE; CHAR; REAL; STRING[20]; : BOOLEAN; : WORD; : INTEGER; : : : :

4.3.3 Vetores / Matrizes

4.3.3.1 Matrizes ComunsMatrizes so tipos especiais de variveis que comportam diversos dados do mesmo tipo. A referncia a cada um deles se d atravs de referncia a ndices. Cada dado de uma matriz possui um ndice exclusivo. Matrizes so declaradas abaixo da clusula Type ou abaixo da clusula Var. Sintaxe: IDENTIFICADOR : ARRAY [ Li .. Ls ] OF ; Li : Limite inferior do ndice. Ls : Limite superior do ndice. Nmero de elementos = Ls - Li + 1. Exemplos: VET +---+---+---+---+---+ | 1 | 2 | 3 | 4 | 5 | +---+---+---+---+---+ VET : ARRAY [ 1..5 ] OF INTEGER; NDICE: . literal ou identificador cujo valor seja um inteiro positivo . deve estar entre colchetes e aps o nome do vetor. Type Alfabeto = array [1..26] of string; { Esta matriz comporta 26 elementos diferentes sendo cada um deles uma varivel do tipo String } Var Numeros : array [1..7] of byte = (10, 20, 30, 40, 50, 60, 70); Meses:array[1..12] of string[3] = ('JAN','FEV','MAR','ABR','MAI','JUN','JUL','AGO','SET','OUT','NOV', 'DEZ'); BiDimensional : array [1..5, 1..3] of integer; VendasPeriodo : array [1995..1999, 1..12] of currency; Atribuio : Meses [3] := MAR; VendasPeriodo [1999, 10] := 15600.00; Exemplo: program Project1; uses Forms; {$R *.RES} var x : array[1..10] of string; i : integer;

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.21

CINCIA DA COMPUTAO - DELPHIbegin for i := 1 to 10 do begin write('Texto-',i:2,': ');readln(x[i]); end; for i:=10 downto 1 do begin writeln(x[i]); end; readln; end.

4.3.3.2 Matrizes DinmicasO uso de matrizes dinmicas altamente recomendvel no Delphi. E isto se d porque as matrizes possuem tamanho varivel ao invs de fixo, e isto particularmente vantajoso quando se necessita pass-las como parmetros para uma procedure ou function. Veja o exemplo abaixo: program Project1; uses Forms; {$R *.RES} Procedure Armazena (Numeros: array of integer); { Note que o limite no foi especificado } Var I : Integer; Total : Integer; Begin Total := 0; For I := 0 to High (Numeros) do { O comando High fornece o ndice mximo da matriz recebida na procedure } Total := Total + Numeros [I]; Writeln('Somatorio dos elementos do vetor: ',total); Readln; End; // Ao utilizarmos a procedure, teramos no programa: Var Dados : array [1..5] of integer = (12, 56, 78, 34, 77); { Os nmeros entre parntesis so exemplos de um contedo possvel para a matriz Dados } Begin Armazena (Dados); { Armazena a chamada procedure que passa como parmetro todos os valores da matriz } End.

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.22

CINCIA DA COMPUTAO - DELPHI

4.3.3.3 Matrizes de StringsUma varivel do tipo String tambm pode ser tratada e considerada como uma matriz de at 255 ocorrncias. Isto se d porque cada caractere componente de uma String, pode ser tratado separadamente atravs de referncia a seu ndice. Por exemplo: program VarStr; uses Forms; {$R *.RES} var teste : string; i : byte; begin teste := 'Face / Fumec'; writeln(teste); for i:=1 to length(teste) do begin writeln(upcase(teste[i])); end; readln; end.

4.3.4 Tipo Record - RegistrosO Record um tipo especial de varivel que capaz de agrupar vrios tipos de variveis na memria. Suas caractersticas so semelhantes s de um registro de um banco de dados, uma vez que estes podem conter campos de diversos tipos de dados. O Record utilizado preferencialmente para agrupar variveis que se relacionam. Exemplos: Declarao de Registro de dados pessoaisl: TYPE TPES = RECORD NOME : STRING[30]; ENDERECO : STRING[40]; BAIRRO : STRING[15]; CIDADE : STRING[20]; CEP : STRING[8]; IDADE : BYTE; SEXO : CHAR; END; VAR REGPES : TPES;

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.23

CINCIA DA COMPUTAO - DELPHIDeclarao de Registro de dados de Clientes: TYPE TCLI = RECORD RAZAOSOC : STRING[30]; ENDERECO : STRING[40]; BAIRRO : STRING[15]; CIDADE : STRING[20]; CEP : STRING[8]; TELEF : STRING[10]; CGC : STRING[14]; END; VAR REGCLI : TCLI; Acesso aos campos do registro: Um campo pode ser trabalhado normalmente como uma varivel e a referencia e feita da seguinte forma: Exemplo: REGCLI.RAZAOSOC := 'EMPRESA ABC'; REGPES.IDADE := 25; WITH REGPES DO BEGIN With usado para facilitar NOME := 'CARLOS EDUARDO'; ENDERECO := 'RUA XYZ'; variveis do registro. CEP := '30480000' END; Vetor de Registros: E um vetor em que cada elemento um registro. Exemplos: Vetor de nome dos meses do ano e quantidade de dias do ms. TYPE R = RECORD MES : STRING[9]; DIAS : BYTE; END; V = ARRAY [1..12] OF R; VAR TABMES : V; I : BYTE; BEGIN TABMES[1].MES := 'JANEIRO'; TABMES[1].DIAS := 31; TABMES[2].MES := 'FEVEREIRO' TABMES[2].DIAS := 28; TABMES[3].MES := 'MARCO'; TABMES[3].DIAS := 31; TABMES[4].MES := 'ABRIL'; TABMES[4].DIAS := 30; TABMES[5].MES := 'MAIO'; TABMES[5].DIAS := 31; TABMES[6].MES := 'JUNHO'; TABMES[6].DIAS := 30; TABMES[7].MES := 'JULHO'; TABMES[7].DIAS := 31; TABMES[8].MES := 'AGOSTO'; TABMES[8].DIAS := 31; TABMES[9].MES := 'SETEMBRO'; TABMES[9].DIAS := 30; TABMES[10].MES := 'OUTUBRO'; TABMES[10].DIAS := 31; TABMES[11].MES := 'NOVEMBRO'; TABMES[11].DIAS := 30; TABMES[12].MES := 'DEZEMBRO'; TABMES[12].DIAS := 31; FOR I := 1 TO 12 DO WRITELN('O MES DE ',TABMES[I].MES,' TEM , TABMES[I].DIAS,' DIAS.');

a referncia as

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.24

CINCIA DA COMPUTAO - DELPHIEND.

4.4 ConstantesConstantes so valores especiais que geralmente so definidos no nicio do programa e, se destinam a armazenar informaes ou valores que no se alteram ao longo da execuo do programa. Veja abaixo um exemplo de declarao de constantes no Delphi. Const PI = 3.1416; Linguagem : String = Delphi; dia : array [0..6] of String[9] = ('Domingo' , 'Segunda' , 'Tera' , 'Quarta' , 'Quinta' , 'Sexta',

'Sbado');

As declaraes de constantes no alocam recursos do sistema. De fato, isto somente ocorre quando elas forem utilizadas na aplicao. Contudo, a constante Linguagem ter um tratamento diferente, uma vez que ela uma constante tipada, ou seja, seu tipo (string) j foi previamente definido.

4.5 OperadoresSo sinais responsveis pela modificao no fluxo do programa ou no contedo de variveis. Eles so extremamente teis e amplamente utilizados. A ttulo de exemplificao vale mencionar o operador de atribuio := que necessrio para determinar o contedo das variveis ( por Exemplo: A := 1; ).

4.5.1 OPERADORES ARITMTICOS+ * / DIV : : : : : ADIO DE NMEROS INTEIROS OU REAIS. SUBTRAO DE NMEROS INTEIROS OU REAIS. MULTIPLICAO DE NMEROS INTEIROS OU REAIS. DIVISO DE NMEROS INTEIROS OU REAIS. DIVISO ENTRE NMEROS INTEIROS COM O RESULTADO TAMBM INTEIRO. Exemplo : X := A DIV B; : RESTO DA DIVISO ENTRE NMEROS INTEIROS. Exemplo : X := A MOD B;

MOD

4.5.2 OPERADORES RELACIONAISPodem ser usados com todos os tipos, normalmente, so usados em expresses lgicas, retornando sempre um resultado lgico TRUE ou FALSE. = > < >= 0 ) AND ( Y > 0 ) THEN Z :=0; : VERDADEIRO QUANDO PELO MENOS UM DOS OPERANDOS FOR VERDADEIRO. Exemplo : IF ( A = B ) OR ( C = D ) THEN EXIT; : S VERDADEIRO SE APENAS UM DOS OPERANDOS FOR VERDADEIRO Exemplo : IF ( A = B ) XOR ( C = D ) THEN EXIT;

AND

OR

XOR

4.5.4 CONJUNTOSIN : VERDADEIRO SE O OPERANDO PERTENCER AO CONJUNTO. Exemplo : IF LETRA IN [A .. E , a .. e] THEN

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.25

CINCIA DA COMPUTAO - DELPHIEXIT;

4.5.5 STRINGS+ : PERMITE A CONCATENAO ENTRE STRINGS. Exemplo : ESCOLA := FACE + - + FUMEC ;

4.5.6 DATA - HORA+ : Permite adicionar um nmero a uma data obtendo uma data resultante. Exemplo : Data_Vencimento := Date + Prazo; : Permite Subtrair duas datas obtendo a diferena em dias. Exemplo : Dias := Data_Vencimento - Date;

-

Exemplo: program Project1; uses Forms, sysutils; {$R *.RES} var DT : string; begin Readln(DT); Writeln(Formatdatetime('DDDDDD',strtodatetime(DT))); Writeln(formatfloat('###,##0',date - strtodatetime(DT))); readln; end.

4.5.7 PRIORIDADES NAS EXPRESSES USADAS NO PASCAL.1 2 3 4 EXPRESSES DENTRO DE PARNTESES. OPERADOR UNRIO MENOS. OPERADOR NOT. OPERADORES : * , / , DIV , MOD e AND .

5 - OPERADORES : + , - , OR e XOR . 6 - OPERADORES RELACIONAIS : = , < , > , , = e IN .

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.26

CINCIA DA COMPUTAO - DELPHI 4.6 Comandos 4.6.1 Comando de AtribuioPermite atribuir a uma varivel o resultado de uma expresso , valor de uma outra varivel ou uma constante.

Sintaxe: := ; 4.6.2 Comandos de Deciso 4.6.2.1 Comando IF ... Then ... ElseO comando IF um dos comandos mais importantes e bsicos da programao Object Pascal. Ele utilizado para determinar o fluxo do programa a partir de determinada condio. Caso a situao pela qual o programa estiver passando confirme uma dada condio, o programa executar os comandos abaixo da clusula Then; caso contrrio, executar as instrues abaixo da clusula Else. A clusula Else, em funa das necessidades do programa pode ser omitida. Neste caso, se a situao da execuo do programa no satisfazer a condio estabelecida no IF, prosseguir no seu funcionamento normal. ALTERNATIVA SIMPLES IF THEN ;

ALTERNATIVA SIMPLES IF THEN BEGIN ; ; ; ... END; ALTERNATIVA COMPOSTA IF THEN ELSE ; ALTERNATIVA COMPOSTA IF THEN BEGIN ; END ELSE BEGIN ; ... END;

4.6.2.2 Comando CaseO Case uma estrutura que permite que o programador avalie o valor de uma determinada varivel. A avaliao sempre realizada em relao a constante ou intervalos de valores. Poderamos dizer que o Case funciona de maneira similar ao IF, embora do ponto de vista prtico, seja completamente diferente, pois permite obter o mesmo efeito de vrios comandos IF em funcionamento conjunto com apenas um comando Case. Sintaxe: ALTERNATIVA DE MLTIPLA ESCOLHA CASE OF ,,...: ; ,,...: BEGIN ; END; [ELSE ----

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.27

CINCIA DA COMPUTAO - DELPHI ]; END; Exemplo: Case NotaFinal of 100 : Begin ShowMessage (Aprovado Excelente); Contador := Contador + 1; End; 80..99 : ShowMessage (Aprovado); 0..79 : ShowMessage (Reprovado); End;

4.6.3 Estruturas de Repetio muito comum para o programador surgir situaes em que se faz necessrio a repetio de determinado conjunto de comandos. Na verdade estas situaes nos levam a utilizar comandos muito interessantes que sem dvida sero capazes de resolver o problema. Contudo para que seja assim, muito importante que o programador determine at quando deseja que os comandos sejam repetidos. Existem algumas opes: (1) um nmero determinado de vezes e (2) at que determinada condio seja atendida.

4.6.3.1 Comando FORA estrutura FOR permite que um conjunto de comandos sejam executados num determinado nmero de vezes. O Nmero de vezes armazenado em uma varivel inteira de controle da repetio. Sintaxe: REPETIO PARA-FAA // PASSO = 1

FOR := TO DO < comando >; FOR := TO DO BEGIN < comandos >; END; FOR := DOWNTO DO BEGIN < comandos >; END; Exemplo: Var I : Byte; Begin

// PASSO = 1

// PASSO = -1

For I := 1 to 10 do Begin ShowMessage (Esta a mensagem nmero: + IntToStr(I)); End; End;

4.6.3.2 Comando WHILEA estrutura do comando while tambm possibilita a repetio de um conjunto determinado de comandos. No entanto, diferentemente do For, permite a definio de condies para o trmino da repetio que no esto limitadas necessariamente a uma contagem. S condies so verificadas no inicio do processamentoe, uma vez satisfeitas, os comandos internos a ela comeam a ser repetidos at que alguma situao permita negar as condies iniciais. Sintaxe: REPETIO ENQUANTO-FAA WHILE DO ; WHILE DO BEGIN ; ; ... END; Exemplo: Var Digitos : Integer ; Terminas : Boolean ; Begin

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.28

CINCIA DA COMPUTAO - DELPHIDigitos :=0; Termina := True; While Termina do Begin Digitos := Digitos + 1; If Digitos = 100 then Termina := False; End; End.

4.6.3.3 Comando Repeat ... UntilO comando Repeat funciona de maneira anloga ao comando While. Na verdade entre eles existe apenas duas diferenas: (1) ao invs do Repeat verificar se as condies da repetio esto sendo atendidas no nicio de seu processamento, ele as verifica ao final da repetio; (2) dispensa o uso dos comandos Begin e End. Sintaxe: REPETIO REPITA-AT REPEAT ; UNTIL ; Exemplo: Var Digitos : Integer ; Terminas : Boolean ; Begin Digitos :=0; Termina := False; Repeat Digitos := Digitos + 1; If Digitos = 100 then Termina := True; Until Termina; End.

4.6.3.4 Comandos Break / Continue ( Desvios dentro da repetio)Estes comandos, exceo daqueles demonstrados at agora, no so de repetio condicional, mas possuem importante papel junto estes. Eles so usados em apenas duas situaes: (1) quando se deseja interromper o processamento de um estrutura de repetio - Break; (2) quando for necessrio garantir a continuidade do processamento de uma estrutura de repetio - Continue. Exemplo: Var I : Integer; Begin For I := 1 to 3 do If (I mod 2) 0 then Continue; For I := 1 to 3 do If (I mod 2) = 0 then Break; End;

4.6.4 Comandos de desvioOutro recurso que existe na linguagem Object Pascal a capacidade de desviar no cdigo, isto a capacidade de pular para outra parte do cdigo, quando necessrio.

4.6.4.1 GOTOA instruo GOTO permite que voc salte de onde est no programa para uma linha rotulada especfica. Exemplo:

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.29

CINCIA DA COMPUTAO - DELPHI 4.6.4.2 EXITUse o comando EXIT para sair do bloco corrente. Se o bloco corrente o programa principal EXIT faz o programa terminar. Se o bloco corrente est aninhado, EXIT faz com que o bloco mais externo continue na instruo imediatamente aps a que passou o controle para o bloco aninhado. Se o bloco corrente uma procedure ou funo, EXIT provoca a saida da funo ou procedure para continuar aps o ponto em que foi chamado. Exemplo: PROCEDURE Teste ( X : Integer) ; BEGIN IF X = 0 then EXIT; ... ... END;

4.6.5 Comandos para Entrada e Sada de Dados (Padro- Janela DOS)COMANDO DE ENTRADA DE DADOS (TECLADO) READ (,,...); COMANDO DE SADA DE DADOS (VDEO) WRITE (,,,..); COMANDO DE ENTRADA DE DADOS (TECLADO) READLN (,,...); COMANDO DE SADA DE DADOS (VDEO) WRITELN (,,,..);

4.7 Sub-Rotinas Procedures e FunctionsUma problemtica pode surgir durante a programao: como evitar a repetio da escrita de comandos que realizam um conjunto rotineiro de aes. Em decorrncia desta problemtica que em muitos casos durante a programao, surge uma idia que a soluciona: o uso de procedimentos (procedures) e funes (functions). A nica diferena real entre as duas construes que as funes tem um valor de retorno, enquanto os procedimentos no retornam um valor. Modelo geral de um programa Object Pascal: program ... ; { Cabealho do Programa }

uses ... ;label ... ; const ... ; type ... ; var ... ;

{ Especificao Uses }{ Labels } { Constantes } { Tipos } { Variveis }

procedure ... ; { Procedures } function ... ; { Functions }begin comando; ... end. { comandos }

Sintaxe Procedures: Procedure identificao; Declaraes; Begin Comandos; End; Procedure identificao ( parmetros ); Declaraes; Begin Comandos; End; Exemplos: { Esta Procedure possui parmetros } Procedure Mensagem1 (Var Msg : String);

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.30

CINCIA DA COMPUTAO - DELPHIBegin ShowMessage (Msg); End; { Esta Procedure no possui parmetros } Procedure Mensagem2; Begin ShowMessage (Bem Vindo ao Delphi); End;

Exibe Caixa de Mensagem

Chamada da Procedure no programa: Mensagem1 (Esta mensagem aparecer no vdeo e o parmetro da procedure); Mensagem2; Sintaxe Functions: Function identificao : Tipo; Declaraes; Begin Comandos; End; Function identificao ( parmetros ) : Tipo; Declaraes; Begin Comandos; End; Exemplos: Function SomaNumeros (Var N1, N2 : Integer) : Integer; Begin { esta a rea de cdigo da funo } SomaNumeros := N1 + N2; End; Chamada da Function no programa: X := SomaNumeros (2,3); { os parmetros da function tm que ser nmeros inteiros }

Tipo do Valor Retornado

Parmetros de RefernciaNos exemplos acima muito importante observar que tanto os procedimentos quanto as funes podem receber parmetros ou no. Os parmetros so informaes passadas que so necessrias para o funcionamento de uma subrotina e podem ser passados por valor ou referncia quando expressos atravs da palavra-chave Var. Exemplo: Function PROD(X : real; var Y : real) : real; begin PROD := X * Y; X := 1; Y := 1; end;

{--* PROGRAMA PRINCIPAL *--} begin A := 2; B := 10; writeln (PROD (A,B)); end.

As variveis A e Y ocupam o mesmo endereo.

4.8 Procedimentos e Funes Predefinidas usuais do Object Pascal

A linguagem Pascal coloca disponvel aos usurios um conjunto de funes e procedimentos distribudos em UNITS (as units so rotinas compiladas separadamente do programa principal), com a finalidade de facilitar e agilizar a programao.

Funes e Procedures predefinidas usuais

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.31

CINCIA DA COMPUTAO - DELPHI

4.8.1 Manipulao de strings 4.8.1.1 CHR

Retorna o caratere correspondente ao cdigo ASCII fornecido. Unit System function Chr(x : Byte) : Char; Exemplo:

Uses ....., Printers; Var P : TextFile; Begin AssignPrn(P); Rewrite(P); { Envia um form feed para a impressora } Writeln(P, chr(12) , Testando a Impressora); CloseFile(P); End;

4.8.1.2 CONCAT Concatenar os strings especificados. Unit System function Concat(s1, s2 [, s3, ..., sn] : string) : string;

Exemplo: var S: string; begin S := Concat('ABC', 'DEF'); end;

{ 'ABCDEF' }

4.8.1.3 COPY Retorna um substring de um string , isto , retorna uma parte se S, desde inicio e com o tamanho especificado. Unit System function Copy(s : string; inicio, tamanho : Integer) : string; Exemplo: var s, s1 : string; begin s := 'ABCDEF'; s1 := Copy(s, 2, 3) { 'BCD' } end; 4.8.1.4 DELETE Elimina parte do string S; comea em inicio com o tamanho especificado.

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.32

CINCIA DA COMPUTAO - DELPHIUnit System procedure Delete(var s : string; inicio, tamanho : Integer); Exemplo: var s: string; begin s := 'Honest Abe Lincoln'; Delete(s,8,4); WriteLn(s); { 'Honest Lincoln' } end.

4.8.1.5 INSERT Insere um string origem em s apartir da posico inicio. Unit System procedure Insert(origem : string; var s : string; inicio: Integer); Exemplo: var s: string; begin s := 'Honest Lincoln'; Insert('Abe ', s, 8); WriteLn(s); { 'Honest Abe Lincoln' } end. 4.8.1.6 LENGTH Retorna o nmero de caracteres do string. Unit System function Length(s : string) : Integer; Exemplo: var S : string; begin read(S); write(length(S)); end. 4.8.1.7 POS Retorna a posio do inicio do string s1 dentro do string s2. (retorna 0 se no encontrar) Unit System function Pos(s1,s2 : string) : Byte; Exemplo: var s: string; begin s := ' 123.50'; { Converte espaos para zeros } while Pos(' ', s) > 0 do s[Pos(' ', s)] := '0'; end.

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.33

CINCIA DA COMPUTAO - DELPHI4.8.1.8 UPPERCASE - LOWERCASE Uppercase - Retorna o String com letras maisculas. Lowercase - Retorna o String com letras minsculas. Unit SysUtils function UpperCase(const S: string): string; function LowerCase(const S: string): string; Exemplo: Uses Sysutils; var s : string; i : Integer; begin Write('Digite um string: '); ReadLn(s); WriteLn('Converso do string para maisculo: ',Uppercase(s)); Readln; end. 4.8.1.9 STR

Transforma um nmero em representao string; x pode ser inteiro ou real; S passa a conter representao string de x com a largura e casas decimais especificadas. Unit System procedure Str(x [ : tamanho [ : decimais ]]; var s : string);

Exemplo: var F : string; N : integer; begin N:=1492; str(N:7,F); write(F); end.

(* ' 1492' *)

4.8.1.10 VAL Converte string S em numero n. A posio de qualquer erro no string S reportada no parmetro cdigo. Se cdigo = 0, a converso foi feita com sucesso. Unit System procedure Val(s : string; var n; var codigo : Integer); Exemplo: Program conver; var X : string; Y,Z : integer; begin X:='9876'; Val(X,Y,Z); writeln(Y); writeln(Z); readln; end.

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.34

CINCIA DA COMPUTAO - DELPHI

4.8.1.11 TRIM TRIMLEFT - TRIMRIGHT Trim - Retira espaos a esquerda e direita da string TrimLeft - Retira espaos a esquerda da string TrimRight - Retira espaos a direita da string Unit SysUtils function Trim(const S: string): string; function TrimLeft(const S: string): string; function TrimRight(const S: string): string; Exemplo: If Trim(EditNome.Text) = then Begin ShowMessage(Falta Informar o Nome); EditText.SetFocus; Exit; End;

4.8.1.12 ORD Retorna o cdigo ASCII do caractere da vativel x. Unit System function Ord(x:char) : Longint;

Exemplo: program MINUSCULA; var I:integer; (* MINUSC retorna um string com caracteres Minusculos*) function MINUSC(C : STRING) : STRING; var I : integer; begin for I := 1 to length(C) do if (ord(C[I]) >= 65) and (ord(C[I]) MODAL procedure TForm1.Button1Click(Sender: TObject); begin Application.CreateForm(TForm2, Form2); {Carrega form na memria} Form2.ShowModal; {Mostra form em modo exclusivo} Form2.Free; {Libera Memria} end; Form2 => NO MODAL procedure TForm1.Button1Click(Sender: TObject); begin Application.CreateForm(TForm2, Form2); {Carrega form na memria} Form2.Show; {Mostra form em modo no exclusivo} end; //No evento OnClose do Form2 coloque o seguinte cdigo. procedure TForm2.FormClose (Sender: Tobject; var Action : TCloseAction); begin Action:= caFree; {Libera Memria} end; Descobrindo se um form no modal j est criado Quando um form ou outro objeto no existe, ou seja, ainda no foi criado, a varivel usada para instanciar o objeto est "nil". If form2 = nil then {form2 no criado ainda ou j foi fechado} // Lembre-se de fazer o form2, no seu evento close, receber nil. form2 := nil; // Assim ele estar fechado e no existir mais. procedure TForm1.Button1Click(Sender: TObject); begin if Form2 nil then exit; Application.CreateForm(TForm2, Form2); Form2.Show; {Mostra form em modo no exclusivo} end; //No evento OnClose do Form2 coloque o seguinte cdigo. procedure TForm2.FormClose (Sender: Tobject; var Action : TCloseAction); begin Action:= caFree; {Libera Memria} Form2 := nil; end;

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.55

CINCIA DA COMPUTAO - DELPHIExerccio: Mostrar um Form de LogOn antes do Form principal. * Crie um novo Projeto. Este certamente ter o Form1. * Adicione um novo Form (Form2). * Coloque no Form2 dois botes TBitBtn. * Mude a propriedade Kind do BitBtn1 para bkOK. * Mude a propriedade Kind do BitBtn2 para bkCancel. * V no menu "Project/Options" na aba "Forms" e passe o Form2 de "Auto-create Forms" para "Available Forms". * Abra o arquivo Project.dpr (menu Project/View Source). * Altere o contedo deste arquivo conforme abaixo: program Project1; uses Forms, Controls, Unit1 in 'Unit1.pas' {Form1}, Unit2 in 'Unit2.pas' {Form2}; {$R *.RES} begin Form2 := TForm2.Create(Application); // Criao do Form2 if Form2.ShowModal = mrOK then // Abertura e fechamento c/ o boto ok? begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end; end. 5.7.2.2 Caixa de Textos Edit Controle usado para entrada ou sada de dados, incluso, alterao ou exibio de textos. Propriedades usuais para o Edit Font Ajustar a cor do texto, Nome da Fonte, Tamanho, Estilo. Enable Se False s permite sada de dados e o campo no recebe foco. MaxLength Se maior do que Zero define o mximo de caracteres permitidos em uma entrada de dados. ReadOnly Se true apesar do campo receber foco o usurio no consegue alterar seu contedo. Text : Recebe o contudo da caixa de texto. Left e Top Coordenadas de posicionamento da caixa de texto no formulrio. Left - Distncia da margem esquerda do formulrio at a margem esquerda da caixa de texto, Top - distncia do topo do formulrio at o topo caixa de texto. Height e Width Define as dimenses da caixa de texto (Height : Altura, Width: Largura). Visible Se false a caixa de texto desaparece do formulrio. Eventos usuais para o Edit OnChange: Ocorre quando o contedo da caixa de texto for alterado. Exemplo: procedure TForm1.Edit1Change(Sender: TObject); begin if trim(edit1.text) '' then button1.Enabled := true // Habilita Boto else button1.Enabled := false; // Desabilita Boto end; OnEnter, OnExit: OnEnter : Ocorre quando a caixa de texto recebe o foco. OnExit : Ocorre quando a caixa de texto perde o foco. Exemplo: procedure TForm1.Edit1Enter(Sender: TObject); begin Edit1.Color := clYellow; // Altera cor do fundo end; procedure TForm1.Edit1Exit(Sender: TObject); begin

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.56

CINCIA DA COMPUTAO - DELPHIEdit1.Color := clWindow; // Altera cor do fundo end; OnKeyPress : Ocorre quando o usurio pressiona uma tecla durante o preenchimento do campo (caixa de texto). Exemplo: procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin // Mudar o foco para o prximo campo se pressionar // Na rotina de tratamento de evento o programador tem acesso a // tecla pressionada if Key = chr(13) then Edit2.Setfocus; end; Mtodos usuais para o Edit Clear Comando para limpar a caixa de texto. Ex: Edit1.Clear ; SetFocus Comando para colocar o foco na caixa de texto. Ex: Edit1.SetFocus ; 5.7.2.3 Caixa de Textos Memo Controle usado para entrada ou sada de dados, incluso, alterao ou exibio de textos com mltiplas linhas.

Propriedades usuais para o Memo As propriedades do Edit so vlidas para o Memo. Lines Contm linhas individuais dentro da caixa de texto de mltiplas linhas. ScrollBars Determina a presena da barra de Scroll no controle: (ssNone, ssHorizontal, ssVertical, ssBoth). Memo1.Lines.Clear Comando para limpar todas as linhas da caixa de texto. Ex: Memo1.Lines.Clear; Memo1.Lines.Append(const S: string) Comando para inserir uma linha no final no final da caixa de texto. Ex: Linhas := Memo1.Lines.Append('FUMEC'); Memo1.Lines.Add(const S: string): Integer Comando para inserir uma linha no final retornando o index da linha colocada. Ex: Linhas := Memo1.Lines.Add('FUMEC'); Memo1.Lines.LoadFromFile(const FileName:string) Carrega a caixa de texto com as linhas gravadas no arquivo texto especificado. Ex: Memo1.Lines.LoadFromFile(Exemplo.Pas); Memo1.Lines.SaveToFile(const FileName: string) Gravar o contedo da caixa de texto no arquivo texto especificado. Memo1.Lines.Text Retorna uma String com todo o contedo da caixa de texto. Memo1.Lines.Strings[Index: Integer] Retorna uma String c/ dados da linha da posio Index. Exerccio Elaborar um aplicativo para Abrir e visualizar o contedo de Arquivo Texto via componente Memo. Funes: Abertura, leitura, visualizao e fechamento de arquivo texto. Formatao: Possibilidade de alterar a Fonte , Estilo, Tamanho, Efeitos e Cor do Texto).

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.57

CINCIA DA COMPUTAO - DELPHI5.7.2.4 Rtulo ou Label Componente usado para sada de dados ou nome de campos em formulrios. Propriedades usuais para o Label Alignment Controle horizontal do texto dentro do Label. type TAlignment = (taLeftJustify, taRightJustify, taCenter); AutoSize : (False ou True) Determina quando o tamanho do label automaticamente dimensionado para acomodar o texto. Cursor Especifica a imagem usada para representar o ponteiro do mouse quando ele passa sobre a regio do controle. Valores : crDefault usa o cursor default do windows usualmente crArrow.

FocusControl Determina o controle associado com o label para recepo de foco via tecla de atalho. Hint Contm o texto que pode aparecer quando o usurio move o mouse sobre o controle. ShowHint : ( True ou False) Determina se o controle pode mostrar o Help Hint quando o mouse move sobre o controle. Mtodos usuais para o Label OnClick Ocorre quando o usurio clica no controle. OnMouseMove Ocorre quando o usurio move o mouse sobre o controle Exerccio Elaborar um aplicativo para testar as propriedades Hint, ShowHint, FocusControl, Cursor e eventos OnClick e OnMoveMouse do controle Label.

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.58

CINCIA DA COMPUTAO - DELPHICdigo - Evento OnMouseMove procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Label1.Hint := DateTimeToStr(Now); Label1.ShowHint := true; end; Cdigo - Evento OnClick procedure TForm1.Label2Click(Sender: TObject); begin WinExec('Start http://www.fumec.com.br',0); end; 5.7.2.5 Boto de Comando Button Componente usado solicitar uma ao do aplicativo. Propriedades usuais para o Button ModalResult Determina quando e como o boto fecha um formulrio modal secundrio. Ajustando a propriedade ModalResult uma maneira simples de fechar um formulrio modal atravs do click no boto, a propriedade ModalResult do formulrio ajustada com o mesmo valor da propriedade ModalResult do boto selecionado.

Exerccio Elaborar um aplicativo para testar a propriedade ModalResult para o Componente Button e Formulrio Modal.

Cdigo - Evento OnClick procedure TForm1.Button1Click(Sender: TObject); begin Form2.ShowModal; // Abrir Form2 Modal if form2.ModalResult = mrYes // Qual boto Fechou Form2 ? then ShowMessage('Fechou formulrio com Sim') else ShowMessage('Fechou formulrio com No'); end; 5.7.2.6 Boto de Comando c/ imagem - BitBtn

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.59

CINCIA DA COMPUTAO - DELPHIControle com imagem (Bitmap), usado solicitar uma ao do aplicativo. Propriedades usuais para o BitBtn Glyph :Especifica o bitmap que aparece no boto.

5.7.2.7 Boto de Opo RadioButton Usado dentro de um grupo de botes de opo para mostrar uma mltipla escolha, na qual o usurio s pode selecionar uma opo de cada vez.

Propriedades usuais p/ o RadioButton Checked : (True ou False) Determina se a opo representada pelo boto de rdio foi selecionada. Caption Especifica um texto string para identificar o boto de rdio para o usurio.

5.7.2.8 Frame GroupBox Usado para relacionar controles no formulrio, comportando com um container de controles. Propriedades usuais p/ o GroupBox Enabled : (True ou False) Desabilitar o GroupBox e todos os controles internos. Visible : (True ou False) Ocultar o GroupBox e todos os controles internos. Caption Especifica um texto string para identificar o GroupBox.

5.7.2.9 Caixa de Verificao CheckBox Usado para criar uma caixa que o usurio pode facilmente indicar se algum tem verdadeiro ou falso, ou para mostrar mltiplas opes quando o usurio pode escolher mais de uma ao mesmo tempo.

Propriedades usuais p/ o CheckBox

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.60

CINCIA DA COMPUTAO - DELPHIChecked : (True ou False) Determina se a opo representada pelo CheckBox foi selecionada. Caption Especifica um texto string para identificar o CheckBox para o usurio. 5.7.2.10 Caixa de Lista de Itens (ListBox) O componente ListBox mostra uma lista de tens na qual o usurio pode ver uma lista de itens com scroll e ordenados, selecionar um tem ou mais tens, podendo tambm incluir ou excluir tens.

Propriedades usuais para o ListBox

Items Contm tens individuais (Strings) que aparecem dentro da Lista. MultiSelect : (True ou False) Determina se o usurio pode selecionar um ou mais de um tem ao mesmo tempo. Selected[Index: Integer]: Boolean; Indica quando um determinado tem foi selecionado. Sorted : (True ou False) Especifica se os tems de uma lista so ordenados alfabeticamente. Mtodos usuais para o ListBox ListBox1.Items.Clear Comando para limpar todos os tens da lista. Ex: ListBox1.Items.Clear; ListBox1.Items.Append(const S: string) Comando para inserir um tem no final no final da lista. Ex: ListBox1.Items.Append('FUMEC'); ListBox1.Items.Add(const S: string): Integer Comando para inserir um tem no final da lista retornando o index do tem colocado. ListBox1.Items.IndexOf(const S: string): Integer Retorna a posio da 1a. Ocorrncia do Item na lista. Caso o tem no exista ser retornado -1. ListBox1.Items.LoadFromFile(const FileName:string) Carrega a lista com os tens gravadas no arquivo texto especificado. Ex: ListBox1.Items.LoadFromFile(Itens.txt); ListBox1.Items.SaveToFile(const FileName: string) Gravar o contedo da lista no arquivo texto especificado. ListBox1.Items.Strings[Index: Integer] Retorna uma String c/ dados do tem da posio Index. ListBox1.Items.Delete(Index: Integer) Exclui o tem da posio Index na lista. Exerccio Elaborar um aplicativo para verificar quais os tens de uma lista o usurio selecionou. O usurio poder indicar se deseja selecionar um ou vrios tens na lista.

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.61

CINCIA DA COMPUTAO - DELPHI

Cdigo - Evento OnClick RadioButton procedure TForm1.RadioButton1Click(Sender: TObject); begin ListBox1.MultiSelect := True; end; procedure TForm1.RadioButton2Click(Sender: TObject); begin ListBox1.MultiSelect := False; end; Cdigo - Evento OnClick Button procedure TForm1.Button1Click(Sender: TObject); var I : integer; Resp : String; begin if Listbox1.MultiSelect // Lista com Mltiplas Selees then begin if ListBox1.SelCount = 0 then exit; Resp := 'Os tens abaixo foram selecionados:' + chr(13)+chr(10); for i := 0 to listbox1.items.Count - 1 do begin if listbox1.Selected[I] then Resp := Resp + ListBox1.Items.Strings[I] + chr(13)+chr(10); end; Showmessage(Resp); end else if ListBox1.itemindex >= 0 then // Lista com Seleo simples Showmessage('Opo Selecionada pelo Usurio: ' + trim(ListBox1.Items.Strings[ListBox1.ItemIndex])); end; Exerccio Elaborar um aplicativo para incluir e excluir tens em um ListBox a partir de um string de um Edit, excluir tambm tens selecionados na ListBox, gravar a lista ou carregar a lista a partir do arquivo texto Itens.txt.

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.62

CINCIA DA COMPUTAO - DELPHICdigo - Salvar e Carregar a Lista Arquivo texto Itens.txt procedure TForm1.BitBtn2Click(Sender: TObject); begin if ListBox1.Items.Count > 0 then ListBox1.Items.SaveToFile('Itens.txt'); end; procedure TForm1.BitBtn1Click(Sender: TObject); begin if FileExists('Itens.txt') then ListBox1.Items.LoadFromFile('Itens.txt'); end; Cdigo - Incluir e excluir tens na lista via Edit procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.Append(Edit1.Text); end; procedure TForm1.Button3Click(Sender: TObject); begin While ListBox1.Items.Indexof(Edit1.text) -1 do ListBox1.Items.Delete (ListBox1.Items.Indexof(Edit1.text)); end; Cdigo para excluir tens selecionados na lista procedure TForm1.Button2Click(Sender: TObject); Label Inicio; Var I : Integer; begin if ListBox1.Items.Count > 0 then Exit; INICIO: For I := 0 to ListBox1.Items.Count -1 do if ListBox1.SelCount > 0 then if ListBox1.selected[I] then begin ListBox1.Items.Delete(I); GOTO INICIO; end; end; 5.7.2.11 Caixa de Verificao CheckListBox Usado para criar uma lista, sendo que cada tem comporta-se como uma caixa de verificao que o usurio pode facilmente indicar se algum tem verdadeiro ou falso, podendo marcar mais de um tem ao mesmo tempo.

Propriedades usuais para o CheckListBox Items Contm tens individuais (Strings) que aparecem dentro da Lista. Checked[Index: Integer]: Boolean; Indica quando um determinado tem foi marcado. Selected[Index: Integer]: Boolean; Indica quando um determinado tem foi selecionado. Sorted : (True ou False) Especifica se os tems de uma lista so ordenados alfabeticamente. Mtodos usuais para o CheckListBox

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.63

CINCIA DA COMPUTAO - DELPHIMesmos mtodos do ListBox. Exerccio Elaborar um aplicativo para incluir no Memo todos os itens marcados na CheckListBox ao dar o clique no boto OK. Ajustar o aplicativo para marcar/desmarcar uma opo com um duplo ckick do mouse sob a opo selecionada.

Cdigo - Evento OnClick do Boto procedure TForm1.BitBtn1Click(Sender: TObject); Var I : Integer; begin Memo1.Lines.clear; For I := 0 to CheckListBox1.Items.Count - 1 do if CheckListBox1.Checked[I] then Memo1.Lines.append(CheckListBox1.items.strings[I]); end; Cdigo - Evento OnDlbClick do CheckListBox procedure TForm1.CheckListBox1DblClick(Sender: TObject); begin if CheckListBox1.Checked[CheckListBox1.ItemIndex] then CheckListBox1.Checked[CheckListBox1.ItemIndex] := false else CheckListBox1.Checked[CheckListBox1.ItemIndex] := true; end; 5.7.2.12 Caixa de Texto + Lista ComboBox Uma combinao de caixa de lista de itens ( List Box) e caixa de texto (Edit). O usurio pode escolher um item dentro da lista ou digitar um valor na caixa de texto.

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.64

CINCIA DA COMPUTAO - DELPHI

Propriedades usuais para o ComboBox Items Contm tens individuais (Strings) que aparecem dentro da Lista. Style Determina a forma e o funcionamento do ComboBox. Sorted : (True ou False) Especifica se os tems de uma lista so ordenados alfabeticamente. Mtodos usuais para o ComboBox Mesmos mtodos do CheckListBox.

Exerccio Elaborar um aplicativo para incluir no ComboBox (Style csDropDownList) uma tabela de Histricos a partir do arquivo Historicos.txt e mostrar qual o histrico que o usurio selecionou.

Cdigo - Evento OnClick do Boto procedure TForm1.BitBtn1Click(Sender: TObject); begin if ComboBox1.ItemIndex = -1 then exit; ShowMessage('Opo Selecionada: ' + ComboBox1.Items.Strings[ComboBox1.Items.IndexOf(ComboBox1.Text)]); // ComboBox1.Text ); Melhor Alternativa end; Cdigo - Evento OnActivate do Form procedure TForm1.FormActivate(Sender: TObject);

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.65

CINCIA DA COMPUTAO - DELPHIbegin if FileExists('Historicos.txt') then ComboBox1.Items.LoadFromFile('Historicos.txt'); end; 5.7.2.13 Componente Image Usar Image para exibir uma imagem. Propriedades usuais para o Image Picture Especifica a imagem que aparece no objeto image. Mtodos usuais para o Image Picture.LoadToFile(const FileName:string) Carrega uma imagem a partir de um arquivo (bmp (bitmap), ico (cone), wmf (metafile) ). 5.7.2.14 Caixa de Textos com Formatao-MaskEdit Controle usado para entrada ou sada de dados, incluso, alterao ou exibio de textos com formatao e validao. Propriedades usuais para o MaskEdit MaskEdit : A propriedade definida a partir de 3 campos separados por ponto-e-vrgula: 1) Mscara : permite restringir o contedo e especificar a sua forma. 2) Indicativo se os literais que fazem parte da mscara vo ser incorporado aos dados. 3) Qual o caracter que ser usado indicar o local de colocao de dados no campo.C aracteres da M scara

! (E xclam ao ) > (M aior q ue) < (M enor Q ue) < > (M eno r e M aio r Q ue) \ (B arra Invertid a) L (L etra L M aiscula) l (L etra l M inscula) A (L etra A M aiscula) a (L etra a M inscula) C (L etra C M aiscula) c (L etra c M inscula) 0 (Z ero ) 9 (N o ve) #

D escrio C aracteres em b ranco no so arm azenad o s T o d o s o s caracteres estaro em m aisculo s at q ue ap area o caractere < . T o d o s o s caracteres estaro em m insculos at que aparea o caractere > . T o do s os caracteres estaro arm azenad o s co m o fo ram d igitad o s p elo usurio . O s caracteres ap s a b arra so tratad o s co m o literais. F az co m q ue ap enas os caracteres alfab ticos sejam aceitos na p osio o nde se enco ntra o L , m as o s caracteres n o p o d em ser o m itid o s p elo usurio . F az co m q ue ap enas os caracteres alfab ticos sejam aceitos na p osio o nde se enco ntra o l, m as os caracteres po d em ser o m itid os p elo usurio . F az co m q ue ap enas o s caracteres alfanum rico s sejam aceito s na p o sio o nd e se enco ntra o A , m as o s caracteres n o p od em ser om itid o s pelo usurio. Q uaisq uer caracteres p o dem ser aceitos na p osio o nde se encontra a letra C , m as o s caracteres n o p o d em ser o m itid o s p elo usurio . F az co m q ue ap enas o s caracteres alfanum rico s sejam aceito s na p o sio o nd e se enco ntra o A , m as o s caracteres n o p od em ser om itid o s pelo usurio. Q uaisq uer caracteres p o dem ser aceitos na p osio o nde se enco ntra a letra C , m as o s caracteres p o d em ser o m itid os p elo usurio . F az co m q ue ap enas os caracteres num ricos sejam aceitos na p osio o nd e se enco ntra o Z ero , m as o s caracteres n o p od em ser om itid o s p elo usurio. F az co m q ue ap enas os caracteres num ricos sejam aceitos na p osio o nd e se enco ntra o N o ve, m as o s caracteres p o dem ser o m itido s pelo usurio . F az co m q ue ap enas os caracteres num ricos e sinais de ad io (+ ) o u sub trao (-) sejam aceito s na po sio ond e se enco ntra o # , m as os caracteres po d em ser o m itido s pelo usurio . U sad o p ara sep ara H o ras, M inutos e S egund o s. U sad o p ara sep ara D ias, M eses e A no s. U sad o p ara inserir esp ao s na caixa d e ed io

: (D ois P o nto s) / (B arra N orm al) _ (U nd er_ S co re)

AutoSelect: Para True todo o texto ser selecionado automticamente quando o controle MaskEdit receber o foco.

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.66

CINCIA DA COMPUTAO - DELPHI

Exerccio Elaborar um aplicativo para receber o Nome , Data de Admisso e o Salrio do Empregado usando o componente MaskEdit para formatar e ajudar a validao. Nome : Campo Obrigatrio , tamanho mximo de 25 , converter para maisculo via mscara. Data de Admisso: Campo Obrigatrio e com data Vlida no formato dd/mm/aaaa e menor que a data corrente. Salrio : Campo Obrigatrio com o tamanho mximo de 7 dgitos e 2 decimais.

Configurao - EditMask Nome, Data e Salrio

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.67

CINCIA DA COMPUTAO - DELPHI

Cdigo procedure TForm1.ButtonOKClick(Sender: TObject); begin // Verificar o Nome if trim(MaskEditNome.Text) = '' then begin ShowMessage('Falta Nome do Funcionrio'); MaskEditNome.SetFocus; Exit; end; // Verificar a Data if trim(MaskEditAdmissao.Text) = '/ /' then begin ShowMessage('Falta informar a data de admisso'); MaskEditAdmissao.SetFocus; Exit; end; // Verificar a Data if length(trim(MaskEditAdmissao.Text)) < 10 then begin ShowMessage('Informar a Data no formato dd/mm/aaaa'); MaskEditAdmissao.SetFocus; Exit; end; // Verificar a Data Try StrToDate(MaskEditAdmissao.Text); Except on EconvertError do begin ShowMessage('Data de Admisso Invlida'); MaskEditAdmissao.SetFocus; Exit; end; end; // Verificar a Data if StrToDate(MaskEditAdmissao.Text) > date then begin ShowMessage('Data de Admisso Maior que a Data Corrente'); MaskEditAdmissao.SetFocus; Exit; end; // Verificar o Salrio if (trim(MaskEditSalario.Text) = '') or (StrToFloat(MaskEditSalario.Text) = 0 ) then begin ShowMessage('Falta o Salrio do Funcionrio'); MaskEditSalario.SetFocus; Exit; end; // Mostrar os Dados ShowMessage('Nome: ' + MaskEditNome.Text + chr(13) + chr(10) + 'Admisso : ' + FormatDateTime('dd/mm/yyyy',strtodate(MaskEditAdmissao.Text)) + chr(13) + chr(10) + 'Salrio : ' + FormatFloat('R$ ##,###.#0',StrToFloat(MaskEditSalario.Text)/100));

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.68

CINCIA DA COMPUTAO - DELPHIExecuo

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.69

CINCIA DA COMPUTAO - DELPHI

6. Caixas de Mensagens, Entrada de Dados e Dialogos de fundamental importncia a boa interao entre uma aplicao e seu usurio. Muitas vezes a garantia desta boa interao se traduz pelas facilidades que o usurio encontra para lidar com a aplicao. Esta facilidade, por sua vez, pode ser definida pelo uso apropriado de caixas de mensagens, sempre informando o que est acontecendo, e de caixas de entrada de dados, o que importante para evitar a omisso de informaes. A partir disso, gostaramos de demonstrar procedimentos e funes no Delphi para entrada de dados e para o tratamento de mensagens.

6.1 Caixas de MensagemAs caixas de Mensagens so particularmente teis para informar o usurio sobre um determinado processo que est ocorrendo durante o funcionamento da aplicao ou, sobre um processo cuja ocorrncia depende de decises tomadas pelo prprio usurio. Tais caixas so amplamente utilizadas para mostrar erros ou mensagens de advertncia e informao. O Delphi possui cinco comandos para a construo de caixas de dilogo.

6.1.1 MESSAGEDLGExibe uma mensagem personalizada, numa caixa de dilogo com um ou mais botes de presso ( por exemplo , botes Ok e Cancelar ou, ainda, Sim e No) e, com um cone ilustrativo. Sintaxe: MESSAGEDLG (Mensagem, cone Ilustrativo, Tipos de Botes, HelpCtx); Onde: cone Ilustrativo: Valor MtInformation MtError MtWarning MtConfirmation MtCustom Tipos de Botes: Valor MbYes MbNo MbOK MbCancel MbHelp MbAbort MbRetry MbAll Significado Um boto com um tick verde e a palavra Yes na superfcie. Um boto com um smbolo de proibido e a palavra No na superfcie. Um boto com um tick verde e a palavra OK na superfcie. Um boto com um X vermelho e a palavra Cancel na superfcie. Um boto com um ? vermelho e a palavra Help na superfcie. Um boto com um tick vermelho a palavra Abort na superfcie. Um boto com um homem verde e a palavra Retry na superfcie. Um boto com dois ticks verdes e a palavra All na superfcie. Significado I Azul representativo de uma mensagem informativa. Sinal vermelho de parada, indicando uma operao ilegal sendo executada. ! Amarela representativa de uma operao de risco que exige ateno. ? Verde Iniciativa da necessidade de uma deciso do usurio. No possui nenhum cone ilustrativo.

Valor Retornado para os Botes: Valor MrYes MrNo MrOK MrCancel MrHelp MrAbort MrRetry MrAll Significado Selecionou o boto Yes. Selecionou o boto No. Selecionou o boto OK. Selecionou o boto Cancel. Selecionou o boto Help. Selecionou o boto Abort. Selecionou o boto Retry. Selecionou o boto All.

HelpCtx: Parmetro que define qual a tela de ajuda apropriada para a caixa, se esta a possuir. O zero indica que esta caixa no tem uma tela de ajuda associada. Exemplos: MessageDlg (Bem Vindo ao Object Pascal!, MtInformation, [MbOK], 0); MessageDlg (Confirma Atualizao ?, MtConfirmation, [MbYes, MbNo], 0);

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.70

CINCIA DA COMPUTAO - DELPHI

IF MessageDLg (Finalizar ?, MtWarning, [MbYes, MbNo], 0) = MrYes then Form1.Close;

6.1.2 MESSAGEDLGPOSSimilar a MessageDlg. A nica diferena que sua posio deve ser definida pelo usurio, no ficando obrigatrio a caixa de mensagem no centro da tela. Sintaxe: MESSAGEDLGPOS (Mensagem, cone Ilustrativo, Tipos de Botes, HelpCtx, PosX, PosY);

6.1.3 SHOWMESSAGEExibe uma caixa de mensagem simples com o boto OK. Sintaxe: SHOWMESSAGE (Mensagem); Exemplo: ShowMessage (Programas Delphi so mais produtivos!);

6.1.4 SHOWMESSAGEPOSExibe uma caixa de mensagem simples com o boto OK especificando a posio da caixa na tela.. Sintaxe: SHOWMESSAGEPOS (Mensagem, PosX, PosY); Exemplo: ShowMessagePos (Delphi um produto da Borland, 150, 300);

6.1.5 MESSAGEBOXComo vimos, algumas caixas de mensagens permite utilizao de vrios botes de presso, cuja finalidade permitir a interao com o usurio. No obstante, a legenda de tais botes escrita em ingls, o que pode gerar algumas incovenincias para o desenvolvedor. Uma maneira de contornar o problema utilizar este comando. Alm disso, ele permite que voc defina o ttulo e o texto da caixa. Sintaxe: Application.MessageBox (Mensagem, Ttulo, Tipo de Botes); Exemplo: IF Application.MessageBox ('Finalizar o Aplicativo?', 'Sada do Aplicativo',Mb_YesNoCancel) = IdYes then Form1.Close;

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.71

CINCIA DA COMPUTAO - DELPHI

6.2 Caixas de Entrada de DadosCaixas de Entrada de Dados podem ser muito importantes uma vez que se constituem numa forma prtica de solicitar a participao direta do usurio via teclado. No Delphi, estas caixas podem ser automatizadas atravs de dois comandos:

6.2.1 INPUBOXExibe uma caixa na qual voc define o ttulo, um texto explicativo e um valor padro digitado, cabendo ao usurio fornecer ou no uma string. Se o usurio pressionar o boto Cancel o valor digitado no ser atribudo a varivel. Sintaxe: InputBox ( Ttulo, Texto Explicativo, Valor Padro); Exemplo : Escola := InputBox (Informaes de Entrada, Identificao da Escola:, Face-Fumec);

6.2.2 INPUQUERYExibe uma caixa na qual voc define o ttulo, um texto explicativo, uma varivel para receber o valor digitado. A funo retorna True se o usurio pressionou o boto OK. Sintaxe: InputQuery ( Ttulo, Texto Explicativo, Varivel para Recepo de Dados); Exemplo: procedure TForm1.FormActivate(Sender: TObject); Var Escola : String; begin Escola := 'Face-Fumec'; if Inputquery ('Informaes de Entrada', 'Identificao da Escola:', Escola) then ShowMessage ('Pressionou OK' + Digitou: + Escola); end;

LTP-III - LINGUAGENS E TCNICAS DE PROGRAMAO III

PAG.72

CINCIA DA COMPUTAO - DELPHI

6.3 Caixas de DilogoA Guia Dialogs, contm dez componentes usados para criar as vrias caixas de dilogo comuns no Windows. As caixas de Dilogo so usadas para especificar arquivos ou selecionar ajustes. O uso das caixas de dilogo fornecidas no Delphi pode economizar tempo e ajudar a dar uma aparncia e um comportamento consistente aos seus aplicativos. Esses componentes esto descritos apenas brevemente na tabela abaixo. Consulte a ajuda on line ou os manuais do Delphi para obter mais informaes sobre cada um deles.

1

2

3

4

5

6

7

8

9

10

Nmero do cone 1 2 3 4 5 6 7 8 9 10

Nome ou Rtulo OpenDialog SaveDialog OpenPictureDialog SavePictureDialog FontDialog ColorDialog PrintDialog PrinterSetupDialog FindDialog ReplaceDialog

Finalidade Exibe caixa de abertura de arquivos. Exibe caixa de salvamento de arquivos. Exibe caixa de abertura de figuras. Exibe caixa de salvamento para arquivos de figuras. Exibe caixa de formatao de fontes. Exibe caixa de formatao de cores. Exibe caixa de controle de impresso. Exibe caixa de configurao de impresso. Exibe caixa de dialgo para localizao de textos. Exibe caixa de dialgo para localizao e substituio de textos.

7. Projetando Barras de MenusAgora vamos dedicar construes de barras de menus. Este um dos mais importantes elementos da interface com usurio de qualquer aplicativo Windows. A ttulo de exemplificao do recurso, construiremos um pequeno aplicativo para edio de textos que facilitar sua compreenso.

7.1 Exemplo de Projeto da Barra de Menu em uma aplicaoPara construirmos uma barra de menu, precisaremos, primeiro, de um novo projeto (clique no menu File/New aplication) e, depois, no componente MainMenu na pgina Standard. D um clique neste componente e em seguida no interior do formulrio. Clique duplo sobre o cone do MainMenu no seu formulrio, isto ativar o Menu Designer, observe-o na figura abaixo:

O primeiro item do menu ainda no foi definido. A partir do momento em que o definirmos o Menu Designer ir destacar um prximo item. Para definirmos o item Arquivo, basta digitarmos esta palavra na propriedade Caption do menu; o Delphi