Linguagem de Programação Comercial

Embed Size (px)

Citation preview

CARLOS ALBERTO PEDROSO ARAJO

LINGUAGEM DE PROGRAMAO COMERCIAL

Santarm 2009

Linguagem de Programao Comercial

Lista de IlustraesFigura 1 Form novo.........................................................................................................10 Figura 2 Object Inspector................................................................................................11 Figura 3 Paleta de Componentes.....................................................................................12 Figura 4 Botes de Alinhamento.....................................................................................12 Figura 5 Mtodo manipulador de evento OnClick de boto...........................................14 Figura 6 Cdigo do procedure.........................................................................................14 Figura 7 Caixa de mensagem...........................................................................................14 Figura 8 Mtodo manipulador do evento OnClick de form............................................15 Figura 9 Opes de Projeto.............................................................................................15 Figura 10 Alterando propriedade em tempo de execuo...............................................16 Figura 11 Cdigo para centralizar o boto em tempo de execuo.................................17 Figura 12 Cdigo fonte de um form................................................................................18 Figura 13 Unit com novo nome.......................................................................................18 Figura 14 Cdigo aps adicionar um boto.....................................................................18 Figura 15 Cdigo aps alterar a propriedade Name do boto.........................................18 Figura 16 Cdigo com manipuladores de eventos...........................................................19 Figura 17 Descrio textual do form...............................................................................20 Figura 18 Project Manager..............................................................................................21 Figura 19 Cdigo fonte do arquivo de projeto................................................................21 Figura 20 Descrio textual de um boto........................................................................24 Figura 21 Mudanas na descrio textual usando um editor qualquer............................24 Figura 22 Descrio textual do boto aps ser colado no form.......................................25 Figura 23 Comando Find in Files....................................................................................25 Figura 24 Informaes sobre um programa compilado...................................................27 Figura 25 Environment Options......................................................................................28 Figura 26 Assistente de Parmetros de Cdigo...............................................................32 Figura 27 Project Manager..............................................................................................32 Figura 28 Compilador em andamento.............................................................................33 Figura 29 Ponto de parada (Breakpoint)..........................................................................34 Figura 30 Fragmento de ALO.DOF................................................................................35 Figura 31 Arquivo desktop (.DSK).................................................................................36 Figura 32 Boto recm inserido.......................................................................................39 Figura 33 Cdigo o evento OnClick de btnFechar..........................................................40 Figura 34 Componente TEdit..........................................................................................41 Figura 35 Componente TLabel........................................................................................42 Figura 36 Componente TCheckBox................................................................................43 Figura 37 Componente TRadioGroup.............................................................................44 Figura 38 O Componente ListBox...................................................................................45 Figura 39 Componente ComboBox.................................................................................46 Figura 40 Componente ScrollBar....................................................................................48 Figura 41 Componente GroupBox..................................................................................49 Figura 42 Componente TMemo......................................................................................50 Figura 43 Form com a boto btnSalvar...........................................................................51 Figura 44 Cdigo do evento OnClick do boto btnSalvar...............................................52 Figura 45 Caixa de dilogo ShowMessage......................................................................54 Figura 46 Caixa de dilogo MessageDlg.........................................................................55 Figura 47 Caixa de dilogo MessageBox com botes de opes....................................56 3Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Figura 48 MessageBox para informaes ao usurio......................................................57 Figura 49 Caixa de dilogo InputBox..............................................................................58 Figura 50 Aplicao Dialogos com um novo boto e rtulo...........................................59 Figura 51 Menu com opes agrupadas e sub-menu.......................................................61 Figura 52 Aplicao Menus.............................................................................................63 Figura 53 A caixa ColorDialog.......................................................................................64 Figura 54 Menu Designer................................................................................................65 Figura 55 Aspecto do menu criado..................................................................................66 Figura 56 Menu com teclas de atalho..............................................................................67 Figura 57 A janela Sobre.................................................................................................69 Figura 58 O componente PopupMenu.............................................................................70 Figura 59 Barra de ferramentas.......................................................................................72 Figura 60 Barra de status.................................................................................................75 Figura 61 Interface da aplicao......................................................................................77 Figura 62 Funo que retorna uma string de espaos......................................................78 Figura 63 O mtodo btnSalvarClick................................................................................79 Figura 64 Botes para leitura do arquivo........................................................................80 Figura 65 Cdigo do evento OnClick de btnIniciar........................................................81 Figura 66 Cdigo do evento OnClick de btnProximo.....................................................81 Figura 67 Configurao de acesso a banco de dados......................................................84 Figura 68 Modelo E-R.....................................................................................................85 Figura 69 Janela para definir o tipo da tabela..................................................................85 Figura 70 Janela para definio de campos.....................................................................86 Figura 71 BDE Administrator.........................................................................................87 Figura 72 DataModule.....................................................................................................90 Figura 73 Aparncia parcial da interface.........................................................................92 Figura 74 O controle DBNavigator.................................................................................92 Figura 75 O form de cadastro de clientes........................................................................98 Figura 76 Form de consulta a cidades...........................................................................100 Figura 77 Janela para criar TFields...............................................................................101 Figura 78 Cdigo do evento OnClick do boto btnPesquisar.......................................104 Figura 79 Modelo E-R do banco de dados....................................................................105 Figura 80 Nota fiscal.....................................................................................................110 Figura 81 Tela de definio da ligao entre duas tabelas............................................111 Figura 82 Form de Vendas............................................................................................114 Figura 83 Criao de campo Lookup............................................................................115 Figura 84 Criao de campo calculado..........................................................................116 Figura 85 Cdigo para atualizar o total da venda..........................................................118 Figura 86 Aba de componentes Rave............................................................................119 Figura 87 Rave Visual Designer....................................................................................120 Figura 88 Propriedades do objeto Page1.......................................................................121 Figura 89 Janela para criao da conexo a dados........................................................121 Figura 90 rvore de Objetos.........................................................................................122 Figura 91 Componente Region......................................................................................122 Figura 92 rea de impresso.........................................................................................122 Figura 93 Componentes Band e DataBand....................................................................123 Figura 94 Pgina com os objetos Band e DataBand......................................................123 Figura 95 Editor da propriedade BandStyle..................................................................123 Figura 96 Componente Text..........................................................................................124 Figura 97 Pgina com os objetos Band e DataBand......................................................124 4Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Figura 98 Editor de Data Text.......................................................................................125 Figura 99 Aparncia do projeto do relatrio.................................................................125 Figura 100 A banda GroupHeader.................................................................................127 Figura 101 A aparncia final do desenho do relatrio...................................................127 Figura 102 Prvia do relatrio.......................................................................................128

5Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Lista de QuadrosQuadro 1 Propriedades, mtodos e eventos de Form......................................................39 Quadro 2 Propriedades, mtodos e eventos de Button....................................................40 Quadro 3 Propriedades, mtodos e eventos de Edit........................................................41 Quadro 4 Propriedades e eventos de Label.....................................................................42 Quadro 5 Propriedades, mtodos e eventos de CheckBox..............................................43 Quadro 6 Propriedades, mtodos e eventos de RadioGroup...........................................44 Quadro 7 Propriedades, mtodos e eventos de ListBox..................................................46 Quadro 8 Propriedades, mtodos e eventos de ComboBox.............................................47 Quadro 9 Propriedades, mtodos e eventos de ScrollBar................................................48 Quadro 10 Propriedades, mtodos e eventos de Memo...................................................50 Quadro 11 Propriedades e mtodos de TStrings.............................................................52 Quadro 12 Funes de converso de dados.....................................................................53 Quadro 13 Propriedades de BitBtn..................................................................................60 Quadro 14 Propriedades de ToolBar...............................................................................71 Quadro 15 Propriedades de StatusBar.............................................................................73 Quadro 16 Propriedades de TStatusPanel.......................................................................74 Quadro 17 Propriedades de StatusBar.............................................................................74 Quadro 18 Rotinas de Entrada e Sada............................................................................76 Quadro 19 Definio dos campos da tabela Cidade........................................................86 Quadro 20 Definio dos campos da tabela Cliente........................................................87 Quadro 21 Propriedades, mtodos e eventos de Table....................................................89 Quadro 22 Propriedades e eventos de DataSource..........................................................90 Quadro 23 Propriedades, mtodos e eventos de DBEdit.................................................91 Quadro 24 Propriedades e eventos de DBNavigator.......................................................92 Quadro 25 Propriedades, mtodos e eventos de DBLookUpComboBox........................95 Quadro 26 Propriedades, mtodos e eventos de DBComboBox.....................................96 Quadro 27 Propriedades, mtodos e eventos de DBRadioGroup....................................97 Quadro 28 Propriedades, mtodos e eventos de DBCheckBox.......................................97 Quadro 29 Propriedades, mtodos e eventos de DBGrid..............................................100 Quadro 30 Propriedades, mtodos e eventos de TField................................................101 Quadro 31 Propriedades e mtodos de TQuery.............................................................103 Quadro 32 Propriedades, mtodos e eventos de IBDatabase........................................107 Quadro 33 Propriedades e mtodos IBTransaction.......................................................108 Quadro 34 Propriedades do componente RvSystem.....................................................119 Quadro 35 Propriedades do componente RvProject......................................................120 Quadro 36 Propriedades do componente RvDataSetConnection..................................120

6Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

