Captulo 3
 Desenvolvendo uma Aplicao

 Ao final deste captulo, voc deve estar apto a :
* Desenvolver uma aplicao
* Utilizar o Project Manager
* Utilizar o Intergrated Debugger

 Overview
 O Delphi  uma poderosa linguagem de programao orientada a objeto com um avanado ambiente de desenvolvimento visual. Estas caractersticas, quando combinadas
com a arquitetura de bancos de dados Borland, permite criar rpidamente aplicaes Client/Server. Neste captulo , voc aprender sobre o processo de construo
de uma aplicao Delphi, criar uma aplicao de exemplo e explorar os conceitos de gerenciamento de projetos.
 Descrio do processo
Introduo
 Uma caracterstica do Delphi  que ele permite construir aplicaes rpidamente. Esta seo descreve o processo de desenvolvimento de aplicaes Delphi, como segue:

* Criando um Projeto
* Adicionando um Form ao Projeto
* Adicionando Componentes ao Form
* Definindo Propriedades dos Componentes
* Adicionando Event Handlers
* Compilando, Executando e Depurando a Aplicao
Estgio 1 - Criando um Projeto
 O primeiro passo no desenvolvimento de uma aplicao no Delphi  criara um projeto. Aplicaes no Delphi so gerenciadas como projetos. Criar um novo projeto gera
um arquivo de projeto. O arquivo de projeto controla uma aplicao Delphi construindo os vrios forms, executando a aplicao e exibindo o form principal da aplicao.
 Arquivos de projeto contm cdigo fonte Object Pascal gerado pelo Delphi que se torna parte do executvel da aplicao quando for compilado e "Linkado".
Voc pode comear um novo projeto  inicializando o Delphi. Sempre que voc inicializar o Delphi, um novo projeto  aberto. Se o Delphi j estiver aberto, voc pode
abrir um novo projeto atravs do menu File, Selecionando New Project.
O Delphi cria um arquivo de projeto default chamado PROJECT1.DPR, que o Delphi mantm durante o desenvolvimento da aplicao. Conforme o projeto for alterado, tal
como adicionando novos forms, o Delphi atualiza o arquivo de projeto. O arquivo de projeto se parece com a figura a seguir:

Estgio 2 - Adicionando um Form ao Projeto
Como discutido anteriormente, os forms so a fundao das aplicaes Delphi e fornece uma tela onde voc  pode criar a interface com o usurio de seu programa. Um
projeto ou aplicao geralmente possui mltiplos forms. Adicionar um form ao projeto cria os seguintes arquivos adicionais:

* Um arquivo form com extenso .DFM contendo informaes de resources para a construo do form.
* Um arquivo unit com extenso .PAS contendo cdigo Object Pascal.

Todo form  em uma aplicao possui estes dois arquivos associados a ele. Conforme for adicionando novos forms, o arquivo de projeto  atualizado automaticamente.
O exemplo a seguir mostra o Form2, a ser adicionado ao projeto.

Quando voc cria um projeto, um form  (Form1)  criado por default. O nome de arquivo deste form  UNIT1.DFM.

Para Adicionar um Form ao Projeto
Execute os seguintes passos para adicionar um form um ao projeto:

Passo
Ao
1
Para adicionar um ou mais forms ao projeto, no menu File, selecione New Form.
Dependendo das configuraes de Gallery na pgina Preferences do quadro de dialogo Environment Options, pode ocorrer:
- Um form em branco aparece e  adicionado ao projeto
- O quadro Browse Gallery aparece, como segue:

Passo
Ao
2
Aparecendo o quadro de dialogo Browse Gallery, selecione o tipo de form que voc deseja adicionar ao projeto e de um clique em OK.

Estgio 3 - Adicionando Componentes ao Form
Como discutido anteriormente, componentes so objetos  visuais de programa que voc manipula durante o design. Os componentes disponveis no momento esto na Component
Palette. Aps inserir um componente no form, voc pode move- lo, edita-lo e reajusta-lo de acordo com suas necessidades. O exemplo a seguir mostra trs componentes
Label e trs componentes Edit em um form:

Passos para Adicionar um Componente em um Form
Execute os seguintes passos para adicionar um componente ao form:

