Capitulo 5
Utilizando Forms
 
Ao final deste captulo, voc estar apto a :
* Adicionar um form do template ao projeto
* Gravar um form como um template
* Definir a ordem de tab
* Adicionar um menu ao form

Utilizando Forms
Overview
No Delphi forms so pontos focais da aplicao que  voc est desenvolvendo.Um form em branco  bem  parecido com uma tela de pintura onde voc pode  adicionar componente,
desenvolvendo a interface de usurio. Este captulo cobre tpicos como a utilizao de templates de forms, quadros de dialogo e menus.

Utilizando um Template de Form

Introduo
Quando estiver construindo a interface de usurio de sua aplicao, voc pode acelerar o desenvolvimento atravs da seleo de diversos templates de forms fornecidos
com o Delphi. Um template  um form predefinido. Os templates includos com o Delphi fornecem um modelo para forms utilizados com maior freqncia, por exemplo,
um quadro de dialogo padro o um quadro Sobre que fornece informaes sobre  uma aplicao. Os templates de form disponveis so exibidos na Forms Gallery.

Adicionando um  Template de Form a um Projeto
Para utilizar os templates na Forms Gallery, habilite a opo Gallery no quadro de dialogo Environment Options. Para acessar este quadro, no menu Options,  selecione
Environment e depois a pgina Preferncia. Quando a opo Use on New Project estiver habilitada, o quadro de dialogo Forms Gallery aparece quando voc selecionar
New Form no menu File. O quadro de dialogo Forms Gallery aparece, como segue:

Passos para  Adicionar um Template a um Projeto
Para adicionar um template de form ao projeto,  primeiro voc deve ter um projeto aberto. Uma vez aberto o projeto, execute os passos a seguir para  adicionar um
template ao projeto:

Passo
Ao
1
No menu File, selecione   New Form. O quadro de dialogo Browse Gallery aparece.
2
Na pgina Template, selecione o template apropriado.
3
De um clique em OK.
Uma cpia do form e arquivos unit associados so  adicionados ao seu project.

Tutorial: Adicionando um Quadro Sobre...
Introduo
Neste Tutoria, voc utilizar a Forms Gallery para adicionar um template de form ao seu projeto. A                          Forms Gallery contm diversos templates
de form para os tipos mais comuns. Um template utilizado                          na maioria das aplicaes  o quadro Sobre... O quadro Sobre...  uma caracterstica
padro que os                          desenvolvedores adicionam a maioria dos programas Windows.

Estgios do  Tutorial
Este tutorial envolve os seguintes estgios:

Estgio
Processo
1
Adicione um form Sobre...utilizando o template About.
2
Modificar o design do form.
3
Exibir o form Sobre...

Os templates de form efetuam o primeiro estgio e  parte do segundo por voc.

Passos para o Estgio 1
Execute os passos a seguir para adicionar um quadro Sobre utilizando o template de form AboutBox.

Passo
Ao
1
Abra um novo projeto e grave o arquivo de unit como UABOUT.PAS  o arquivo de projeto como  PABOUT.DPR.
2
No menu File, selecione New Form.
O quadro de dialogo Browse Gallery aparece.
Se a Browse Gallery no aparecer, voc seleciona no menu Options, Environment. Localize a pgina Preference, e no grupo Gallery, habilite Use on New Form.
3
Selecione o template About Box na Gallery, e de clique  em OK.
Uma nova unit  um novo form so adicionados ao projeto.

Passos para o  Estgio 2
Execute os passos a seguir para modificar o  design do form AboutBox:

Passo

1
Utilize os valores a seguir para a propriedade  Caption dos componentes Label no Object Inspector.

Componente
Propriedade
Valor
ProductName
Caption
Exemplo de Quadro Sobre a Aplicao
Version
Caption
Verso 1.0
CopyRight
Caption
Copyright 1996
Comments
Caption
Tutorial de Quadro Sobre Aplicao

Passos para o Estgio 3
Para exibir o form, o primeiro passo  adicionar o identificador da unit do quadro Sobre...  clusula                          uses da unit que ir exibir o quadro.
Depois, utilize o mtodo ShowModal ou Show em um event                          handler para exibir o form.