SumrioIntroduo..........................................................................................................................9 Captulo 1 Um form uma janela...................................................................................10 Adicionando um ttulo.............................................................................................10 Salvando a aplicao...............................................................................................11 Analisando o cdigo fonte.......................................................................................17 Captulo 2 O Ambiente Delphi........................................................................................23 O menu File.............................................................................................................23 O menu Edit.............................................................................................................24 O menu Search........................................................................................................25 O menu View...........................................................................................................26 O menu Project........................................................................................................26 O menu Run.............................................................................................................27 A Paleta de Componentes........................................................................................29 O Object Inspector...................................................................................................29 A Paleta de Alinhamento.........................................................................................29 Usando marcadores de pgina.................................................................................30 Code Insight.............................................................................................................30 Complementao de cdigo....................................................................................31 Modelos de cdigo..................................................................................................31 Parmetros de cdigo..............................................................................................32 O Project Manager...................................................................................................32 Ajustando opes de Projeto...................................................................................33 Compilando um Projeto...........................................................................................33 O Depurador Integrado............................................................................................34 O Object Browser....................................................................................................34 Captulo 3 Conhecendo os Componentes Bsicos..........................................................37 Propriedades de Form (TForm)...............................................................................38 Utilizando um Boto (TButton)...............................................................................39 Aceitando entrada de dados do Usurio (TEdit).....................................................40 Identificando Componentes (TLabel)......................................................................41 Fazendo escolhas (TCheckBox, TRadioButton e TRadioGroup)...........................43 Uma Lista com muitas escolhas (TListBox)...........................................................45 Muitas opes em pouco espao (TComboBox).....................................................46 Escolhendo um valor em um intervalo (TScrollBar)..............................................47 Agrupando componentes relacionados (TGroupBox).............................................49 Entrando mltiplas linhas (TMemo).......................................................................49 Juntando tudo...........................................................................................................51 Captulo 4 Caixas de Dilogo..........................................................................................54 Captulo 5 Criando Menus...............................................................................................61 A Caixa de Dilogo ColorDialog............................................................................63 Criando um Menu com o Menu Designer...............................................................64 Teclas de atalho e hotkeys.......................................................................................66 Respondendo aos comandos do menu.....................................................................67 Chamadas a forms...................................................................................................68 Menus locais (Pop-up).............................................................................................69 Captulo 6 Barras de ferramentas e de status...................................................................71 Barra de ferramentas (TToolBar)............................................................................71 7Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Barra de status (TStatusBar)....................................................................................73 Captulo 7 Tratamento de arquivos.................................................................................76 Escrevendo dados no arquivo......................................................................................78 Lendo dados do arquivo..............................................................................................79 Melhorando a interface................................................................................................82 Captulo 8 Aplicaes usando Banco de Dados Local....................................................84 Acesso a Banco de Dados............................................................................................84 Aplicao de banco de dados.......................................................................................85 BDE - Criao do Alias...........................................................................................87 Iniciando a aplicao...............................................................................................88 A interface de entrada de dados da tabela Cidade...................................................90 A interface de entrada de dados da tabela Cliente...................................................94 Consultas a banco de dados.........................................................................................98 Componente para o resultado da consulta (TDBGrid)............................................99 Pesquisa em tabelas usando Locate.......................................................................101 Pesquisa em tabelas usando TQuery.....................................................................103 Captulo 9 Aplicaes usando Banco de Dados Cliente/Servidor.................................105 Iniciando a aplicao.................................................................................................106 As interfaces de entrada de dados.........................................................................109 Form mestre-detalhe..............................................................................................110 Relatrios...................................................................................................................119 Relatrio de Cidades..............................................................................................119 Relatrio de Clientes.............................................................................................126

8Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Introduo

Delphi considerada uma ferramenta RAD (Rapid Application Development). E realmente podemos desenvolver aplicaes com bastante rapidez nesse ambiente. Desde suas primeiras verses, Delphi tem evoludo de forma a oferecer inmeros recursos aos desenvolvedores, tanto para aplicaes que rodam no desktop quanto para aplicaes web. Junta-se a essa caracterstica o fato de Delphi ser orientado a objetos, mas no totalmente, pois mantm o paradigma procedural e, possibilitar o desenvolvimento visual de aplicaes para o ambiente Windows. Este texto tenta apresentar Delphi de forma didtica. Sem nenhuma pretenso de cobrir toda a extenso desta poderosa ferramenta, mas oferecendo informaes suficientes para o estudante ou futuro desenvolvedor que deseje adotar o Delphi como uma de suas ferramentas de trabalho. Como objeto do estudo foi usado o Delphi 7. No entanto, qualquer verso a partir do Delphi 6 pode ser usada para acompanhar as atividades. Tentou-se organizar o texto de forma a privilegiar o auto-estudo. Ao fim da leitura, o estudante estar apto a desenvolver pequenas aplicaes usando bancos de dados, e capaz de prosseguir de forma autnoma, pois a base e o conceito do ambiente so apresentados com o objetivo de facilitar isso. Para atingir seu objetivo, este trabalho est organizado da seguinte forma: no Captulo 1 apresentado o conceito de form no Delphi e criada a primeira aplicao para introduzir o leitor no ambiente. No Captulo 2 tem-se uma viso do ambiente do Delphi, configuraes e recursos do editor de cdigo. No Captulo 3 so apresentados os componentes bsicos atravs da estratgia de se construir uma aplicao passo a passo. As caixas de dilogo so estudadas no Captulo 4. Menus e barras de ferramentas e de status so mostradas nos Captulos 5 e 6. Aps isso comea-se o estudo da persistncia de dados no Delphi, iniciando com os arquivos de texto no Captulo 7. Aplicaes de bancos de dados locais so estudadas no Captulo 8. Finalmente, no Captulo 9, criada uma aplicao usando banco de dados cliente/servidor e faz-se uma introduo a relatrios.

9Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Captulo 1 Um form uma janelaAplicaes Windows so geralmente baseadas em janelas. Ento, como vamos criar nossa primeira janela? Bem, usando um form. Como o ttulo do captulo sugere um form realmente uma janela. No h diferena entre os dois conceitos, pelo menos de um ponto de vista geral.

Criando seu primeiro formEmbora voc provavelmente j tenha criado algumas aplicaes simples no Delphi, vou mostrar o processo de novo, para esclarecer alguns pontos interessantes. Criar um form uma das operaes mais fceis no sistema: voc s precisa abrir o Delphi, e ele automaticamente ir criar um form novo, como se pode ver na figura abaixo.

Figura 1 Form novo Se voc j tem um projeto aberto, escolha File | New | Application para fechar o projeto antigo e abrir um novo. Acredite, voc j tem uma aplicao funcionando. Voc pode execut-la, usando o boto Run ( ) na barra de ferramentas ou escolhendo Run | Run no menu, e voc ver um programa Windows padro. Certamente no uma aplicao muito til, pois apenas uma janela vazia, mas tem o comportamento default de qualquer janela Windows.

Adicionando um ttuloAntes de executar a aplicao, vamos fazer uma rpida alterao. O ttulo do form Form1. Para um usurio, o ttulo da janela torna-se o nome da aplicao. Vamos mudar Form1 para algo mais significativo. Quando voc abre o Delphi, a janela Object Inspector deve aparecer ao lado esquerdo do form (se no aparecer pressione a tecla F11).

10Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Figura 2 Object Inspector O Object Inspector mostra as propriedades do componente selecionado. A janela contm duas abas. A primeira rotulada Properties. A outra rotulada Events e mostra a lista de eventos que podem acontecer no form ou no componente selecionado. As propriedades so listadas em ordem alfabtica, assim fica fcil encontrar aquela que se quer modificar. Podemos mudar o ttulo do form simplesmente mudando a propriedade Caption. Enquanto voc digita um novo Caption o ttulo do form se modifica. Se voc digitar Alo o ttulo muda imediatamente. Como uma alternativa, voc pode modificar o nome do form mudando a propriedade Name. Se Caption ainda no tiver sido modificada, o valor de Name tambm ser usado por Caption. No entanto para a propriedade Name do form digite frmPrincipal (frm significa form e Principal indica a funo do form). Nem todas as propriedades de um componente mudam enquanto um novo valor digitado. Muitas so aplicadas quando voc termina de digitar e teclar Enter, ou quando muda o foco de entrada para outra propriedade. Sem muito trabalho ns construmos uma aplicao com um menu de sistema (aquele que aparece quando voc clica o canto superior esquerdo da janela) e os botes padro das janelas: Minimizar, Maximizar e Fechar. Se voc observar a barra de tarefas voc ver que algo no est certo. Em vez de mostrar o caption do form como caption do cone, ele mostra o nome do projeto, algo como Project1. Podemos corrigir isso dando um novo nome ao projeto quando o salvarmos no disco.

Salvando a aplicaoSelecione Save Project ou Save Project As no menu File, e o Delphi ir lhe perguntar o nome do arquivo do cdigo fonte (unit) associado ao form, e depois o nome do arquivo do projeto. Para o nome da unit digite o nome u_principal. Para que o nome do projeto seja o mesmo do caption do form d a ele o nome Alo. O Delphi vai salvar uma unit com o nome u_principal.pas e um projeto com o nome Alo.dpr. Sempre que salvar uma nova unit, tenha o cuidado de selecionar o diretrio da sua aplicao. Se esse 11Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

cuidado no for tomado, corre-se o risco de ter mdulos do programa espalhados pelo disco e depois difcil localiz-los. Voc pode tambm mudar o ttulo de uma aplicao usando a aba Application da caixa de dilogo Project Options (escolha a opo de menu Project | Options).

Usando ComponentesAgora hora de comear a inserir algo til em nosso form. Forms podem ser pensados como contineres de componentes. Cada form pode hospedar componentes e controles. Voc pode escolher um componente da paleta de componentes do ambiente do Delphi, como mostra a Figura 3.