Passo
Ao
1
De um clique sobre um componente na Component Palette.
2
De um clique sobre o form onde o componente deve aparecer.
3
Reajuste o componente arrastando seus manipuladores.

Voc tambm pode adicionar um componente com um duplo-clique no componente na Component Palette. Um componente at o local desejado e reajusta-lo atravs dos manipuladores.

Cdigo Fonte da Unit aps Adicionar Componentes
Quando um componente  adicionado ao form, o cdigo fonte do arquivo  modificado. Especificamente a definio type para o membro correspondente ao componente adicionado.
O exemplo a seguir exibe a definio de type no arquivo unit que corresponde ao form mostrado anteriormente com trs componentes Label e trs componentes Edit:

Estgio 4 - Definindo Propriedades dos Componentes
Como discutido anteriormente, cada componente tem um conjunto de atributos chamados de propriedades.  Cada propriedade que possa ser alterada durante o design 
exibido no Object Inspector. Voc pode definir propriedade durante o design ou codificar para que uma propriedade do componente seja alterada durante a execuo
do programa.
Passos para Definir uma Propriedade de um Componente
Execute os passos a seguir para definir uma propriedade de um componente durante o design:

Passo
Ao
1
D um clique sobre o componente no form cuja propriedade voc queira alterar.
2
D um clique sobre a aba da pgina Properties no Object Inspector.
O exemplo a seguir mostra a pgina Properties para o componente Button.

3
Selecione a propriedade que voc queira definir.
4
Altere o valor da propriedade na coluna Values.

Estgio 5 - Adicionando Event Handlers
Em programas dirigido a evento, responder a eventos do usurio ou do sistema  um ponto chave de sua aplicao. Alem das propriedades, os componentes possuem uma
lista de eventos que podem ser detectados. Quando voc adiciona event handlers a sua aplicao, voc est dizendo ao componente que execute os comandos programados
sempre que um evento em especfico seja detectado. Por exemplo, um boto em seu form pode detectar quando um usurio clica sobre si, o que  conhecido como evento
OnClick. O evento OnClick faz com que sua aplicao execute a ao especificada no event  handler.

Passos para Adicionar um Event Handler
Execute os passos a seguir para adicionar um event  handler:

Passo
Ao
1
D um clique sobre o componente no form que precise de um event handler.
2
D um clique sobre a aba da pgina Events no Object Inspector para exibir uma lista de eventos para o componente.
3
D um duplo-clique  direita da coluna de eventos  para fazer com que o Delphi gere um event handler vazio e exiba o handler no Code Editor.
4
Digite o cdigo a ser executado quando ocorrer o evento.

Estgio 6 - Compilando, Executando e Depurando a Aplicao
O compilador e o depurador (debugger) so partes do ambiente Delphi. O compilador inclui um habilitador Make automtico para que quando sua aplicao for alterada,
somente os arquivos alterados sejam recompilados. O debugger est ativo sempre que voc executar aplicaes dentro do ambiente do Delphi.

Passos para Compilar e Executar a Aplicao
Execute os passos a seguir para compilar e executar a aplicao:

Passo
Ao
1
Para compilar o projeto atual sem inicializar o arquivo executvel resultante, no menu Compile, selecione Compile.
2
Para compilar quaisquer alteraes e executar o arquivo do projeto corrente, selecione Run no menu Run.
Tutoria: Criando uma Aplicao
Introduo
O processo a seguir  um tutorial de exemplo. Uma  maneira de entender o processo de desenvolvimento de aplicaes no Delphi  construir uma aplicao de exemplo.
Esta seo fornece um rumo na construo de uma aplicao simples utilizando diversos componentes padro do Delphi. A aplicao permite que o texto seja digitado
em edit box e adicionado em um list box com o clique de um boto.

Estgios do Tutorial
O processo deste tutorial envolve os seguintes estgios:

Estgio
Processo
1
Criar um projeto de exemplo
2
Adicionar componentes padro
3
Definir propriedades dos componentes
4
Adicionar um event handler
5
Compilar e executar a aplicao de exemplo
Passos para Estgio 1
Execute os passos para abrir um novo projeto e cham-lo PSAMPLE.DPR:

Passo
Ao
1
No menu File, selecione New Project para criar um projeto.
O processo de abertura de um novo arquivo projeto adiciona automaticamente um novo form. Se o quadro de dialogo Browse Gallery aparecer, Blank Form  a opo default.
D um clique em OK.
2
Se for solicitado a gravao das alteraes do projeto atual selecione No.
3
No menu File, selecione Save Project As.
4
Quando o nome da unit for solicitado, digite USAMPLE.PAS.
Este nome substitui o nome default UNIT1.PAS.
5
Quando o nome do projeto for solicitado, digite PSAMPLE.DPR. Este nome substitui o nome default PROJECT1.DPR.
Passos para o Estgio 2
Execute os passos a seguir para adicionar componentes da pgina Standard ao form no projeto PSAMPLE:

Passo
Ao
1
D um clique sobre a aba da pgina Standard da Component Palette para visualizar os componentes Standard.
2
Mova o ponteiro do mouse vagarosamente sobre cada componente para que o Help Hint seja exibido, e localize os componentes Button, Edit e ListBox.
3
D um duplo-clique sobre o componente Button para  inseri-lo no form. Arraste o componente at a parte inferior do form.
4
D um duplo-clique sobre o componente Edit, e mova o componente at a parte superior do form.
5
D um duplo-clique sobre o componente ListBox para inseri-lo no form.
6
Arranje os componentes e reajuste o tamanho do form para que se parea coma figura a seguir.

Passos para Estgio 3
Execute os passos a seguir para definir as  propriedades dos componentes Edit e Button:

Passo
Ao
1
D um clique sobre o componente Edit.
As propriedades do componente Edit so exibidas no Object Inspector. O nome default deste componente  Edit1, e seu tipo de objeto  TEdit.
2
No Object Inspector, d um clique sobre a coluna Values da propriedade Text de Edit1 e a apague.
3
Defina a propriedade Caption para Add Item.
Seu form deve se parecer com a figura a seguir:

Passos para o Estgio 4
Execute os passos a seguir para adicionar um event  handler para o evento OnClick do componente Add Item:

Passo
Ao
1
D um clique sobre o boto Add Item de seu form para exibir as propriedades no Object Inspector.
2
D um clique sobre a aba Events do Object Inspector  para exibir a pgina Events do boto.
3
D um duplo-clique sobre a coluna a direita do evento OnClick. O nome da procedure Button1Click aparecera na coluna. O Delphi gera um event handler vazio e o exibe
no Code Editor.
Digite o cdigo a seguir dentro das declaraes begin....end; da procedure.

     if Edit1.Text<> " then { Edit1 no esta vazio }
     begin
         ListBox1.Items.Add(Edit1.text);
          Edit1.Text := ";
      end;
Passos para o Estgio 5
Execute os passos a seguir para compilar e executar sua aplicao:

Passo
Ao
1
No menu Run, selecione Run.
Esta opo compila e executa sua aplicao.
2
Digite algum valor, tal como seu nome, no componente Edit.
3
D um clique em Add Item para adicionar cada item a list box.
Adicione nove ou dez itens a list box.
4
No menu File, selecione Save Project, e depois Close Project.

Utilizando o Project Manager
Introduo
O Delphi permite que voc gerencie seus projetos  atravs do Project Manager. O Project Manager lista os  arquivos que compe seu projeto e permite que voc navegue
pelos arquivos. Voc tambm pode utilizar o Project Manager para:

* Adicionar units e forms ao projeto
* Remover units e forms de um projeto
* Especificar o form principal
* Especificar a localizao dos arquivos de Help  e cone
Exibindo a Janela do Project Manager
Para exibir  o Project Manager, no menu View, selecione Project Manager. A janela Project Manager aparecer, como segue:

Descrio dos Botes do Project Manager
A tabela a seguir descreve os botes do Project  Manager:

Boto
Descrio

Adiciona um arquivo de unit ao projeto atual

Remove um arquivo de unit do projeto atual

Exibe um arquivo de unit do projeto atual

Exibe um form no projeto atual

Exibe o quadro de dilogo Project Options para:
* Alterar o form default, opes do compilador, aplicao, linker e diretrio
* Define smbolos condicionais

Grava as alteraes no projeto atual