Passo
Ao
1
Adicione o identificador da Unit, Unit2, a clusula uses da unit about, como mostrado na figura a seguir:

Passo
Ao
2
Adicione um boto ao form principal (Form1). Rotule este boto, como Sobre como na figura a seguir.

Passo
Ao
3
Crie um event handler para o evento OnClick do boto Sobre.
4
No event handler, digite a seguinte instruo:  AboutBox.ShowModal;  O event handler parecera com o seguinte:

Passo
Ao
3
Compile e grave sua aplicao
4
Execute e teste a aplicao
Gravando um Form como Template
Introduo
Voc pode gravar um form feito por voc como um template. Estes templates esto disponveis para                          serem utilizados em outros projetos. Gravar
um form como um template insere o form no quadro de dialogo  Browse Gallery. Para gravar um form como template, utilize o SpeedMenu do form e selecione Save As
template. De um nome, descrio e icone ao novo template.  Se voc quiser especificar um icone para o template,  voc pode selecionar um bitmap existente ou criar
um prprio.

Passos para  Gravar um Form como um Template
Execute os passos a seguir para gravar um form como um  template:

Passo
Ao
1
D um clique com o boto direito do mouse sobre o  form para acessar o SpeedMenu.
2
Selecione Save As Template.
O quadro de dialogo Save Form Template aparece, como segue:
3
No campo Title, digite um nome para o novo template.
4
No campo Description, digite uma descrio  significativa do template.
5
Para associar um icone ao template, de um clique no boto Browse.
6
Localize e selecione o bitmap para associa-lo ao template, e de um clique no OK.
7
No quadro de dialogo Save As Form Template, de um clique em OK para gravar a informao e saia.

Criando Quadros de Dialogo
Introduo
O Delphi permite criar um nmero ilimitado de quadros de dialogo, do mais simples ao mais complexo. Este tpico cobre a criao de quadros de dialogo simples, tais
como quadros de mensagem e de entrada de dados, bem como criar um quadro de dialogo com um form em branco.

Quadro de  Mensagem
Um quadro de mensagem  uma janela que exibe text.  Voc pode utiliz-la para:

* Exibir informao
* Exibir uma mensagem de erro ou aviso
* Solicitar a confirmao de uma ao

Por exemplo, se o usurio tentar a aplicao antes de grav-la, um quadro de mensagem deveria aparecer solicitando informando o usurio que os dados devem  ser gravados
antes de fechar. Para que a aplicao continue, o usurio deve remover o quadro de mensagem da tela  manualmente,  geralmente com o clique de um boto.
Para exibir um quadro de mensagem simples, utilize a  funo MessageDlg. O exemplo a seguir mostra a                          sintaxe da funo:

Function MessageDlg (const Msg: String; AType: TMsgDlgType;
  AButtons: TMsgDlgButtons; HelpCtx: LongInt ): Word;

Explicao dos  Parmetros de MesageDlg
A tabela a seguir explica os parmetros utilizados na sintaxe da funo MessageDlg:

Parmetro
Explicao
Msg
A mensagem que voc quer exibir (uma constante string)
AType
Determina o tipo de quadro de mensagem que ira aparecer. Os valores possveis so:
* mtWarning
Exibe um quadro de mensagem com um ponto de exclamao em amarelo(!)
* mtError
Exibe um quadro de mensagem com uma no vermelha
* mtInformation
Exibe um quadro de mensagem com um smbolo de informao em azul (i)
* mtConfirmation
Exibe um quadro de dialogo com um ponto de  interrogao em verde (?)
AButtons
Determina quais botes aparecero no quadro de  mensagem. AButtons  do tipo TMsgDlgBtns que  um tipo set. Voc pode  incluir diversos botes dentro do set. O set
pode incluir os seguintes valores:
* mbYes
Exibe um boto com um check mark em verde e o caption Yes
* mbNo
Exibe um boto com um circulo e uma barra por dentro, em vermelho  e o caption No
* mbOK
Exibe um boto com um check mark em verde e o caption OK
* mbCancel
Exibe um boto com um X em vermelho e o caption Cancel
* mbHelp
Exibe um boto com um ponto de interrogao e o  caption Help
* mbYesNoCancel
Exibe um conjunto que inclui os botes Yes,No, Cancel
* mbOKCancel
Exibe um conjunto que inclui os botes OK e Cancel
HelpCtx
Determina qual tela de Help est disponvel para  o quadro de mensagem. Um nmero de contexto para um Help sensvel ao contexto.