Figura 3 Paleta de Componentes H quatro maneiras de colocar componentes em um form. Selecione o componente Button da aba Standard, voc pode inseri-lo no form de uma das seguintes formas: Clique no componente, mova o cursor do mouse para o form, pressione o boto esquerdo na posio onde ficar o canto superior esquerdo do boto e arraste o mouse para ajustar o tamanho. Selecione o componente e simplesmente clique no form na posio onde quer inserir o boto com tamanho padro. D um duplo clique no componente e o mesmo ser inserido no centro do form. Pressione a tecla Shift e clique ao mesmo tempo no componente, e coloque vrios componentes do mesmo tipo no form, procedendo de uma das duas primeiras maneiras acima.

Queremos apenas um boto no form. Vamos centraliz-lo manualmente. Selecione o boto inserido no form e depois View | Alignment Palette e uma caixa de ferramentas com botes de alinhamento como essa aparece:

Figura 4 Botes de Alinhamento Clique nos dois botes da terceira coluna e o boto ficar posicionado no centro do form.

Alterando PropriedadesAssim como o form, o boto tem uma propriedade Caption que ns podemos usar para alterar o seu rtulo (o texto mostrado dentro dele). Altere ento a propriedade Caption para Diga Al. Na propriedade Name digite btnAlo. 12Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

bastante comum definir uma conveno de nomes para cada tipo de componente. Sugiro usar um nome curto, tal como btn para Button, para o prefixo do nome do componente. Se voc usar um prefixo diferente para cada tipo de componente, o combo box do Object Inspector ir listar os componentes do mesmo tipo em um grupo, pois eles esto em ordem alfabtica. Name uma propriedade interna e usada como nome de uma varivel que se refere ao componente no cdigo da aplicao. Portanto, a propriedade Name segue as regras de nomeao de identificadores da linguagem Pascal: Um identificador uma seqncia de letras, dgitos ou underscore de qualquer tamanho, embora apenas os primeiros 63 caracteres sejam significativos. O primeiro caractere de um identificador no pode ser um nmero, deve ser uma letra ou underscore. Identificadores no so case-sensitive, mas geralmente cada palavra em um identificador comea com uma letra maiscula, como em BtnHello. Normalmente inicio o prefixo com letra minscula. Mas btnhello, btnHello ou BTNHello referem-se ao mesmo identificador.

Se voc executar esse programa agora, ver que o boto funciona adequadamente. Se voc clicar nele, ele ser pressionado, e quando libera o boto do mouse o boto tambm liberado. O problema que quando voc pressiona o boto, espera-se que algo acontea, mas nada acontece porque no definidos qualquer ao para o clique do mouse ainda.

Respondendo a EventosQuando voc pressiona o boto do mouse em um form ou componente, o Windows informa do evento sua aplicao, enviando uma mensagem a ela. O Delphi responde ao receber uma notificao de evento chamando um mtodo manipulador de evento apropriado. Como programador voc pode prover vrios desses mtodos, tanto para form quanto para os componentes colocados nele. O Delphi prev um certo nmero de eventos para cada tipo de componente. A lista de eventos para o form diferente da lista de eventos para um boto, como se pode ver clicando nesses dois componentes com a aba Events selecionada no Object Inspector. Alguns eventos so comuns a ambos os componentes. H vrias tcnicas que voc pode usar para definir um mtodo manipulador para o evento OnClick do boto: Selecione o boto e a aba Events no Object Inspector. D um duplo clique na rea branca ao lado direito do evento OnClick. Um novo nome de mtodo ir aparecer no editor de cdigo, btnAloClick. Selecione o boto e a aba Events no Object Inspector. Digite o nome de um novo mtodo na rea branca ao lado direito do evento OnClick. Pressione Enter para aceit-lo. D um duplo clique no boto e o Delphi ir executar a ao padro para esse componente, que adicionar um mtodo manipulador para o evento OnClick.

13Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Com qualquer uma dessas abordagens o Delphi cria um procedure chamado btnAloClick (ou o nome que voc escolheu) no cdigo do form e abre o arquivo do cdigo fonte nesta posio:

Figura 5 Mtodo manipulador de evento OnClick de boto Como vimos, a ao padro para um boto adicionar um manipulador para responder ao evento OnClick. Mesmo que voc no tenha certeza do efeito da ao padro de um componente, voc ainda pode dar um duplo clique nele. Se voc adicionar um procedure que no precisa, apenas deixe-o vazio. Mtodos vazios gerados pelo Delphi sero removidos assim que o arquivo for salvo ou o projeto for compilado. Agora podemos digitar algumas instrues entre as palavras chaves begin e end que delimitam o procedure. O cdigo simples. Apenas uma chamada ao procedure ShowMessage, para mostrar uma mensagem.

Figura 6 Cdigo do procedure Observe que quando voc digita o abre parnteses o Delphi ir mostrar a lista de parmetros em uma dica (hint) facilitando a sua lembrana. Se voc precisar de ajuda para ShowMessage posicione o cursor sobre seu nome e pressione ao mesmo tempo as teclas Ctrl e F1. Essa ao ir abrir a Ajuda do Delphi para o procedure em questo. Isso funciona para qualquer comando. Digite ento dentro dos parnteses a string 'Al pessoal'. Execute o programa agora e clique no boto. Voc ver a caixa de mensagem abaixo:

Figura 7 Caixa de mensagem A cada vez que voc clica no boto a caixa de mensagem mostrada. E se voc clicar fora do boto? Nada acontece. Naturalmente, podemos adicionar um novo cdigo para manipular esse evento. S precisamos adicionar um evento OnClick para o prprio form. Selecione o form e a aba Events do Object Inspector. D um duplo clique no lado direito do evento OnClick. Agora adicione o seguinte cdigo: 14Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Figura 8 Mtodo manipulador do evento OnClick de form

Compilando e Executando um ProgramaAntes de prosseguir com a implementao do nosso programa Alo, vamos analisar o que acontece quando executamos uma aplicao. Quando voc clica no boto Run ou seleciona Run | Run, o Delphi faz o seguinte: 1. 2. 3. 4. Compila o cdigo fonte Pascal que descreve o form. Compila o arquivo do projeto. Constri o arquivo executvel (EXE), ligando as bibliotecas apropriadas. Executa o arquivo executvel, geralmente em modo depurao (debug).

O ponto principal que quando voc pede para o Delphi executar uma aplicao, ele a compila em um arquivo executvel. Voc pode facilmente executar este arquivo do Windows Explorer ou usando o comando Executar do boto Iniciar. Compilar este programa como se faz comumente, ligando todos os cdigos de bibliotecas necessrios, produz um executvel de uma centena de Kbytes. Usando pacotes de tempo de execuo, pode-se comprimir o executvel para cerca de 20 Kb. Simplesmente selecione o comando de menu Project | Options, v para a aba Packages e marque a caixa Build with runtime packages.

Figura 9 Opes de Projeto

15Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Packages so bibliotecas de ligao dinmicas (dll) contendo os componentes Delphi. Usando os pacotes voc pode fazer um arquivo executvel muito menor. No entanto o programa no executar se as dlls apropriadas no estiverem disponveis no computador onde o programa rodar.

Alterando Propriedades em Tempo de ExecuoVamos retornar nossa aplicao Alo. Queremos agora tentar mudar algumas propriedades em tempo de execuo. Por exemplo, ns podemos mudar o Caption de btnAlo para Diga al de novo depois que o usurio clica nele pela primeira vez. Pode ser necessrio tambm mudar a largura do boto, pois o Caption fica maior. Isso muito simples de fazer. S precisa mudar o cdigo do procedure btnAloClick como mostrado abaixo.

Figura 10 Alterando propriedade em tempo de execuo Portanto, para mudar uma propriedade como Caption em tempo de execuo, usa-se apenas um comando de atribuio. Muitas propriedades podem ser alteradas em tempo de execuo e outras podem ser alteradas apenas em tempo de execuo. Aquelas que s podem ser alteradas em tempo de execuo no so listadas no Object Inspector, mas aparecem na Ajuda do componente. Algumas dessas propriedades de tempo de execuo so definidas como apenas leitura, o que significa que voc pode ler seu valor, mas no pode alter-lo.

Adicionando Cdigo ao ProgramaNosso programa est quase finalizado, mas ainda temos um problema a resolver, que ir exigir alguma codificao. O boto inicia no centro do form mas no permanece l quando voc redimensiona o form. Este problema pode ser resolvido de duas formas diferentes. Uma soluo mudar o estilo da borda do form de modo que ele no possa ser redimensionado em tempo de execuo. V para a propriedade BorderStyle do form, e selecione bsSingle em vez de bsSizeable. A outra abordagem escrever algum cdigo para mover o boto para o centro a cada vez que o form for redimensionado. Embora parea que grande parte do seu trabalho em programar no Delphi seja selecionar opes e elementos visuais, tem um momento que necessrio escrever cdigo. Quanto mais experiente voc fica, mais cdigo voc escreve. Quando voc quer adicionar cdigo ao programa, a primeira pergunta a ser respondida : Onde? Em um ambiente orientado a eventos como o Delphi, o cdigo sempre executado em resposta a um evento. Quando um form redimensionado ocorre um evento: OnResize. Selecione o form e a aba Events no Object Inpector. Procure o evento OnResize e d um duplo clique direita dele. Um novo procedure adicionado ao arquivo fonte do form. Agora digite o seguinte cdigo: 16Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Figura 11 Cdigo para centralizar o boto em tempo de execuo Para determinar as propriedades Top e Left do boto - isto , a posio do seu canto superior esquerdo - o programa calcula o centro da pgina, dividindo a altura e a largura da rea interna ou rea cliente da pgina por 2, e ento subtrai metade da altura (Height) e largura (Width) do boto. Se voc usar as propriedades Height e Width do form, em vez das propriedades Client Height e ClientWidth, voc estar se referindo ao centro da janela incluindo a barra do Caption.