Adicionando Units e Forms ao Projeto Utilizando o Project Manager
Um projeto default inicialmente contm um form e um arquivo de unit de cdigo fonte. Entretanto, a maioria dos projetos contm mltiplos forms e units.
Voc pode dar um clique com o boto direito do mouse e selecione New Form no SpeedMenu para adicionar units e forms ao seu projeto. Voc tambm pode adicionar forms
e units existentes ao seu projeto utilizando o boto Add na SpeedBar do Project Manager e selecionar o form ou unit a ser adicionado.
Removendo Units e Forms de um Projeto Utilizando Project Manager
Durante o desenvolvimento de um projeto, voc pode achar necessrio remover forms e units de seu projeto. Voc pode faz-lo a qualquer momento durante o desenvolvimento.
Entretanto, como um form est sempre associado a uma unit, voc no pode remove um sem remover o outro a menos que a unit no possua nenhum form associado a ele.
Voc pode remover units de um projeto utilizando o boto Remove no Project  Manager.

Remover arquivos utilizando qualquer outro  programa gerenciador de projeto ou digitando comandos no prompt do DOS no  recomendado. Estas aes no removem as
entradas da clusula Uses dos arquivos .DPR ou da janela do Project Manager e causar erros quando voc compilar o programa.
Definindo Opes de Projeto
O quadro de dialogo Project Options permite definir  diversas opes que afetam seus projetos. Para acessar o quadro de dialogo Project Options, de um clique sobre
o boto Options no Project Manager. O quadro Project Options aparecera, como segue:

Descrio das Pginas do Project Options
A tabela a seguir descreve cada uma das pginas no quadro de dialogo Project Options e algumas das opes mais importantes em cada pgina:

Pgina
Descriao
Forms
Especifica o form principal de sua aplicao, os forms que devem ser criados  automaticamente, e a ordem destes forms.
Application
Especifica um ttulo, arquivo de help, e um cone  para sua aplicao.
Compiler
Permite definir opes para a forma como seu programa ser compilado. Estas opes correspondem a definir diretivas a seu estado positivo (+) no cdigo de seu programa.
Linker
Permite especificar a forma como seus arquivos de programa sero linkados.
Directories / Conditionals
Especifica a localizao dos arquivos que o Delphi  necessita para compilar, linkar e distribuir seu programa.
Utilizando Integrated Debugger
Introduo
O Delphi possui um depurador totalmente integrado que permite depurar uma aplicao sem deixar o ambiente visual de desenvolvimento. Ele oferece a capacidade de
:
* Gerar informaes a depurao de dentro de seu executvel
* Habilitar e desabilitar a depurao integrada de dentro do IDE
* Definir breakpoints
* Visualizar o contedo das variveis do programa
* Modificar valores de dados durante a execuo do programa
* Visualizar o call stack
Gerando Informao de Depurao
O Delphi gera informao simblica de depurao quando voc compila   seu programa com a ao de depurao habilitada. As opes de depurao encontram-se na pgina
compiler do quadro de dialogo Project Options.
A pgina Compiler e opes de depurao para uma aplicao tpica aparece como segue:

Descrio das Opes do Depurador na Pgina Compiler
A tabela a seguir descreve as opes de depurao na  pgina Compiler do quadro de dialogo Project Options:

Opo
Descrio
Debug Information
Insere informao de depurao no arquivo UNIT.DCU.  Informao de depurao consiste de uma tabela com linhas numeradas para cada procedure que mapeia endereos
de cdigo de objetos nos nmeros.
Local Symbols
Gera local symbols information. Local symbols information consiste de :
* Os identificadores na implementation part ( e no na interface part ) do mdulo
* Os identificadores dentro das procedures e funes   do mdulo.
Local symbols information no inclui variveis globais ou nomes declarados na interface section de uma unit.
Symbol Info
Gera symbol information. Symbol reference information consiste de tabelas que fornecem os nmeros de  linhas de todas as declaraes e referncias aos smbolos em
mdulo.
Habilitando o Intergrated Debugger
A depurao integrada est habilitada aps a instalao do Delphi.  uma opo de ambiente da pgina Preferences que voc pode definir. A pgina Preferences do quadro
de dialogo Environment Options aparece como segue:

Descrio das Opes de Depurao na Pgina Preferences
A tabela descreve as opes de depurao na pgina Preferences do quadro de dialogo Environment Options:

Opo
Descrio
Intergrated Debugging
Quando habilitada, a depurao integrada est em efeito.
Step Program Block
Quando habilitada, o depurador passa pelos blocos  de programa.
Hide Designer on run
Quando habilitada, a interface de design  oculta enquanto a aplicao estiver sendo executada.
Break on exception
Quando habilitada, a aplicao para quando ocorrer uma exception e a linha de cdigo causadora  exibida  no Code Editor.
Minimize on run
Quando habilitada, o Delphi  minimizado sempre que  voc executar uma aplicao dentro do IDE.
Controlando a Execuo do Programa
Uma caracterstica importante do depurador  que ele permite selecionar como o programa ser executado, uma declarao por vez.  Uma linha de cdigo por vez, uma
funo inteira por vez, e assim por diante. O depurador permite controlar a execuo de seu  programa das opes no menu Run. O menu Run, como segue:

Descrio do Menu Run
A tabela a seguir fornece uma declarao das opes  disponveis no menu Run.

Opo
Descrio
Run
Permite compilar e executar suas aplicaes.
Parameters
Permite especificar os parmetros de inicializao para sua aplicao
Step Over
Permite executar seu programa  uma linha por vez, pulando procedures, executando-as como uma nica unit.
Trace Into
Permite executar seu programa uma linha por vez, rastreando a procedure e seguindo a execuo de cada linha.
Run to Cursor
Permite executar o programa at a localizao do cursor no Code Editor
Program Pause
Permite interromper temporariamente a execuo de um programa
Program Reset
Permite terminar o programa sendo executado e remove- lo da memria
Add Watch
Abre o quadro de dialogo Watch Properties, permitindo criar e modificar observaes
Add Breakpoint

Abre o quadro de dialogo Edit Breakpoint, permitindo criar e modificar pontos de interrupo
Evaluate/Modify

Abre o quadro de dialogo Evaluate/Modify,permitindo avaliar ou alterar o valor de uma expresso existente
Definindo Pontos de Interrupo
Voc pode definir pontos de interrupo onde quiser que a execuo seja interrompida. Pontos de interrupo so particularmente teis quando utilizados em conjunto
com Watches. Seu programa  executado na velocidade normal ate atingir o ponto de interrupo. Atingindo o ponto, o depurador exibe o Code Editor com a linha contendo
o ponto de interrupo, permitindo modificar o cdigo ou exibir o valor de variveis utilizando a janela de observao.
Para definir um ponto de interrupo, voc pode:

* Dar um duplo-clique a esquerda da linha do cdigo fonte onde quiser definir um ponto de interrupo.
* Selecionar Toggle Breakpoint utilizando o Speedmenu Code Editor.

Pontos de Interrupo no Code Editor
Quando definir um ponto de interrupo, a linha de cdigo correspondente ao ponto  realada e um cone de sinal de parada aparece na margem esquerda como mostrado
na figura a seguir:

Voc tambm pode utilizar a pgina Editor Colors do quadro de dialogo Environment Options para definir uma cor diferente, indicando pontos de execuo, linhas de
pontos de interrupo invlidos,  e a propriedade habilitado/desabilitado do ponto de interrupo.

Visualizando o Contedo de Variveis
A janela Watches monitora a alterao do valor das variveis ou expresses durante a execuo de seu programa. Conforme seu programa seja executado, quer esteja
pulando sobre o cdigo, o contedo da janela de observao  alterado conforme os valores das variveis contidas na expresso de observao.
Adicionando Expresses de Observao
Para iniciar uma expresso de observao, selecione  Add Watch no menu Run. O quadro de dialogo Watch Properties aparece, como segue:

Exibindo Expresses de Observao
A janela Watches exibe os valores atuais de expresses de observao e permite adicionar, editar, deletar, habilitar e desabilitar observaes. Para exibir a janela
Watch List, selecione Watches no menu View. A janela Watch List aparece.
Quadro de Dilogo Evaluate/Modify
No Delphi, voc pode alterar os valores de variveis e itens nas estruturas de dados durante a depurao. Para  avaliar ou alterar o valor de uma expresso existente,
utilize o quadro de dialogo Evaluate/Modify. Alteraes feitas no quadro de dialogo Evaluate/Modify no afetam o cdigo fonte ou o programa compilado. Para tornar
as alteraes permanentes, modifique seu cdigo fonte e recompile seu programa. O quadro de dialogo Evaluate/Modify aparece como segue:

Visualizando o Call Stack
Quando estiver depurando, voc pode achar til a ordem das chamadas de funes ativas. A janela Call exibe o fluxo atual das chamadas de funes.
Janela Call Stack
A janela Call Stack exibe chamadas de funes ativas. Cada funo aparece com uma lista de argumentos utilizadas na chamada. Voc tambm pode utilizar a janela Call
Stack para visualizar ou editar o cdigo-fonte associado com uma determinada chamada de funo. Para visualizar a janela Call Stack, voc pode selecionar View na
barra de menu, e depois Call Stack. A janela Call Stack aparece como segue:

Lab: Modificando a Aplicao de Exemplo
Objetivos
Este Lab refora sua habilidade em:
* Adicionar um componente ao form.
* Definir propriedades de um componente.
* Adicionar um event handler.
* Compilar um programa Delphi.

Cenrio
Neste captulo, voc aprendeu a criar uma aplicao em um projeto chamado PSAMPLE. Em PSAMPLE, voc adicionou  os componentes ListBox, Button e Edit ao Form. O Evento
OnClick do form adiciona itens  digitados no componente Edit a list box. Neste lab, voc vai melhorar esta aplicao, adicionando um boto Deletar e um Sair para
esta  aplicao.
Processo
Utilize as seguintes diretivas para modificar a  aplicao PSAMPLE:

Estgio
Processo
1
Abra a aplicao PSAMPLE criada neste captulo e adicione dois botes ao form.
2
Defina as propriedades para estes botes para que um boto (Button2) tenha o Caption Deleter
Item  e o  outro boto (Button3)  tenha o Caption Exit e o primeiro com Add Item.
3
Adicione um event handler para o evento OnClick do boto com o Caption Exit.
Utilize o mtodo Close do TForm para sair da aplicao.
A declarao para este evento segue abaixo:

Close;
4
Adicione um event handler para o OnClick do boto com o Caption Delete Item. O event handler completo segue abaixo:

Procedure TForm.Button2Click(Sender: TObject);
begin
   with ListBox1 do
   begin
     if ItemIndex<> -1 then
        Items.Delete(ItemIndex);
  end;
            end;
5
Inclua tambm no event OnClick do boto com Caption Add Item o cdigo abaixo:
   ListBox1.Items.Add( Edit1.Text );
6
Grave e execute a aplicao
7
Adicione quatro ou cinco itens  lista box
8
Delete itens da lista

Seu from deve estar similar a figura a seguir:

Processos Opcionais
O event handler para o evento OnClick do boto Deletar Item utiliza uma declarao de programao chamada de declarao with.
Utilize o sistema de help para determinar o que esta declarao faz. Revise o event handler Button2Click,  habilitando o mtodo para que voc possa deletar a declarao
with e as palavras-chave begin...end associadas.
Resumo do Captulo
Pontos chave
Aps completar este captulo, voc aprendeu:
* Que arquivos de projeto do Delphi controlam as aplicaes construindo vrios forms, executando as aplicaes e exibindo o form principal da aplicao.
* Que adicionar um form cria dois arquivos:
* Um  arquivo de form com extenso .DFM contendo informaes de resource do Windows e cdigo Object Pascal do Delphi para a construo do form.
*  Um arquivo de unit com extenso .PAS contendo cdigo Object Pascal.
* O Project Manager do Delphi lista os arquivos que compem sua aplicao e permite navegar pelos arquivos.
* Que o Delphi possui um depurador totalmente integrado que permite depurar aplicaes sem ter que deixar o ambiente de desenvolvimento visual.
Termos e definies
  A tabela a seguir  uma referncia rpida para os termos explicados neste captulo.

Termo
Descrio
Breakpoint

Uma marcao em seu programa que causa uma pausa na execuo durante o processo de depurao.
Event  handler

Uma procedure que diz ao componente para que execute determinadas declaraes do programa quando um  evento em especial  detectado.
Project File

Um aquivo que controla uma aplicao Delphi construindo vrios forms, executando a aplicao e exibindo o form principal da aplicao. O nome default  PROJECT1.DPR.
Watches

Expresses que permite monitorar o valor das  variveis ou expresses enquanto seu programa estiver  sendo executado.