Valores de  Retorno  de MessageDlg
Os valores de retorno para a funo MessageDlg indicam o tipo de botes clicados pelo usurio.  O valor de retorno pode ser um dos seguintes:
* mrNone
* mrOK
* mrCancel
* mrAbort
* mrRetry
* mrIgnore
* mrYes
* mrNo
* mrAll
Exemplos de Cdigo Utilizando MessageDlg
O cdigo de exemplo a seguir ilustra o uso da funo  MessageDlg:
Res := MessageDlg( ' Sair da Aplicao ??' , mtConfirmation, [ mbOk, mbCancel ], 0 );
If Res = mbOk Then
    Close;
Quadros Simples  de Entrada de Dados
Um quadro simples de entrada de dados requer uma linha de informao do usurio. Um exemplo de um destes quadros  um que solicite uma senha.  Para exibir um quadro
de entrada de dados, utilize as funes InputBox ou InputQuery. A sintaxe para cada funo aparece, como segue:
function InputBox(const ACaption, APrompt,ADfault: string): string;
function InputQuery(const Acaption, Aprompt: string; var Value: string): Boolean;
Explicao dos  Parmetros de InputBox e InputQuery
A tabela a seguir explica os parmetros das funes InputBox e InputQuery:

Parmetros
Explicao
ACaption
Determina o caption do quadro de dilogo
APrompt
Deternima o texto de solicitao ao usurio
ADefault
Determina a string exibida quando o quadro aparecer
Value
Determina a string exibida quando o quadro aparecer,  contm a string digitada pelo usurio quando OK for clicado. Utilizado por InputQuery.

Valores de Retorno  de InputBox
A funo InputBox exibe um quadro de entrada e aguarda que o usurio digite um valor. O valor de retorno de InputBox  uma string.  Utilize a funo InputBox quando
no importa se o usurio escolher entre o boto OK ou Cancelar para deixar o quadro de dialogo.  A funo InputQuery exibe um quadro de entrada e  aguarda que o
usurio digite um valor. InputQuery retorna True se o usurio escolher OK e False se  escolher Cancelar.

Forms MDI e SDI
Uma aplicao Multiple Document Interface (MDI)   uma aplicao com uma interface de janela principal, ou  janela pai, que permite a abertura de diversos documentos,
ou janelas filhas.
Uma aplicao Single Document Interface (SDI) pode processar mais de um documento dentro de uma janela pai.
Voc pode implementar qualquer um de seus forms como MDI ou SDI. Embora voc possa criar um form MDI ou SDI alterando a propriedade FormStyle de um form existente,
 mais provvel que voc crie um form MDI ou SDI utilizando  a Gallery.
Propriedades dos  Quadros de Dilogo
Quando voc cria um form no Delphi, ele possui as seguintes caractersticas:
* Botes de Maximizar e Minimizar
* Menu de Controle
* Borda de Reajuste

Estas caractersticas so teis para quadros de dialogo no-modais, mas desnecessrias para quadros                           modais. Um quadro de dialogo no-modal
 um quadro  de onde o usurio pode remover o foco sem fecha-lo.                           Um quadro de dialogo modal requer que o usurio feche o quadro antes de
continuar o trabalho na                           aplicao. Voc pode definir a propriedade BorderStyle para bsDialog. Esta definio possui as seguintes
caractersticas:
* Remover os botes de Maximizar e Minimizar
* Fornecer um menu Controle com as opes Mover e  Fechar
* Tornar a borda do form no-reajustavel com aparncia tridimensiaonal

Adicionando  Botes de Comando
Se seu quadro de dilogo ser utilizado em estado  modal, voc deve oferecer botes de comando dentro do quadro. Por exemplo, voc deve oferecer um boto Sair que
permite que o usurio saia do quadro de dialogo. Os botes de comando mais comuns incluem os seguintes:
* Um boto Cancelar ou No que saia do quadro de dialogo sem gravar as alteraes
* Um boto OK ou Sim que grave as alteraes e  depois saia do quadro de dialogo
* Um boto que tenha o foco por default para que o usurio possa pressionar a tecla Enter para aceitar o boto default