Uma Ferramenta de Mo Dupla (Two-Way)No exemplo anterior ns escrevemos trs pequenas pores de cdigo, para responder a trs eventos diferentes. Cada poro de cdigo era parte de um procedure diferente. Mas onde termina o cdigo que ns escrevemos? O cdigo fonte de um form escrito em um nico arquivo fonte Pascal, aquele que chamamos u_principal.pas. O arquivo cresce no apenas quando escrevemos cdigo para responder a eventos, mas tambm quando adicionamos componentes ao form. As propriedades desses componentes juntamente com as propriedades do form so armazenadas em um segundo arquivo chamado u_principal.dfm. O Delphi pode ser definido como uma ferramenta de mo dupla, pois tudo que voc faz no ambiente visual leva a algum cdigo. Nada oculto e inacessvel. Voc tem acesso ao cdigo completo, e embora alguns deles sejam bastante complexos, voc pode editar tudo. Naturalmente, voc pode usar apenas as ferramentas visuais, no mnimo at voc se tornar um programador Delphi mais experiente. O termo ferramenta de mo dupla tambm significa que voc livre para alterar o cdigo produzido por voc e ento voltar s ferramentas visuais. No entanto voc precisa seguir algumas regras.

Analisando o cdigo fonteVamos dar uma olhada no que o Delphi gerou de nossas operaes anteriores. Toda ao tem um efeito - no cdigo Pascal, no cdigo do form, ou em ambos. Quando voc inicia um novo form, ele tem um cdigo fonte associado como mostrado na Figura 12. O arquivo chamado Unit1, usa (uses) algumas units e define um novo tipo de dado (uma classe) e uma nova varivel (um objeto desta classe). A classe chamada TForm1 e derivada de TForm. O objeto Form1, do novo tipo TForm1. Units so mdulos nos quais um programa Pascal dividido. Quando voc inicia um novo projeto, o Delphi gera um mdulo program e uma unit que define o form principal. A cada vez que voc adiciona um form ao programa, uma unit adicionada. Por padro, arquivos units tm extenso .PAS e arquivos program tem extenso .DPR. 17Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Figura 12 Cdigo fonte de um form Se voc renomeou os arquivos como sugerimos no exemplo anterior, o cdigo muda um pouco, pois o nome da unit deve refletir o nome do arquivo. Se voc chamou o arquivo de u_principal.pas o cdigo ir comear assim:

Figura 13 Unit com novo nome Assim que voc comea a adicionar novos componentes, a declarao da classe form muda. Por exemplo, quando voc adiciona um boto ao form, a parte do cdigo fonte que define novos tipos de dados torna-se o seguinte:

Figura 14 Cdigo aps adicionar um boto Agora se a propriedade Name do boto for alterada para btnAlo, o cdigo muda para:

Figura 15 Cdigo aps alterar a propriedade Name do boto 18Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

A alterao de outras propriedades no afeta o cdigo fonte. As propriedades de form e seus componentes so armazenadas em um arquivo de descrio de form separado (com extenso .DFM). Adicionar novos manipuladores de eventos tem maior impacto no cdigo. A cada vez que um novo manipulador de evento definido, uma nova linha adicionada definio de tipo de dado do form, um corpo de mtodo vazio inserido na implementation, e alguma informao armazenada no arquivo de descrio do form tambm como pode ser observado na Figura 16. Vale observar que h um nico arquivo para o cdigo inteiro do form, no apenas pequenos fragmentos. Naturalmente, o cdigo apenas uma descrio parcial do form. O cdigo fonte determina como o form e seus componentes reagem aos eventos. A descrio do form (o arquivo DFM) armazena os valores das propriedades do form e de seus componentes. Em geral, o cdigo fonte define as aes do sistema, e os arquivos form definem o estado inicial do sistema.

Figura 16 Cdigo com manipuladores de eventos 19Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

A descrio textual do formComo j falamos, junto com o arquivo PAS contendo o cdigo fonte, h outro arquivo descrevendo o form e suas propriedades, seus componentes e as propriedades dos componentes. Este o arquivo DFM, um arquivo texto ou binrio. Independente do formato, se voc carregar esse arquivo no editor de cdigo, ele ser convertido em uma descrio textual. Isto pode dar a falsa impresso que o arquivo DFM um arquivo texto, mas isso s ocorre se voc selecionar a opo correspondente. Voc pode abrir a descrio textual de um form simplesmente clicando com o boto direito no form em tempo de desenvolvimento e selecionado o comando View As Text. Isto fecha o form, salvando-o se necessrio, e abre o arquivo DFM no editor. Depois podemos voltar ao form selecionando o comando View As Form no menu. Nos dois casos o atalho ALT + F12 produz o mesmo efeito. Para entender o que armazenado no arquivo DFM, vamos dar uma olhada na listagem seguinte, que mostra a descrio textual do form do nosso programa exemplo.

Figura 17 Descrio textual do form Como se pode ver nesta listagem, a descrio textual de um form contm objetos (neste caso, dois) em diferentes nveis. O objeto frmPrincipal contm o objeto btnAlo, como possvel ver pela identao do texto. Cada objeto tem suas propriedades e alguns mtodos conectados a eventos (neste caso, OnClick).

20Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

O arquivo de projetoAlm dos dois arquivos que descrevem um form (PAS e DFM), um terceiro arquivo vital para construir a aplicao. o arquivo de projeto Delphi (DPR). Este arquivo construdo automaticamente, e raramente voc precisa alter-lo, principalmente para pequenos programas. Se for necessrio alterar o comportamento de um projeto, h duas maneiras bsicas de fazer isso: Voc pode usar o Project Manager do menu View e mudar algumas opes, ou pode editar diretamente o arquivo de projeto.

Figura 18 Project Manager O arquivo de projeto na verdade um arquivo fonte Pascal, descrevendo a estrutura geral do programa e seu cdigo de execuo.

Figura 19 Cdigo fonte do arquivo de projeto Podemos visualizar esse arquivo atravs do comando de menu View | Project Source. Ou clicar no boto View unit na barra de ferramentas ou o comando de menu View | Units. Em qualquer das opes o Delphi mostra uma caixa de dilogo com uma

21Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

lista de arquivos fonte do projeto. Escolha o arquivo do projeto ou qualquer outro que lhe interesse visualizar.

22Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Captulo 2 O Ambiente DelphiEm uma ferramenta de programao visual como o Delphi, o papel do ambiente muito importante, algumas vezes mais importante que a linguagem usada pelo compilador. Esta uma boa razo para explorarmos um pouco o ambiente Delphi. No discutiremos todas as caractersticas do Delphi nem todas as opes de menu. Em vez disso daremos uma viso geral e ajudaremos voc a explorar algumas partes do ambiente que no so bvias, e tambm daremos algumas dicas que podem ser teis.

Pedindo AjudaO primeiro elemento do ambiente que iremos explorar o sistema de ajuda. H basicamente duas maneiras de chamar o sistema de ajuda: selecionando o comando apropriado no menu ou escolhendo um elemento da interface ou poro de cdigo fonte e pressionando F1. Quando voc pressiona F1 o Delphi no faz uma busca exata na lista de ajuda. Em vez disso, ele tenta entender o que voc est querendo. Por exemplo, quando voc aciona F1 quando o curso est sobre o nome do componente Button1 no cdigo fonte, o sistema de ajuda automaticamente abre a descrio da classe TButton, pois provavelmente isso que voc est buscando. Esta tcnica tambm funciona quando voc d um novo nome ao componente. Isto significa que o Delphi procura o significado contextual da palavra para a qual voc procura ajuda. Voc pode achar quase tudo no sistema de ajuda, mas preciso saber o que procurar. Isto parece bvio, mas s vezes no . Gastando algum tempo explorando o sistema de ajuda ir ajudar voc entender a estrutura desses arquivos e aprender como achar a informao que voc precisa. Os arquivos de ajuda tm bastante informao tanto para iniciantes quanto para programadores avanados. Eles listam todos os mtodos e propriedades de cada componente, os parmetros de cada mtodo ou funo, e detalhes semelhantes, que so importantes enquanto se escreve o cdigo.

Menus e Comandos do DelphiH basicamente trs maneiras de executar um comando no ambiente do Delphi: Usar o menu. Usar a barra de ferramentas. Usar os menus ativados pressionando o boto direito do mouse.

A seguir algumas sugestes para usar alguns comandos de menu. Algumas opes possuem botes na barra de ferramentas.

O menu FileNew: abre uma caixa de dilogo com novos itens que podem ser adicionados ao projeto em desenvolvimento. Open: responsvel pela abertura dos projetos. Tambm abre units, forms e texto no Editor de Cdigo. 23Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Open Project: essa opo abre somente projetos (DPR) e pacotes (BPG). Reopen: atalho para a abertura dos ltimos projetos e arquivos abertos anteriormente. Save: salva o arquivo aberto no Editor de Cdigo. Save All: salva todas as alteraes ainda no salvas. Save Project As: salva o projeto com outro nome ou outro local. Close: fecha o arquivo aberto no Editor de Cdigo. Close All: fecha a aplicao inteira.

O menu EditEste menu tem algumas operaes que so tpicas, tais como Undo, Redo e os comandos Cut, Copy e Paste, mais alguns comandos especficos para as janelas do editor e de form. importante dizer que os comandos padro do menu Edit (e os atalhos Crtl + Z, Ctrl + X, Ctrl + C e Ctrl + V) funcionam tanto para texto quanto para componentes. Algumas diferenas devem ser observadas. Por exemplo, quando trabalhamos com texto, o primeiro comando do menu Edit Undo, mas quando trabalhamos com form, o primeiro comando Undelete. Voc deve ter observado que possvel copiar componentes do form para o editor e vice versa. O Delphi coloca componentes no Clipboard na sua descrio textual. Voc pode at editar a verso textual do componente, copiar o texto para o Clipboard, e ento col-lo de volta no form como um novo componente. Por exemplo, se voc colocar um boto em um form, copi-lo e col-lo em um editor, voc obter a seguinte descrio:

Figura 20 Descrio textual de um boto Agora se voc alterar o nome (Name) do objeto, rtulo (Caption) ou posio (Left e Top), ou ainda adicionar uma nova propriedade, essas mudanas podem ser copiadas e coladas de volta em um form. Exemplo de mudanas:object btnAlo: TButton Left = 200 Top = 200 Width = 180 Height = 60 TabOrder = 0 Caption = 'My Button' Font.Name = 'Arial' end

Figura 21 Mudanas na descrio textual usando um editor qualquer Copiando a descrio acima e colando-a em um form ir criar um boto na posio especificada com rtulo My Button e fonte Arial. Para usar esta tcnica, voc 24Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

precisar saber editar a descrio textual de um componente, que propriedades so vlidas, e como definir os valores das propriedades, principalmente o tipo de dado. Quando o Delphi interpreta a descrio textual de um componente, ele tambm pode mudar os valores de outras propriedades relacionadas quelas que voc alterou, e pode tambm mudar a posio do componente no form, para que ele no fique sobreposto a outro. Voc pode ver como o Delphi modifica as propriedades do componente visualizando o form como texto:

Figura 22 Descrio textual do boto aps ser colado no form Como podemos constatar algumas propriedades automaticamente, para especificar propriedades de Fonte. foram adicionadas

O menu SearchEste menu tem alguns comandos padro tambm, tais como Search and Replace, e o Find in Files:

Figura 23 Comando Find in Files O comando Find in Files permite procurar uma string em todos os arquivos fonte de um projeto, todos os arquivos abertos ou todos os arquivos em um diretrio dependendo do boto marcado. O resultado da busca ser mostrado na rea de 25Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

mensagem no rodap da janela do editor de cdigo. Voc pode selecionar uma entrada para abrir o arquivo correspondente e saltar para a linha que contm o texto encontrado. O comando Incremental Search quando selecionado posiciona o cursor no editor de cdigo e voc pode digitar o texto diretamente na rea de texto. Quando voc digita a primeira letra o editor ir se mover para a palavra que inicia com essa letra, e assim por diante. O comando Go to Line Number desvia o editor para a linha que voc selecionar. O comando Find Error localiza erros de execuo. Quando voc est executando um programa e ocorre um erro fatal o Delphi mostra um nmero de endereo interno. Voc pode entrar esse valor na caixa de dilogo Find Error para o Delphi recompilar o programa e procurar o endereo especificado. Quando ele encontra o endereo, ele mostra a linha de cdigo fonte correspondente. Pode ser que o erro no esteja em uma linha do seu cdigo, mas sim em uma linha de cdigo de sistema ou de biblioteca. Neste caso o comando no consegue encontrar a linha que causou o erro.

O menu ViewMuitos dos comandos View podem ser usados para mostrar janelas do ambiente Delphi, tais como Project Manager, Breakpoints e Components. Algumas dessas janelas so usadas durante a depurao e outras quando se est escrevendo cdigo. Os comandos da segunda parte do View tambm esto disponveis na barra de ferramentas. O comando Toggle Form/Unit (F12) usado para alternar entre o form que voc est trabalhando e seu cdigo fonte. Se voc usar uma janela de cdigo fonte grande o suficiente para conter bastante texto, voc usar com freqncia esse comando. O comando New Edit Window abre uma segunda janela do editor. a nica maneira de visualizar dois arquivos lado a lado no Delphi. Voc visualiza dois arquivos ou partes diferentes de um mesmo arquivo. Em Toolbars voc pode optar por ocultar barra de ferramentas e paleta de componentes, embora essa no seja uma deciso muito sensata, pois torna o uso do ambiente bastante desconfortvel.

O menu ProjectEste menu tem comandos para gerenciar um projeto e compil-lo. Add to Project e Remove from Project so usados para adicionar ou remover forms ou arquivos fonte em Pascal ao projeto. O comando Compile constri ou atualiza o arquivo executvel, verificando que arquivos fonte foram modificados e compilando-os quando necessrio. Build All compila todos os arquivos fonte do projeto mesmo se eles no tiverem sido modificados desde a ltima compilao. Se voc quiser saber se a sintaxe do cdigo escrito est correta, mas no quer construir o programa, voc pode usar o comando Syntax Check. O comando Information mostra alguns detalhes da ltima compilao feita. A figura seguinte mostra as informaes relacionadas a um programa:

26Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Figura 24 Informaes sobre um programa compilado Options usado para alterar opes do compilador e do ligador, opes da aplicao, e assim por diante. Quando voc altera opes de projeto, voc pode marcar a caixa Default para indicar que o conjunto de opes ser usado para novos projetos.

O menu RunO menu Run deveria ser chamado Debug. Muitos de seus comandos so relacionados depurao, inclusive o prprio comando Run. Quando voc executa um programa no ambiente Delphi, ele executado sob o depurador integrado, a menos que esta opo esteja desabilitada em Environment. O comando Run um dos mais executados, pois o Delphi automaticamente recompila um programa antes de execut-lo, se o cdigo fonte tiver sido modificado. Voc pode optar por teclar F9 para compilar e executar um programa. O comando Parameters pode especificar parmetros a serem passados na linha de comando do programa que vai ser executado. Os comandos restantes so usados durante a depurao, para executar um programa passo a passo, definir breakpoints, observar valores de variveis e objetos e assim por diante. O Delphi possui outros menus e os menus locais que podem ser acionados atravs do boto direito do mouse. Quase todas as janelas do Delphi possuem seus menus locais com seus comandos relacionados.

Trabalhando com o Form DesignerDesenhar forms a parte central do desenvolvimento visual no ambiente Delphi. Cada componente colocado no form e cada propriedade definida so armazenadas em um arquivo que descreve o form (arquivo DFM) e tem algum efeito no cdigo fonte associado ao form (arquivo PAS). Quando voc inicia uma nova aplicao, o Delphi cria um form vazio, e voc pode comear a trabalhar com ele. Um projeto pode ter qualquer quantidade de forms. Quando voc trabalha com um form em tempo de projeto, voc est na verdade usando o Form Designer. Quando voc est trabalhando com um form, voc pode alterar suas propriedades, as propriedades de um de seus componentes, ou as propriedades de vrios componentes de uma vez. Para selecionar um form ou um de seus componentes voc simplesmente clica nele ou usa o Object Selector (a caixa combinada no Object Inspector), onde se pode ver o nome e tipo do objeto selecionado. Voc pode selecionar 27Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

mais de um componente, mantendo a tecla Shift pressionada enquanto clica o mouse, ou arrastando um retngulo de seleo em volta dos componentes no form. Quando voc seleciona mais de um componente no form, voc pode alinh-los ou dimension-los. Muitas das opes na caixa de dilogo Alignment so tambm disponveis na aba Alignment (acessvel atravs do comando View | Alignment Palette). Voc pode tambm abrir as caixas Tab Order e Creation Order para ajustar a ordem que os componentes visuais sero alcanados pela tecla Tab e a ordem de criao dos componentes no visuais.

Figura 25 Environment Options Alm de comandos especficos de menus locais, possvel ajustar algumas opes de form usando o comando Tools | Environment Options e escolhendo a aba Designer. As opes relacionadas a form referem-se a ativao e dimensionamento da grade. A grade torna mais fcil colocar componentes exatamente onde se quer no form, ajustando depois seu tamanho e posio. Sem a grade torna-se difcil alinhar dois componentes manualmente. H duas alternativas para ajustar a posio de um componente: ou voc pode ajustar os valores das propriedades Left e Top, ou voc usar as setas enquanto mantm a tecla Crtl pressionada. O uso das setas possibilita o ajuste fino da posio. Similarmente, voc pode usar as setas juntamente com a tecla Shift para fazer o ajuste fino do tamanho do componente. Shift + Ctrl + setas faz o componente se mover em intervalos da grade.

28Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

A Paleta de ComponentesPara adicionar um componente ao form, voc pode clicar no componente em uma das pginas da paleta de Componentes e ento clicar no form para colocar o novo componente. No form voc pode pressionar o boto esquerdo e arrastar o mouse para ajustar a posio e o tamanho do componente ao mesmo tempo, ou apenas clique para deixar o Delphi usar o tamanho padro. Cada aba da paleta tem um grupo de componentes, cada componente tem um cone e um nome que aparece em uma dica (hint). Para ver a dica apenas passe o mouse pelo boto e espere um segundo. As dicas mostram o nome oficial do componente. So formados pelos nomes das classes que definem os componentes sem o T inicial (por exemplo, se a classe TButton, o nome Button). Para inserir mais de um componente de um mesmo tipo no form, clique no componente na paleta com a tecla Shift pressionada. Assim, cada vez que voc clica no form o Delphi adiciona um novo componente deste tipo. Para encerrar a operao clique o boto com a seta (seletor padro) esquerda da paleta de componentes. Se voc estiver sem mouse voc pode adicionar um componente usando o comando View | Component List. Selecione um componente na lista e clique no boto Add to form.