Voc pode utilizar o componente BitBtn da pgina  Additional para criar vrios destes botes de comando. O componente BitBtn permite que voc utilize os bitmaps
padres da Borland, tais como um check  mark em verde () para um boto OK. Voc pode selecionar o bitmap e caption padro que aparecem no boto definindo a propriedade
Kind.

Definindo a Ordem  de Tab
Em uma aplicao sendo executada, a ordem de Tab   a seqencia no qual o usurio pode mover-se entre os componentes pressionando a tecla Tab. Para  permitir que
os usurios utilizem a tecla Tab para mover-se pelos componentes, voc deve definir a propriedade TabStop de cada componente para True. Por default, a ordem de Tab
 definida de acordo  com a ordem na qual voc inseriu os componentes no form. Voc pode alterar a ordem de Tab default alterando a propriedade TabOrder do componente
no Object Inspector ou utilizar o quadro de dialogo  Edit Tab Order.

Passos para  Definir a Ordem de Tab
Execute os passos a seguir para definir a ordem de Tab utilizando o quadro de dialogo Tab Order:

Passo
Ao
1
Selecione o form contendo os componentes cuja ordem de tab voc queira definir.
2
No menu Edit, selecione Tab Order.
O quadro de dialogo Edit Tab Order aparece, listando os componentes na ordem atual, como no exemplo a  seguir:
3
No campo Controls listed in tab order, selecione o controle (componente).
4
Utilize os botes com as setas para cima e para baixo para reordenar a ordem dos componentes.
Voc tambm pode arrastar os componentes.
5
Quando tiver terminado, de um clique em OK.

Definindo o Foco em Quadro de Dilogo Durante o Design
Em um quadro de dialogo, somente um componente por vez pode ter o foco. O foco pode ser definido durante o design ou durante a execuo. Durante o design, voc pode
definir a propriedade ActiveControl do quadro de dialogo abrir. Se voc no  especificar a propriedade ActiveControl, o primeiro componente da ordem de Tab receber
o foco. Entretanto, isto no se aplica nas seguintes situaes:
* O componente est desabilitado
* O componente no  visvel durante a execuo
* A propriedade TabStop do componente est definida para False.

Definindo o Foco  em um Quadro de Dilogo Durante a Execuo
Durante a execuo, o usurio pode alterar o foco dos  componentes automaticamente, utilizando a tecla Tab. Entretanto, voc pode querer especificar que o foco seja
alterado de campo para campo utilizando as teclas de seta. Voc pode utilizar o mtodo SetFocus  para especificar quais componentes recebem o foco. Para alterar
o componente ativo durante a execuo, digite o seguinte cdigo no event handler apropriado:

  <componente>.SetFocus;

Por exemplo, a instruo a seguir especifica que Button2  o componente ativo durante a execuo:

    Button2.SetFocus;

Criando Menus
Introduo
Em uma aplicao, os menus oferecem uma maneira dos usurios executarem comandos. O Delphi fornece dois tipos de componentes menu: MainMenu e PopupMenu. Durante
o processo de especificao de um menu, voc utiliza um recurso dos componentes TMainMenu e TPopupMenu chamado Menu Designer. O Menu Designer permite criar um menu
ou adicionar um menu j pronto ao seu form. Voc tambm pode utilizar o Menu Designer para deletar, editar ou reordenar itens do menu.
Quando utilizar o Menu Designer para criar um menu, voc pode visualizar seu menu como ele aparecera na
execuo sem ter que realmente execut-la.

Adicionando  um Menu
Para adicionar um menu a um form, utilize o Menu Designer. O Menu Designer permite definir um menu ou adicionar um menu personalizado ao seu form.

Passos para  Adicionar um Menu
Execute os passos a seguir para adicionar um menu ao seu form durante o design:

Passo
Ao
1
Na pgina Standard da Component Palette, de um duplo-Clique no componente MainMenu ou PopupMenu. O componente  adicionado ao seu form.
2
D um duplo-clique no componente menu para abrir o Menu Designer. O Menu Designer e o Object Inspector aparecem, como segue. A propriedade Name no Object Inspector
e  selecionada.