O Object InspectorQuando voc est desenhando um form, voc usa o Object Inspector para ajustar valores de propriedades de form ou componentes. Suas abas listam propriedades e seus valores, e eventos do componente selecionado, em duas janelas que podem ser redimensionadas. Um Object Selector no topo do Object Inspector indica o componente corrente e seu tipo de dado, e pode ser usado para mudar o componente selecionado. O Object Inspector no lista todas as propriedades de um componente. Inclui apenas as propriedades que podem ser alteradas em tempo de desenvolvimento. A coluna da direita do Object Inspector permite apenas a edio apropriada para o tipo de dado da propriedade. Dependendo da propriedade, voc poder inserir uma string ou nmero, escolher de uma lista de opes, ou chamar um editor especfico pressionando um boto elipse. Quando uma propriedade admite dois valores, como True ou False, voc pode alternar entre um valor e outro apenas com um duplo clique. Se h mais de dois valores, o duplo clique ir selecionar o prximo da lista. Para algumas propriedades, tais como Color, voc pode entrar um valor, selecionar um valor de uma lista ou chamar um editor especfico. Outras propriedades, tal como Font, podem ser customizadas ou expandindo suas subpropriedades (usando o sinal de mais ou menos prximo ao seu nome) ou invocando um editor. Em outros casos, tais como em listas de strings, os editores especiais so a nica maneira de alterar uma propriedade. Se por algum motivo o Object Inspector desaparecer, pressione F11 e ele ficar visvel de novo.

A Paleta de AlinhamentoA ltima ferramenta relacionada ao desenho de form a paleta Alignment. Voc pode abrir esta paleta com o comando View | Alignment Palette. Ou pode escolher o componente que deseja alinhar e ento selecionar o comando Align no menu local do form. A paleta de alinhamento apresenta comandos para posicionar controles, centraliz-los, espa-los igualmente, e assim por diante. 29Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Escrevendo cdigo no EditorDepois que o form estiver desenhado, voc geralmente precisa escrever algum cdigo para responder a alguns de seus eventos. A cada vez que voc trabalha com um evento, o Delphi abre o editor com o arquivo relacionado ao form. Voc pode facilmente alternar entre o Form Designer e o editor de cdigo clicando no boto Toggle Form Unit na barra de ferramentas, clicando na janela correspondente, ou pressionando a tecla F12. O Delphi permite voc trabalhar com vrios arquivos fonte de uma nica vez, usando a metfora do bloco de notas com abas. Cada aba do bloco de notas corresponde a um arquivo diferente. Voc pode trabalhar com units relacionadas a forms, units independentes e arquivos de projetos; abrir arquivos de descrio de form no formato textual; e at trabalhar com arquivos texto quaisquer. Voc pode ir para a prxima aba do editor pressionando Ctrl + Tab, ou pressionando Shift + Ctrl + Tab para se mover no sentido contrrio. H vrias opes do ambiente que afetam o editor, muitas delas localizadas nas pginas Source Options, Display e Color da caixa de dilogo Editor Options no menu Tools. Na pgina Preferences de Environment Options voc pode ajustar a caracterstica Autosave. Salvar os cdigos fonte a cada vez que voc executa o programa pode prevenir perda de modificaes quando seu programa provocar travamento do sistema.

Usando marcadores de pginaO editor tambm permite usar marcadores de pgina. Quando voc estiver em uma linha do editor, voc pode pressionar Ctrl + Shift mais uma tecla numrica de 0 a 9 para definir um novo marcador de pgina, que aparece como um pequeno bloco numerado na margem esquerda. A partir da voc pode teclar Ctrl mais a tecla numrica para retornar a essa linha. Para retirar a marca, posicione o editor na mesma linha marcada e pressione Ctrl + Shift + tecla numrica. Esses marcadores tm uma limitao que pode tornar seu uso um pouco difcil. Se voc criar um novo marcador usando um nmero j existente, o marcador anterior ser removido e inserido na nova linha. Outro comportamento desagradvel que voc pode adicionar mltiplos marcadores em uma mesma linha, mas apenas um deles ser visvel. Os marcadores no so salvos junto com o arquivo, s so vlidos enquanto o arquivo estiver aberto.

Code InsightO editor tem vrias caractersticas conhecidas coletivamente como Code Insight. A idia principal desta tecnologia tornar mais fcil a escrita de cdigo tanto por programadores iniciantes quanto por programadores experientes. So quatro essas funcionalidades: O assistente de complementao de cdigo permite que voc escolha a propriedade ou mtodo de um objeto simplesmente procurando-o numa lista, ou digitando suas letras iniciais. Permite tambm que voc procure um valor apropriado para um comando de atribuio. O assistente de modelos de cdigo permite voc inserir um dos modelos predefinidos de cdigo, tal como um comando complexo com um bloco begin-end interno. possvel tambm definir novos modelos. 30Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

O assistente de parmetro de cdigo mostra em uma sugesto (hint) ou janela dica de contexto (tooltip) o tipo de dado de um parmetro de mtodo ou funo enquanto voc o est digitando. A avaliao de expresso dica de contexto uma caracterstica de tempo de depurao. Ela mostra o valor do identificador, propriedade ou expresso que est sob o cursor do mouse.

Complementao de cdigoH duas maneiras de ativar esse assistente. Voc pode digitar o nome de um objeto, tal como Button1, adicionar um ponto, e esperar. O Delphi ir mostrar uma lista de propriedades e mtodos vlidos que podem ser aplicados a esse objeto. O tempo que voc precisa esperar para aparecer a janela com a lista de opes depende da opo Delay, que pode ser configurada na pgina Code Insight da janela de configuraes do editor em Editor Options. A segunda maneira de ativar o assistente consiste em digitar o nome do objeto seguido de ponto, as letras iniciais da propriedade ou mtodo e pressione Ctrl + espao. A lista ser mostrada imediatamente, mas agora, o assistente tentar adivinhar que propriedade ou mtodo voc est procurando atravs das letras iniciais digitadas. Esta combinao de teclas pode ser usada em um comando de atribuio. Se voc digitar x := e pressionar Ctrl + espao o Delphi mostrar uma lista de possveis objetos, variveis ou constantes que podem ser usados neste ponto do programa. As opes mostradas nessa lista so dinmicas. O Delphi est constantemente validando o cdigo digitado. Assim, se voc adicionar uma nova varivel ela ser mostrada na lista.

Modelos de cdigoDiferente do assistente de complementao de cdigo, o assistente de modelos de cdigo deve ser ativado manualmente. Voc pode fazer isso teclando Ctrl + J para mostrar todos os modelos. Geralmente voc digita uma palavra chave, como if ou array, e ento pressiona Ctrl + J, para ativar apenas os modelos que iniciam com aquela palavra. Para algumas palavras chave existem vrios modelos, todos iniciando com a mesma palavra chave (tais como ifA ou ifB). Assim, se voc pressionar Ctrl + J voc ver todos os modelos relacionados quela palavra chave. Voc pode usar esse assistente para dar um nome a uma expresso comum usando a pgina Code Insight. Por exemplo, se voc usa com freqncia a funo MessageDlg, voc pode entrar um novo modelo chamado mess, digite uma descrio e ento adicione o seguinte texto: MessageDlg('|', mtInformation, [mbOk], 0); Agora toda vez que voc precisar criar uma caixa de mensagem, voc apenas digita mess e pressiona Ctrl + J, e o texto completo ser mostrado. A linha vertical indica a posio para onde o cursor ser movido depois que o Delphi mostrar o texto. Como pudemos ver esse assistente no est relacionado a palavras chave da linguagem, mas um mecanismo geral.

31Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Parmetros de cdigoA terceira tecnologia Code Insight que ser discutida o assistente de parmetros de cdigo. Com esse recurso digitamos o nome da funo e o abre parnteses, os parmetros e tipos de dados aparecem em uma janela de dica.

Figura 26 Assistente de Parmetros de Cdigo Observe que o primeiro parmetro aparece em negrito. Depois que voc digita o primeiro parmetro, o segundo fica em negrito e assim por diante. Isso til para funes com muitos parmetros. Esse assistente tambm funciona para as funes que voc cria.

Gerenciando ProjetosVamos estudar maneiras de alterar caractersticas de um projeto usando as opes Project Manager e Project Options.

O Project ManagerQuando um projeto carregado voc pode selecionar a opo View | Project Manager para abrir uma janela de projeto. A janela lista todos os forms e units que fazem parte do projeto. Os menus locais de Project Manager permitem fazer uma srie de operaes sobre um projeto, tais como adicionar arquivos novos ou existentes, remover arquivos, ver um arquivo de cdigo fonte ou form, e adicionar o projeto ao repositrio. Muitos desses comandos esto disponveis na barra de ferramentas dessa janela:

Figura 27 Project Manager

32Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Ajustando opes de ProjetoA partir do Project Manager (ou do menu Project) voc pode chamar o dilogo Project Options. A primeira pgina de Project Options, chamada Forms, lista os forms que podem ser criados automaticamente na inicializao do programa (comportamento padro) e os forms que podem ser criados manualmente pelo programa. Um form pode facilmente ser movido de uma lista para outra. A prxima pgina, Application, usada para definir o nome da aplicao e o nome do arquivo de ajuda e tambm escolher o cone. Outras opes dizem respeito ao compilador e linkeditor, informao de verso e o uso de pacotes de tempo de execuo. Todas as opes de projetos so salvas automaticamente com o projeto em um arquivo com a extenso DOF. um arquivo texto que pode facilmente ser editado. Este arquivo no pode ser excludo se voc modificar alguma opo padro.

Compilando um ProjetoH vrias maneiras de compilar um projeto. Se voc execut-lo (pressionando F9 ou clicando no boto da barra de ferramentas) o Delphi ir compil-lo primeiro. Quando o Delphi compila um projeto, ele compila apenas os arquivos que foram modificados. Selecionando Build All, todos os arquivos so compilados mesmo se no tiverem sido alterados. Isso no faz muito sentido, pois o Delphi sabe o que precisa compilar, mas quando voc altera alguma opo de projeto Build All deve ser usado para que as alteraes tenham efeito. O projeto lista os arquivos de cdigo fonte e os forms relacionados. A lista visvel tanto nos fontes do projeto quanto no Project Manager, e usado para compilar ou reconstruir um projeto. Cada arquivo de cdigo fonte transformado em uma unit compilada Delphi, um arquivo com o mesmo nome do cdigo fonte, mas com a extenso DCU. Quando o cdigo fonte do projeto compilado, as units que formam o projeto so linkados no arquivo executvel junto com o cdigo da biblioteca Visual Component Library (VCL). Voc pode entender melhor os passos da compilao e acompanhar o que acontece durante esta operao se voc habilitar a opo Show Compiler Progress. Voc encontrar esta opo na pgina Preferences da caixa de dilogo Environment Options. Isso torna a compilao um pouco mais lenta, a janela possibilita ver que cdigo fonte est sendo compilado.

Figura 28 Compilador em andamento

33Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Explorando um Programa CompiladoDelphi oferece vrias ferramentas que podem ser usadas para explorar um programa compilado, incluindo o depurador e o Object Browser.

O Depurador IntegradoO Delphi tem um depurador integrado com vrias caractersticas, e no necessrio fazer muita coisa para us-lo. Cada vez que voc executa um programa no ambiente Delphi, ele executado por padro no depurador. Isso significa que voc pode determinar um ponto de parada (breakpoint) de execuo do programa em uma linha de cdigo especfica. Por exemplo, abra o programa Alo criado no Captulo 1 e d um duplo clique no boto para abrir o editor no cdigo relacionado. Agora crie um ponto de parada clicando na margem do editor, escolhendo o comando Toggle Breakpoint no menu local do editor ou pressionando F5.

Figura 29 Ponto de parada (Breakpoint) O editor ir destacar a linha onde voc inseriu o ponto de parada, mostrando-a em uma cor diferente. Agora o programa pode ser executado normalmente, mas toda vez que voc clicar no boto o depurador ir parar a execuo do programa, mostrando a linha de cdigo correspondente. Voc pode executar esta e as linhas seguintes passo a passo, inspecionando as funes chamadas ou continuando a execuo do programa. Quando o programa parado voc pode inspecionar seu estado em detalhes. Embora haja muitas maneiras de inspecionar um valor, a maneira mais simples a Avaliao de Expresses Dica de Contexto. Simplesmente passe o mouse sobre o nome de qualquer varivel e voc ver seu valor em uma janela de dica.

O Object BrowserDepois que o programa compilado, voc pode executar o Object Browser (disponvel atravs do comando de menu View | Browser) para explor-lo, mesmo que voc no o esteja executando o depurando-o. Esta ferramenta permite que voc veja todas as classes definidas pelo programa (ou pelas units usadas direta ou indiretamente pelo programa), todas as variveis e nomes globais, etc. Para cada classe, o Object Browser mostra a lista de propriedades, mtodos e variveis - locais e herdadas, privadas e pblicas. A informao mostrada no Object Browser pode no significar muito se voc ainda no est familiarizado com a linguagem Object Pascal usada pelo Delphi.

34Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Os Arquivos produzidos pelo SistemaComo j vimos, o Delphi produz uma srie de arquivos para cada projeto, e voc deve saber como so nomeados e o que eles guardam. Basicamente h dois elementos que tm impacto na forma como os arquivos so nomeados: os nomes que voc d ao projeto e seus forms, e as extenses predefinidas usadas pelo Delphi para os arquivos que voc escreve e para aqueles gerados pelo sistema. A grande vantagem do Delphi sobre outros ambientes de programao visual que muitos dos arquivos de cdigo fonte so arquivos texto ASCII. J vimos o cdigo fonte Pascal, cdigo do projeto e arquivos de descrio de form no Captulo 1. Agora vamos dar uma olhada nos arquivos de opes e desktop. Ambos os arquivos usam estrutura similar aos arquivos INI do Windows, nos quais cada seo indicada pelo nome entre colchetes. Por exemplo, veja um fragmento de ALO.DOF do projeto Alo na Figura 30. A mesma estrutura usada pelos arquivos desktop, que geralmente so mais longos. bom dar uma olhada no que armazenado nesses arquivos para entender seu papel. Em resumo, um arquivo desktop (.DSK) lista as janelas Delphi, indicando suas posies e estados. Por exemplo, a descrio da janela principal pode ser visualizada na Figura 31.

Figura 30 Fragmento de ALO.DOF

35Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Figura 31 Arquivo desktop (.DSK) Alm de opes do ambiente e posies de janela, o arquivo desktop contm uma srie de listas de histrico, indicao dos pontos de parada atuais, mdulos ativos, mdulos fechados e forms.

36Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Captulo 3 Bsicos

Conhecendo

os

Componentes

Agora que j conhecemos um pouco o ambiente Delphi, j entendemos a estrutura de uma aplicao, j criamos um pequeno programa, estamos prontos para ir para a parte principal do ambiente de programao: o uso de componentes. Esta a caracterstica chave deste ambiente: programao visual usando componentes. O sistema vem com uma srie de componentes prontos para uso. No sero descritos aqui todos os componentes em detalhes com suas propriedades, mtodos e eventos. Se voc precisar de mais informao, isso pode ser facilmente encontrado no sistema de ajuda. Neste captulo usaremos exemplos bastante simples para focar em apenas algumas caractersticas mais importantes. Iniciaremos dando destaque a um grupo de componentes bsicos, tais como botes, rtulos, caixas de listas, campos de edio e outros controles relacionados. A maioria dos componentes que so discutidos neste captulo est presente na aba Standard da paleta de componentes.

Componentes do prprio WindowsDe onde vem a idia de programar para Windows usando componentes? A resposta simples: o prprio Windows possui alguns componentes, geralmente chamados controles. Um controle tecnicamente uma janela predefinida com um comportamento especfico, algumas propriedades e alguns mtodos. Esses controles foram o primeiro passo em direo ao desenvolvimento por componentes. O segundo passo foi provavelmente os controles do VisualBasic e o terceiro passo so os componentes do Delphi. Os controles de sistema padro so os componentes bsicos de cada aplicao Windows, independente da linguagem de programao usada para escrev-la, e so bem conhecidos por todos os usurios do Windows. O Delphi literalmente empacota esses controles predefinidos do Windows em alguns de seus componentes bsicos, inclusive os que sero discutidos neste captulo. TWinControl a classe base de todos os componentes ajanelados do Delphi. Esses componentes podem receber foco, podem conter outros controles e tm um manipulador de janela.

Propriedades, eventos e mtodosPropriedades so um tipo especial de campo de um componente, que definem suas caractersticas. Valores de algumas propriedades podem ser alterados pelo Object Inspector em tempo de desenvolvimento. Outras propriedades s podem ser modificadas em tempo de execuo. Eventos acontecem em resposta a uma ao do usurio ou do prprio sistema. Ao programar um mtodo de evento devemos levar em considerao que este s ser executado quando o evento acontecer. Uma das tarefas mais importantes da programao orientada a eventos determinar quais eventos sero usados e qual a ordem que esses eventos acontecem. 37Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Os mtodos realizam aes definidas pelo componente, representam o comportamento do componente. So procedimentos e funes definidos dentro da classe, e por isso podem acessar diretamente as propriedades do componente sem que necessitem ser passados como parmetros.

Iniciando uma nova AplicaoJ vimos no Captulo 1 que, quando o Delphi aberto, automaticamente, iniciada uma nova aplicao. Vejamos outra maneira de criar uma nova aplicao. Vamos usar o menu File. Clique depois em New e a seguir em Application. Se houver uma aplicao aberta, nesse momento, o Delphi perguntar se voc deseja salvar o projeto. Confirme se for o caso, e uma nova aplicao ser iniciada, com um form pronto para ser desenhado. A primeira ao a ser feita salvar nosso projeto para nomear os arquivos. Para isso vamos usar o comando File | Save All. Esse comando ir salvar os arquivos de unit e de projeto (DPR). Inicialmente ele pede que seja informado o nome da unit. Tenha o cuidado de escolher uma pasta para o seu programa e salvar cada nova unit nesta mesma pasta. Vamos digitar u_exemplo1 e pressionar o boto Salvar. Em seguida ele pede o nome do projeto. Digite Exemplo1 e pressione o boto Salvar. Nosso programa ser um cadastro de dados pessoais. Os dados a serem cadastrados so: nome, idade, profisso, escolaridade, sexo e situao cadastral.

Propriedades de Form (TForm)Antes de inserir qualquer componente no novo form, vamos modificar algumas de suas propriedades usando o Object Inspector. Lembre que o Object Inspector mostra propriedades e eventos do componente que estiver selecionado. O quadro abaixo apresenta as propriedades que sero modificadas, os valores a serem definidos e a descrio de cada uma. So mostrados tambm os mtodos e eventos mais importantes. H muitas outras propriedades, mas essas so as bsicas. Propriedade +BorderIcons biMaximize BorderStyle Caption Color Height Icon Name Position Width WindowState Mtodo Close Show ShowModal Evento OnActivate Contedo False bsSingle Exemplo 1 clBtnFace 480 HandShak.ico frmExemplo1 poScreenCenter 640 wsNormal Descrio Desabilita o boto maximizar Borda simples, tamanho fixo Legenda da barra de ttulos Cor padro de fundo da tela Altura da tela em pixels cone da barra de ttulos da janela Identificador da janela Posiciona a janela no centro da tela Largura da tela em pixels Abre a tela no tamanho original Descrio Fecha a janela Abre a janela Abre a janela, mas usurio precisa fech-la para continuar a aplicao Descrio Quando a janela recebe o foco 38Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

OnClose OnCloseQuery OnCreate OnShow

Quando a janela fechada Quando a janela fechada, mas o usurio pode impedir o seu fechamento Quando o form criado Quando a janela aberta Quadro 1 Propriedades, mtodos e eventos de Form

Para modificar a propriedade biMaximize, clique no sinal de + ao lado de BorderIcons para expandir suas subpropriedades e defina o novo valor. Para carregar o cone da propriedade Icon, clique no boto elipse (aquele com os trs pontos) e depois no boto Load para escolher o cone em C:\Arquivos de Programas\Arquivos Comuns\Borland Shared\Images\Icons. Por enquanto no programaremos nenhum evento.

Utilizando um Boto (TButton)O Delphi disponibiliza alguns tipos de boto. Vamos selecionar o boto da paleta Standard e inseri-lo no form recm criado.

Figura 32 Boto recm inserido Iremos alterar as propriedades do boto que foi inserido. O quadro abaixo mostra as propriedades e os valores a serem definidos, alm de mtodos e eventos mais usados. Note que na propriedade Caption ns inserimos um & (ampersand) antes da letra F. Este recurso define uma tecla de atalho sublinhada. Desta forma o boto pode ser pressionado usando apenas o teclado. Simplesmente pressione a letra F e o boto ser pressionado. Propriedade Caption Default Enabled Contedo &Fechar False True Descrio Legenda do boto Evento OnClick no executado se Enter for pressionado Habilita o boto 39Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Height ModalResult Name Width Mtodo Click Evento OnClick OnEnter

Altura do boto Determina se e como o form ser fechado Identificador do boto Largura do boto Descrio Simula um clique de mouse como se o usurio tivesse pressionado o boto Descrio Quando o usurio clica no boto Quando o boto recebe o foco Quadro 2 Propriedades, mtodos e eventos de Button

25 mrNone btnFechar 75

Aps definirmos as propriedades precisamos escrever o cdigo para que o boto tenha o comportamento que desejamos. Quando pressionarmos o boto Fechar, queremos que o form seja fechado. Para definir o comportamento do boto, vamos dar um duplo clique nele. O editor de cdigo ser aberto e vamos digitar o cdigo que realizar a ao.

Figura 33 Cdigo o evento OnClick de btnFechar Como desejamos que o form seja fechado quando clicarmos no boto, isso representa uma ao a ser realizada pelo form. Portanto devemos usar um mtodo que tenha esse comportamento, por isso escolhemos o mtodo Close, de acordo com o Quadro 1. Voc pode compilar seu programa e agora ele pode ser fechado usando o boto padro no canto superior direito ou o boto btnFechar que foi programado.

Aceitando entrada de dados do Usurio (TEdit)J vimos que o usurio pode interagir com uma aplicao usando o mouse, ou o teclado em vez do mouse para selecionar um boto pressionando a tecla correspondente letra sublinhada no Caption. Alm desses casos, o Windows pode manipular entrada do teclado diretamente. O Delphi prov uma srie de controles para construir campos de edio e editores de texto. Dentre esses vamos utilizar o componente campo de edio (TEdit) da paleta Standard. Este componente permite que o usurio digite apenas uma linha de texto. Mais adiante usaremos um componente que possibilita a entrada de mais de uma linha. Selecione ento esse componente e insira-o no form. Esse primeiro campo de edio que estamos inserindo ser utilizado para entrada do nome da pessoa em nosso cadastro de dados pessoais.

40Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Figura 34 Componente TEdit Da mesma forma que procedemos com os outros componentes iremos alterar algumas propriedades desse componente. A seguir apresentamos um quadro com propriedades, eventos e mtodos de TEdit. Propriedade CharCase Height Name PasswordChar Text Width Mtodo Clear SetFocus Evento OnChange OnEnter OnExit Descrio No faz nenhum tipo de converso no que digitado. ecUpperCase converte tudo para maisculas 21 Altura da caixa de texto edNome Identificador da caixa de texto #0 Define qual caractere ser usado para ocultar o texto digitado. #0 no oculta o texto digitado Retorna o que foi digitado pelo usurio. Seu contedo deve ser apagado 400 Largura da caixa de texto Descrio Limpa o contedo de Text Muda o foco para o controle Descrio Quando o texto modificado Quando o controle recebe o foco Quando o foco sai do controle e vai para outro Quadro 3 Propriedades, mtodos e eventos de Edit Contedo ecNormal

Identificando Componentes (TLabel)Rtulos so apenas texto, ou comentrios, escritos em um form. Geralmente o usurio no interage com rtulos - pelo menos no diretamente. No faz muito sentido clicar em um rtulo, embora no Delphi isso seja tecnicamente possvel. Nem todo texto

41Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

que vemos em um form corresponde a um rtulo. O mtodo TextOut de form pode apresentar um texto. Usamos rtulos para descrever outros componentes, tais como campos de edio e caixas de lista ou combo, pois eles no tm ttulo. O Delphi implementa rtulos como componentes grficos, no ajanelados. Vamos ento inserir um rtulo no nosso form. Selecione o rtulo na paleta Standard e insira-o ao lado esquerdo do campo de edio conforme mostrado na figura seguinte. Altere suas propriedades de acordo com o Quadro 4:

Figura 35 Componente TLabel Propriedade Alignment AutoSize Caption FocusControl Name WordWrap Evento OnClick Contedo taLeftJustify True Descrio Texto justificado esquerda Define se o controle ser automaticamente redimensionado para acomodar o texto &Nome Legenda do rtulo edNome Define qual componente receber o foco quando for selecionada a tecla de atalho sublinhada da legenda lblNome Identificador do rtulo False Se AutoSize estiver False, define se o texto poder utilizar retorno automtico (quebra de linha) no caso de ultrapassar a largura definida Descrio Quando o usurio clica no rtulo Quadro 4 Propriedades e eventos de Label

Observe que na legenda do componente, a exemplo da legenda do boto, foi inserido um & para definir uma tecla de atalho sublinhada. No caso do rtulo quando

42Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

pressionamos esta tecla o foco ser mudado para o controle definido na propriedade FocusControl.

Fazendo escolhas (TCheckBox, TRadioButton e TRadioGroup)H dois controles do Windows que permitem ao usurio escolher diferentes opes. O primeiro a caixa de verificao (TCheckBox), que corresponde a uma opo que pode ser selecionada livremente. O segundo controle o boto de rdio (TRadioButton), que corresponde a uma seleo exclusiva. Por exemplo, se voc tiver dois botes de rdio com rtulos A e B, voc pode selecionar um dos dois, mas no ambos ao mesmo tempo. A outra caracterstica que a escolha de uma das opes obrigatria. Selecione uma caixa de verificao na paleta Standard e insira-o no form. Usaremos a caixa de verificao para definir a situao cadastral da pessoa - pode assumir a situao Ativo se a caixa estiver marcada e No ativo, caso contrrio. No Quadro 5 abaixo podemos ver as propriedades, mtodos e eventos de TCheckBox.

Figura 36 Componente TCheckBox Propriedade Caption Checked Name State Evento OnClick OnEnter Descrio Legenda da caixa de verificao Especifica se o controle est marcado Identificador da caixa de verificao Indica se o controle est selecionado, no selecionado ou parcial Descrio Quando o usurio clica no controle Quando o controle recebe o foco Quadro 5 Propriedades, mtodos e eventos de CheckBox Contedo Situao False chxSituacao cbUnchecked

43Centro Universitrio Luterano de Santarm

Linguagem de Programao Comercial

Vamos inserir um componente para selecionarmos o sexo da pessoa que est sendo cadastrada. Nesse caso precisamos de um componente que possibilite mais opes. Usaremos ento o grupo de botes de rdio (TRadioGroup). Grupo de botes de rdio permite que sejam inseridos vrios botes, cada um com uma opo. Selecione o grupo de botes de rdio da paleta Standard e o insira no form.

Figura 37 Componente TRadioGroup Vamos alterar algumas propriedades deste componente. No quadro a seguir so apresentadas algumas propriedades, mtodos e eventos de TRadioGroup. Propriedade Caption Columns Height ItemIndex Items Name Width Mtodo SetFocus Evento OnClick OnEnter OnExit Contedo Sexo 1 90 0 Masculino Feminino rgSexo 185 Descrio Legenda do grupo de botes de rdio Nmero de colunas em que as opes do grupo de botes so apresentadas Altura do controle Define o item selecionado (primeiro item 0) L