Passo
Ao
3
Digite o texto para o primeiro item da barra de menus na propriedade Caption do Object Inspector.
4
Pressione Enter.
O primeiro item da barra de menu aparece na barra do form.
5
Para adicionar itens ao menu, digite o primeiro item na propriedade Caption.
6
Pressione Enter .
O nome do item de menu aparece endentado abaixo do  item da barra de menus.
7
Repita os passos 5 e 6 ate que voc tenha adicionado  todos os itens de menu que voc queira para seu primeiro menu.
8
Para inserir o prximo item da barra de menus, de um clique na barra de menus e repita os passos 3 e 4.
9
Adicione qualquer item ao segundo menu repetindo os passos 5 e 6.

Adicionando  Barras Separadoras

Adicionar uma barra separadora insere uma linha entre itens de menu ou grupos de itens. Voc pode utilizar arras separadoras para agrupar os itens logicamente ou
criar uma quebra visual na lista de itens. Para criar uma barra separadora, digite um hifen (-) como  propriedade Caption para este item. Barras separadoras aparecem
como segue:

Habilitando Acesso  aos Menus pelo Teclado
Voc pode permitir que os usurios acessem menus e comandos de menu atravs do teclado, como segue:
* Teclas de atalho
* Teclas aceleradora
 A figura anterior tambm mostra um exemplo de um menu com teclas aceleradoras e teclas de atalho.
Adicionando  Teclas Aceleradoras
Teclas aceleradoras permitem que o usurio acesse  menus e comandos do menu utilizando a tecla Alt juntamente com a letra apropriada. Por exemplo, para acessar o
menu File, o usurio pressionaria Alt+F. Voc pode adicionar teclas aceleradoras ao seu menu  precedendo a letra selecionada com o smbolo &,  quando estiver digitando
o caption do item. Por exemplo, para adicionar um menu Arquivo com a letra A como tecla aceleradora, digite &Arquivo como caption do item de menu.

Adicionando Teclas de Atalho
Teclas de atalho permitem que o usurio acesse  comandos do menu utilizando o teclado para ignorar os menus. Por exemplo, voc pode designar F1 como  tecla para
o comando Help. Voc pode especificar atalhos digitando um valor na propriedade ShortCut  ou selecionando na lista da propriedade ShortCut.

O Delphi no faz a checagem para assegurar que teclas aceleradoras ou atalhos no esto duplicados em sua aplicao. Isto  responsabilidade do  desenvolvedor.

Propriedades Adicionais de Menu
Voc pode definir as seguintes propriedades de menu para alterar a aparncia dos menus em sua aplicao.
* Checked
Definindo esta propriedade para True, um check aparece prximo ao item.
* Enabled
Definindo esta propriedade para False, o item torna-se desabilitado, ou acinzentado, e o usurio                            no poder acessa-lo ou a qualquer um
de seus submenus.

Criando Menus  Aninhados
Muitos menus contm menus aninhados, ou submenus, que  fornecem ao usurio comandos adicionais para serem selecionados. Menus aninhados so indicados por uma seta
prxima ao item na lista de itens. Voc pode querer utilizar menus aninhados para economizar espao  vertical em sua aplicao. No Delphi, voc pode criar tantos
menus aninhados quantos forem necessrios.

Utilizando   o SpeeMenu do Menu Designer
O SpeedMenu do Menu Designer oferece acesso rpido aos comandos mais utilizados e opes de template de menu. Voc pode exibir o SpeedMenu dando um clique com o
boto direito do mouse na janela do Menu Designer ou pressionando Alt+F10 enquanto o cursor estiver na janela do Menu Designer. O SpeedMenu aparece, como segue:

Descrio das  Opes do SpeedMenu
A tabela a seguir descreve as opes no SpeedMenu do Menu Designer:

Opo
Descrio
Insert
Adiciona uma localizao de item de menu antes do cursor
Delete
Remove o item de menu selecionado
Create Menu
Insere um item de menu a direita do item selecionado, adiciona uma ponta de seta para indicar um nvel de alinhamento de menu
Select Menu
Permite selecionar um menu existente
Save As Template
Permite gravar um menu para utilizao posterior
Insert From Template
Permite adicionar um template de menu previamente criado ao menu atual
Delete Template
Permite remover menus criados previamente
Insert From Resource
Permite importar um menu de um arquivo de resource  (.RC) do Windows
Associando Eventos de Menu com Cdigo
Introduo
Uma vez criado um menu, voc precisa associar ao evento OnClick de cada item.
Manipulando  Eventos de itens de Menu
O evento OnClick  o nico evento para itens de menu. O cdigo associado com o evento OnClick dos itens  dos menus sero executados quando o usurio selecionar o
item.
Voc pode criar um event handler para qualquer item  de menu dando um duplo-clique no item, na janela do Menu Designer e adicionando o cdigo dentro da instruo
begin...end.

Associando um  Item de Menu a um Manipulador de Manu Existente
Se voc quiser reutilizar cdigo, voc pode associar um item de menu com um event handler j existente. Para isto, v para a pgina Events do Object Inspector e
abra a lista dos event handlers para o evento OnClick. Voc pode selecionar qualquer um dos event handlers que aparecem na lista, e o cdigo para aquele event handler
estar associado com o item de menu selecionado.

Lab: Adicionando um Template de Form a sua Aplicao

Objetivo:
Este lab refora sua habilidade em:
* Utilizar um Template de Form para adicionar um form
* Digitar cdigo para exibir um form
* atribuir teclas de atalho aos menus

Cenrio
Neste lab voc utilizar a aplicao desenvolvida no  lab Adicionando Componentes Standard a uma Aplicao para adicionar um quadro de dialogo Sobre... utilizando
um template de form.

Processo
Utilize o processo a seguir para aplicar o que  voc aprendeu:

Estgio
Processo
1
Abra o projeto chamado PLAB5.DPR. Grave o arquivo  unit como ULAB8.PAS e o projeto como PLAB8.DPR.
Importante: Certifique-se de utilizar o comando  Save File As, bem como Save Project As no menu File.
2
Abra o Menu Designer para MainMenu1. Adicione um separador e a palavra Sobre no final do menu File.
3
Utilize um template de form para adicionar um quadro Sobre a aplicao. Certifique-se de gravar este form com o nome UNIT2.PAS.
4
Adicione uma tecla de atalho ao menu para que o usurio possa pressionar F2 para exibir o quadro Sobre.
5
Adicione aceleradores para os itens Abrir e Gravar.
6
Adicione um event handler que exiba o from AboutBox.
7
Aps compilar sua aplicao, grave-a. Execute e teste  sua aplicao.
Resumo do captulo
Pontos Chave
Aps  completar este captulo,voc aprendeu que:
* Templates fornecem uma "planta" para os forms  mais utilizados, e eles compem a Form Gallery.
* Voc pode gravar uma cpia de um form por voc como um template para ser utilizado posteriomente em outro projeto. Gravar um form como um template  insere o form
na lista de templates que voc pode selecionar quando cria um novo form.
* Quando voc cria um form, ele possui as seguintes caractersticas:
 Botes de Maximizar e Minimizar
 Menu Controle
 Borda Reajustvel
* Ordem de Tab  a seqencia na qual o usurio pode  se mover de componente  a componente pressionando a tecla Tab.
* Menus fornecem uma maneira de agrupar comandos. Voc pode utilizar o Menu Designer para criar ou adicionar um menu predeterminado ao form.
Termos e  Definies
A tabela a seguir  uma referncia rpida aos termos explicados neste captulo:

Termo
Definio
MDI
Multiple Document Interface, uma aplicao feita de uma janela principal, ou janela pai, que permite abrir diversos documentos ou janelas
Ordem de Tab
A seqencia na qual um usurio pode se mover de  componente a componente pressionando a tecla Tab
Quadro de DilogoModal
Um quadro de dialogo onde o usurio deve fechar antes de continuar a utilizar a aplicao
Quadro de Dilogo No-Modal
Um quadro de dialogo que o usurio pode manter aberto enquanto continua a trabalhar na aplicao
SDI
Single Document Interface, uma aplicao que pode  processar mais que um documento. Mas os documentos esto contidos de uma janela pai.

Introduo ao Delphi

InforBRs - Informtica Brasileira Ltda.
