7/28/2019 Apostila Delphi Radstudio 2007
1/113
MINISTRIO DA EDUCAO
SECRETARIA DE EDUCAO MDIA E TECNOLGICA
Instituto Federal de Educao, Cincia e Tecnologia do Amazonas
DIRETORIA DE ENSINO
GERNCIA EDUCACIONAL DA REA DE SERVIOS
Curso Tcnico em Informtica SINF32
Prof. Manoel Pantoja A. Jr.
Apostila de Delphi
1. IDE
O ambiente de desenvolvimento composto de vrias partes compondo um
conjunto integrado de janelas que interagem entre si.
Figura 1 Tela do Ambiente de Desenvolvimento Delphi 2007
1.1 FORM DESIGN
O Form representa as janelas do Windows que compem a aplicao. O form
responsvel pela interao entre usurio e mquina, alm de servir de base para os
demais componentes.
O form tem caractersticas de uma janela comum do windows, botes (Maximizar,
Minimizar, fechar e controle) e cones que podem ser modificados para umaaplicao.
7/28/2019 Apostila Delphi Radstudio 2007
2/113
6
Figura 1.1 Tela do Formulrio
1.2 BARRA DE MENU PRINCIPAL
A barra de menu principal, contm todos os menus da aplicao.
Figura 2 Barra de Menu Principal
1.3 PALETA DE COMPONENTES
Todos os componentes que podem ser utilizados no Delphi2007 encontram-se na
janela Tool Palette localizado ao lado direito da tela.
Figura 3 Tool Palette
7/28/2019 Apostila Delphi Radstudio 2007
3/113
7
Para que os componentes disponveis na tool palette sejam inseridos no form,
podemos proceder das seguintes formas:
Clicando duas vezes sobre o componente deseja;
Clicar uma vez sobre o componente e em seguida clicar no form;
Clicando sobre o compoente e arrast-lo at o form;
1.4 OBJECT INSPECTOR
uma das janelas mais importantes do Delphi2007, pois nela podemos definir as
caractersticas dos componentes utilizados na aplicao.
Nela encontramos 2 (duas) guias:
Properties responsvel pelas informaes a respeito das propriedades de cada
componente selecionado.
Events Define quais os eventos que um determinado componente pode realizar e
que sero definidos pelo desenvolvedor.
Temos ainda uma caixa de combinao, onde podemos selecionar um componente
de forma mais rapidamente.
Figura 4 Object InspectorPor exemplo, ao selecionarmos o componente Form, temos algumas propriedades:
Caption permite a insero de um rtulo de dados no componente;
7/28/2019 Apostila Delphi Radstudio 2007
4/113
8
Align Permite a definio do alinhamento;
Font Permite a definio de uma fonte padro para o form.
Icon Define o cone que ser apresentado no form.
Perceba que ao lado esquerdo da propriedade Font existe um sinal de +, isto
significa que toda e qualquer propriedade que possua este smbolo tem a
caracterstica de mostrar subpropriedades.
J a propriedade Icon possui ao seu lado direito o smbolo ( ), isto significa que
todo e qualquer propriedade que possua este smbolo abrir um caixa de dilogo ao
ser acionado.
1.5 CODE EDITOR
o responsvel por toda parte de programao do Delphi2007, tais como:
declaraes de variveis, definio de objetos, bibliotecas, etc. Todas as
implementaes realizadas pelo desenvolvedor no Delphi2007, ser feito do Code
Editor.
Figura 5 Code EditorUma caracterstica muito interessante no Code Editor que ao inserirmos um
componente no form, o mesmo declarado automaticamente no editor de cdigo.
7/28/2019 Apostila Delphi Radstudio 2007
5/113
9
Figura 6 Tela de Formulrio Figura 7 Tela do Code Editor
1.6 CODE INSIGHT
Um recurso que vai facilitar nossa vida no momento de desenvolvimento de cdigo
o Code Insight do Code Editor.
Ele atua como um ajudante de complemento junto ao cdigo do desenvolvedor. Por
exemplo, ao digitar o nome de um objeto seguido de ponto (.) abre-se uma listagem
de mtodos e propriedades que podem ser utilizadas neste objeto.
Figura 8 Code Insight
1.7 CONFIGURAES DE AMBIENTE
Voc pode personalizar o ambiente atravs do menu Tools | Options | EnvironmentOptions, algumas opes podemos julgar importantes:
7/28/2019 Apostila Delphi Radstudio 2007
6/113
10
1.7.1 Autosave Options
Editor files Grava os arquivos fonte (.PAS) no momento da compilao, evitando
perda de cdigo em caso de travamento da mquina. Porm, no permite compilar
um determinado projeto sem salva-lo antes.
Project Desktop - Grava a posio das janelas do projeto atual.
1.7.2 Compiling and Running
Show Compiler ProgressMostra o progresso da compilao do projeto;
Minimize on runMinimiza o codegear durante a execuo do projeto;
2. TECLAS IMPORTANTES
Tec la Fu no
F12 Alterna entre o code editore o form designer.F11 Alterna entre o code editor, form designere a object inspector.
F10 Torna o foco para a janelaprincipal.
F9(RUN) Permite compilare executaro projeto para testes. Este processo geraautomaticamente o arquivo .EXE no diretrio onde foi gravado o arquivo de projeto(.DPR).
CTRL + F9 Permite compilaro projeto sem executar. Ideal para conferncia de cdigo.
SHIFT + F12Permite alternar entre os formulrios do projeto.Equivalente ao cone View Form na SpeedBar.
CTRL + F2Permite destravar o Delphi em caso de testes onde ocorram excees, comoveremos mais adiante.
3. PROJETOS NO 2007
Um projeto nada mais do que um conjunto de arquivos necessrios para gerar
uma aplicao.
Vamos destacar alguns arquivos:
7/28/2019 Apostila Delphi Radstudio 2007
7/113
11
Ex tenso Tipo e descrio Cr iao Nec es sri o paracompi lar?
.PAS
Arquivo Pascal: o cdigo-fonte deuma unidade Pascal, ou umaunidade relacionada a umformulrio ou uma unidade
independente.
Desenvolvimento Sim.
.DPROJArquivo Delphi Project. (Contmcdigo-fonte em Pascal.)
Desenvolvimento Sim.
.DFM
Delphi Form File: um arquivobinrio (na verso 5 pode serconvertido para texto) com adescrio das propriedades de umformulrio e dos componentes queele contm.
Desenvolvimento Sim. Todo formulrio armazenado em umarquivo PAS e em umarquivo DFM.
.DCU
Delphi Compiled Unit: o resultadoda compilao de um arquivoPascal.
Compilao Apenas se o cdigo-fonte no estiverdisponvel. Os arquivosDCU para as unidades
que voc escreve soum passointermedirio; portanto,eles tornam acompilao maisrpida.
.BMP, .ICO,
.CUR
Arquivos de bitmap, cone ecursor: arquivos padro doWindows usados para armazenarimagens de bitmap.
Desenvolvimento:Image Editor
Normalmente no, maseles podem sernecessrios em tempode execuo e paraedio adicional.
.CFG
Arquivo de configurao comopes de projeto. Semelhante
aos arquivos DOF.
Desenvolvimento Necessrio apenas seopes de compilao
especiais foramconfiguradas.
.DOF
Delphi Option File: um arquivo detexto com as configuraes atuaispara as opes de projeto.
Desenvolvimento Exigido apenas seopes de compilaoespeciais foramconfiguradas.
.DSK
Arquivo de Desktop: contminformaes sobre a posio dasjanelas do Delphi, os arquivosabertos no editor e outros ajustesda rea de trabalho.
Desenvolvimento No. Voc deve exclu-lo se copiar o projetoem um novo diretrio.
.EXE
Arquivo executvel: o aplicativoWindows que voc produziu.
Compilao:Ligao (linking)
No. Esse o arquivoque voc vai distribuir.Ele inclui todas asunidades compiladas,formulrios e recursos.
.~PAS
Backup do arquivo PascalPode ser ativado ou desativadoatravs do Menu Tools Options Editor Options - Item: Createbackup file.
Desenvolvimento No. Esse arquivo geradoautomaticamente peloDelphi, quando vocsalva uma nova versodo cdigo-fonte.
3.1 SALVAR PROJETO
Para salvar um projeto no delphi 2007, voc tem 4 opes :
7/28/2019 Apostila Delphi Radstudio 2007
8/113
12
Comando Objet ivo
Save Salvar apenas a unidade selecionada
Save As...Salvar a unidade selecionada como... pode-se renomear ou trocar de pasta(duplicando) o arquivo.
Save Project As...Salvar o projeto como pode-se renomear ou trocar de pasta (duplicando) oarquivo.
Save All Grava todos os arquivos do projeto, e atualiza-os caso j sejam salvos.
Caso seja a primeira vez que o projeto ser salvo, aparecer a janela padro do
Windows, onde deve ser preenchido o nome do arquivo e o local onde o mesmo
ser salvo.
3.2 ABRIR O PROJETO
Todo projeto identificado por um arquivo com extenso .DPROJ, desta forma para
abrir um projeto no codegear, basta ir no menu File e escolher uma das 3 (trs)
opes Open; Open Project; Reopen.
Comando Objet ivo
Open Permite abrir um arquivo .DPROJ, .PAS entre grupos de projeto.Open Project... Permite abrir um arquivo de projeto.Reopen Permite reabrir um arquivo (DPROJ ou PAS) utilizado anteriormente.
3.3 OPES DE PROJETO
possvel configurar vrios itens do sistema atravs do Projects | Options:
Figura 9 Tela de Opes do Projeto
7/28/2019 Apostila Delphi Radstudio 2007
9/113
13
Forms :
Main form Permite a escolha do formulrio principal da aplicao;
Available forms Os formulrios available (disponveis) em caso de criao
em tempo de execuo.
Application:
Title Define um nome para a aplicao diferente do nome do arquivo .DPR;
Help File Define o nome do arquivo de Help associado aplicao;
Icon Define o cone utilizado no arquivo executvel;
Compiler
Estas opes permitem especificar uma compilao personalizada, ou seja,
cada projeto pode ser compilado com uma caracterstica.
Linker
Estas opes incluem informaes para a depurao.
Directories/Conditionals
Nesta guia pode-se configurar o diretrio de sada para os arquivos gerados
pela aplicao.
Version Info
Estas informaes podem ser visualizadas no Windows atravs do menu
rpido do mouse no arquivo executvel.
Packages
Os packages permitem um controle de distribuio atravs de DLLs bsicas
externas ao executvel entre outros recursos.
4 CONVENO DE NOMEAO
Para qualquer componente existente no projeto a principal propriedade a name,
pois ela define o nome da varivel que ser utilizado no cdigo escrito em Object
Pascal Grande parte dos desenvolvedores adota uma conveno para
facilitar/organizar o desenvolvimento/manuteno de sistemas. O Delphi 2007 adota
7/28/2019 Apostila Delphi Radstudio 2007
10/113
14
como padro o nome da classe da qual o componente instanciado e um nmero
crescente de acordo com o nmero de vez que aquele componente utilizado no
form. Exemplo: Button1; Button2, Label1, etc.
5 MANIPULANDO COMPONENTES
Vimos anteriormente que existem 3 formas de adicionarmos um componente no
objeto form. Uma vez que os objetos estejam adicionados podemos manipul-los de
diversas formas.
Para selecionar um objeto, basta apenas clicar sobre o mesmo ou ir janela do
object inspector e selecionarmos o componente desejado na caixa de dilogo. Para
selecionarmos um conjunto de objetos, basta pressionarmos a tecla SHIFT e clicar
nos objetos desejados.
Estando o(s) objeto(s) selecionado(s), para posicion-los no local desejado, basta
arrastar com o mouse ou utiilizar as teclas de combinao CTRL + SETAS. Para
redimension-los, utilize a combinao SHIFT + SETAS.
Figura 10 Selecionando Vrios Objetos
6 MANIPULANDO EVENTOS
A guia Events do object Inspector permite ao desenvolvedor criar um manipulador de
evento, onde o usurio ou o prprio sistema poder disparar um determinado evento.
Um evento uma ao disparada dentro de uma aplicao. Exemplo:
Event o Oco rrnc ia
OnClick Quando o usurio clicar uma vez com o boto esquerdo do mouse sobre ocomponente.
OnDblClick Quando o usurio d um duplo clique no componente com o boto
7/28/2019 Apostila Delphi Radstudio 2007
11/113
15
esquerdo do mouse.OnEnter Quando o componente recebe o foco.OnExit Quando o componente perde o foco.OnKeyPress Quando pressiona uma nica tecla de caractere.
Exemplo 1 : Codificando um objeto button.
Insira um componente button no form; Na object inspector selecione o componente button e altere sua propriedade
caption para : Exibir Mensagem;
D um clique duplo no componente button;
Aparecer no Code Editor a declarao do evento na clusula interface e a
implementao do procedimento na clusula implementation.
procedure TForm1.Button1Click(Sender: TObject);beginform1.Caption := 'Meu Primeiro Programa';ShowMessage(Meu Primeiro Programa em Delphi 2007');
end;
Executando a aplicao
Para executar a aplicao acima, pressione a tecla F9 ou clique no cone RUN.
6.1 COMENTRIOS
Os comentrios no cdigo fonte so importantes e podem ser feitos atravs dos
seguintes smbolos:
//Comentrio de linha
{ Comentrio de bloco }
(*Comentrio de bloco *)
7 VCL VISUAL COMPONENT LIBRARY
Vamos explanar alguns objetos com suas propriedades e seus respectivos mtodos.
7.1 OBJETO FORM
Propriedades
ActiveControl Permite definir qual oprimeiro componente a receberfocoassim que o
7/28/2019 Apostila Delphi Radstudio 2007
12/113
16
formulrio criado.Align Altera o alinhamento e preenchimento do objeto.AutoScroll Permite habilitar as barras de rolagem.AutoSize Determina se o controle ser automaticamente redimensionado.BorderIcons Determina os cones a serem exibidos na barra de ttulo do formulrio.BorderStyle Define o estilo da borda do formulrio.
bsDialog Borda no redimensionvel, comum em caixa de dilogobsSingle Borda simples e redimensionvel.
bsNone Borda invisvel, no redimensionvel, sem botes de controle.bsSizeable Borda padro redimensionvel.
BorderWidth Define a espessura da borda.Caption Indica o rtulo exibido para o componente.ClientHeight /ClientWidth
Define a altura e largura da rea cliente.
Color Define a cor de fundo de um componente.Cursor Indica a imagem exibida pelo ponteiro do mouse quando este ficar sobre o
objeto.DefaultMonitor Associa o form a um monitor especfico em uma aplicao que utiliza vrios
monitores.Enabled Define se o componente est habilitado ou no.
Font Permite controlar os atributos do texto exibido em um componente.FormStyle Determina o estilo do formulrio.fsNormal Definio padro do formulrio.fsMDIChild O formulrio ser uma janela-filha de uma aplicao MDI.fsMDIForm O formulrio ser o formulrio-pai de uma aplicao MDI.fsStayOnTop O formulrio permanece sobre todos os outros formulrios doprojeto, exceto aqueles que tambm tm a propriedade FormStyle igual afsStayOnTop.
Height Define a altura do objeto.HelpContext Define o tpico do arquivo help que ser exibido ao pressionar a tecla F1.HelpFile Define um arquivo de help especfico.Hint Permite exibir um texto de auxlio no momento em que o ponteiro do mouse
permanece sobre o controle.
HorzScrollBar Define o comportamento de uma barra de rolagem horizontal.Icon Define o cone que ser usado pelo formulrio.KeyPreview Define se o formulrio deve ou no responder a um pressionamento de tecla,
atravs do evento OnKeyPress, por exemplo.Left Define a coordenada da extremidade esquerda de um componente.Menu Permite escolher entre mais de um componente MainMenu.Name Define o nome interno que identifica o componente dentro da aplicao.PopupMenu Define o componente PopupMenu a ser utilizado pelo objeto.Position Permite definir o tamanho e posio de um formulrio no momento em que ele
aparece na sua aplicao.ShowHint Define se a string de auxlio deve ou no ser exibida quando o usurio mantm
o ponteiro do mouse sobre um controle.Tag A propriedade Tag uma varivel do tipo Longint que o Delphi coloca
disposio do usurio, que pode atribuir o significado mais conveniente.Top Define a coordenada da extremidade superior de um componente.VertScrollBar Define o comportamento de uma barra de rolagem vertical.Visible Define se o componente aparece ou no na tela.Width Define a largura do objeto.WindowMenu Permite definir qual o menu responsvel por manipular as janelas-filhas de
uma aplicao MDI.WindowState Define o estado de exibio de um formulrio.
Mtodos
Show Exibe o formulrio de manipulao no-modal.ShowModal Exibe o formulrio de manipulao modal.Close Permite fechar o formulrio.
7/28/2019 Apostila Delphi Radstudio 2007
13/113
17
7.2 OBJETO TBUTTON
um dos objetos mais importantes para confirmar edisparar eventos associados.
Figura 11 - Button
Propriedades
Action Referencia uma ao definida em um objeto TActionList.Anchors Permite manter a posio relativa do objeto ao objeto parente quando este
redimencionado.Cancel
Associa o evento OnClick do objeto ao pressionamento da tecla Esc.Default Associa ao evento OnClick do objeto ao pressionamento da tecla Enter.ModalResult Propriedade utilizada para encerrar a execuo de um formulrio Modal quando
selecionado um valor diferente de mrNone.Parent... As propriedades Parentpermitem que o componente receba a mesma
formatao do objeto proprietrio.TabOrder Define a ordem na passagem de foco no momento de pressionamento da tecla
TAB.TabStop Define se o focopra no componente.
Mtodos
SetFocus Envia o foco do windows para o componente.
7.3 OBJETO TEDIT
Um dos principais componentes para a entrada dedados.
Figura 12 - Edit
Propriedades
AutoSelect Define se o texto exibido pelo controle ser selecionado quando este receber ofoco da aplicao.
AutoSize Para componentes TEdit a propriedade determina se a altura do controle serredimensionada quando o tamanho da fonte foralterado.
BorderStyle Determina o tipo da borda do componente.CharCase Determina o se tipo da fonte ser maiscula, minscula ou normal.HideSelection Define se o texto perde a seleo ao perder o foco.Maxlength Define um limite para a insero de caracteres.PasswordChar Define qual caractere ser usado para ocultar o texto inserido no componente.
Text Permite manipular os caracteres inseridos no componente pelo usurio.
7/28/2019 Apostila Delphi Radstudio 2007
14/113
18
Mtodos
Clear Limpa o contedo da propriedade text.SetFocus Envia o foco do windows para o componente.
7.4 OBJETO LABEL
Orienta os usurios escolha de componentes.
Figura 13 - Label
Propriedades
Alignment Define o alinhamento da string na rea do componente.AutoSize Para componentes TDBText e TLabel, esta propriedade define se o controle
ser automaticamente redimensionado para acomodar o texto.FocusControl Define qual o componente receber foco quando o usurio selecionar a
combinao de teclas aceleradoras (atalho) se existir.Layout Define o alinhamento vertical do texto na rea do componente.ShowAccelChar Define se o caracter & ser um literal ou tecla de aceleradora (atalho).Transparent Define se o fundo do componente ser transparente ou no.WordWrap Define se o texto poder utilizar o retorno automtico em caso de ultrapassar
a largura definida e se a propriedadeAutoSize estiver falsa.
EXERCCIO PROPOSTO 1
Objetivo: Trabalhar com objetos e elementos bsicos em Object Pascal, introduzindo
tcnica de manipulao de propriedades e eventos.
Componentes Utilizados: TLabel, TEdit e TButton
Enfoque: Quando o usurio digitar uma string, este texto deve ser exibido no ttulo
do formulrio e em uma mensagem de caixa de dilogo.
Resoluo:
1. Primeiramente solicite um novo projeto clicando no menu File | New | VCL
Forms Application Delphi for Win32;
2. Salve o projeto antes de prosseguir, criando uma pasta Exerccio 1 e dentro
dela salve a unit com o nome ufrmPrimeiroExercicio e o projeto com o nome
prjPrimeiroExercicio;
7/28/2019 Apostila Delphi Radstudio 2007
15/113
19
Figura 14 Salvando a Aplicao
3. Insira os seguintes componentes no objeto form: 1 Label; 1 Edit; 2 Button.Modifique as propriedades conforme abaixo:
a. Edit MaxLength = 10; Name = edtMensagem;
b. Label Caption = Digite: ; Focus Control = edtMensagem;
c. Form Active Control = edtMensagem ; Caption = Formulrio Principal;
Name = frmPrincipal;
d. Button1 Caption = Confirmar; Hint = Executar uma ao; ShowHint =
True;
e. Button2 Caption = Sair;
Para definirmos os eventos para os objetos Buttons, faa o seguinte procedimento:
- Selecione o Button1 (Confirmar) e na guia events da object inspector, identifique o
evento onclick e d dois cliques no espao em branco ao lado do evento. Um
procedimento ser exibido no code editor.
- Insira o cdigo entre o Begin e o End, como no exemplo abaixo:
beginfrmPrincipal.Caption := edtmensagem.Text;ShowMessage(edtmensagem.Text);edtmensagem.Clear;
end;
Para o Button2 (Sair) realize o mesmo procedimento:
beginfrmPrincipal.Close;
end;
Salve seu projeto e atravs do comando RUN compile e faa os testes necessrios.
7/28/2019 Apostila Delphi Radstudio 2007
16/113
20
7.5 OBJETO MEMO
Permite a digitao de um texto bem maisextenso do que no componente edit.
Figura 15 - Memo
Propriedades
Lines Propriedade do tipo TStrings que contm as linhas de texto do componente.MaxLength Define o limite mximo de caracteres no componente em sua propriedade
Lines.ReadOnly Define se o componente do tipo somente leitura.
ScrollBars Define se o componente pode trabalhar com barras de rolagem.WantReturns Define se a tecla ENTER ser utiliza para quebra de linha.WantTabs Define a tecla Tab como tabulao ou mudana de foco. Caso falso pode-se
utilizar CTRL+TAB para produzir o efeito desejado.
Mtodos
LoadFromFile Permite carregar um arquivo para a propriedade Lines.SaveToFile Permite salvar o contedo da propriedade Lines em um arquivo especificado.
7.6 Objeto ComboBox
Cria uma lista suspensa de opes a escolha dousurio atravs do boto dropDown.
Figura 16 ComboBox
Propriedades
Items Define uma lista de Strings que aparece no componente.Sorted Define se os dados sero ordenados.Text Define o texto atual da Combobox.
Mtodos
Clear Permite limpar o contedo da propriedade Items.LoadFromFile Permite carregar um arquvo para a propriedade Items. SaveToFile Permite salvar o contedo da propriedade Items para um arquivo.
7/28/2019 Apostila Delphi Radstudio 2007
17/113
21
7.7 OBJETO GROUPBOX
um objeto continer, pois permite que possamser inseridos outro componentes dentro dele.
Figura 17 GroupBox
Propriedades
Align Pemite definir um alinhamento no objeto proprietrio.Caption Define o texto informativo na parte superior do componente.
7.8 OBJETO RADIOGROUP
Permite a criao de opes para o usurio
escolher apenas um dentre todas existentes.
Figura 18 - RadioGroup
Propriedades
Items Define os itens disponveis ao usurio.
ItemIndex Define qual dos itens est selecionado.Columns Define o nmero de colunas para organizao dos componentes.
7.9 OBJETO MAINMENU E POPUPMENU
Permite a criao de Menus principais e menusrpidos.
Figura 19 - MainMenu
Propriedades
Items Define um novo item de Menu.Images Define um objeto do tipo ImageList.
7/28/2019 Apostila Delphi Radstudio 2007
18/113
22
7.10 OBJETO CHECKBOX (CAIXA DE VERIFICAO)
Permite verificar opes boolenas pr-definidas oure-definidas pelo usurio.
Figura 20 - CheckBox
Propriedades
AllowGrayed Define caso verdadeiro, trs estados possveis para o checkbox: checked(ligado), unchecked (desligado) e grayed (parcial). Caso falso, dois estados:checked (ligado) e unchecked (desligado).
Checked Define se o componente est ligado ou no, caso tenha apenas dois estados.State Permite definir trs estados se AllowGrayed forverdadeiro.
7.11 OBJETORADIOBUTTON (BOTO DE RADIO)
Permite escolher entre um grupo,pelo menos umaopo.
Figura 21 - RadioButton
Propriedades
Checked Define se o componente est ligado ou desligado.
7.12 OBJETO LISTBOX (CAIXA DE LISTAGEM)
Permite o usurio entrar ou manipular uma lista dedados.
Figura 22 - ListBox
Propriedades
Items Define uma lista de Strings que aparece no componente.MultiSelect Permite selecionar vrios itens (Strings) no componente.Sorted Define se a lista de Strings ser ordenada ou no.
7/28/2019 Apostila Delphi Radstudio 2007
19/113
23
Mtodos
Clear Permite limpar o contedo da propriedade Items.LoadFromFile Permite carregar um arquvo para a propriedade Items. SaveToFile Permite salvar o contedo da propriedade Items para um arquivo.
7.13 OBJETO PANEL (PAINEL)
Permite agrupar outros objetos e estabelecer umefeito visual nas aplicaes.
Figura 23 - Painel
Propriedades
Align Define o alinhamento do componente em relao ao seu proprietrio.Bevel... Define a caracterstica das bordas (interna e externa) bem como sua espessura.BorderStyle Define o tipo da borda.
7.14 OBJETO SPEEDBUTTON (BOTO PARA BARRA DE CONES)
Permite ao usurio manipular os botes individuaisou atravs do conceito de grupo.
Figura 24 - SpeedButton
Propriedades
Glyph Define um Bitmap para o componente.GroupIndex Permite agruparum conjunto de SpeedButtons quando ao serem selecionados,
tiverem a propriedade diferente de zero.AllowAllUp Permite que o componente possa ter o relevo suspenso ao ser clicado. S pode
ser utilizado junto ao conceito de agrupamento.
Flat Define um efeito visual interessante.Down Permite determinar qual componente foi pressionado. S pode ser utilizadojunto ao conceito de agrupamento.
7/28/2019 Apostila Delphi Radstudio 2007
20/113
24
7.15 OBJETO MASKEDIT (CAIXA DE EDIO COM MSCARA)
Permite estabelecer uma mscara para aentrada de dados no componente. Pode serconsiderado literalmente um componente Editcom mscara.
Figura 25 - MaskEdit
Propriedades
CharCase Define o tipo dos caracteres.EditMask Permite definir uma mscara para entrada de dados.PasswordChar Define um caracter para ocultar a entrada de dados.
7.16 OBJETO IMAGE (IMAGEM)Permite inserir uma figura para uso geral naaplicao.
Figura 26 - Image
Propriedades
AutoSize Permite alterar o tamanho do componente baseado no tamanho da figura.Picture Define a figura a ser exibida.Stretch Permite alterar o tamanho da figura baseado no tamanho do componente.
Mtodos
LoadFromFile Permite carregar um arquivo de figura na propriedade Picture.
7.17 OBJETO PAGECONTROL
Permite definir guias para agrupar os demaiscomponentes.Cada guia representa um componente TabSheetdo tipo TTabSheet, uma espcie de sub-objeto doPageControl.
Figura 27 - PageControl
7/28/2019 Apostila Delphi Radstudio 2007
21/113
25
Propriedades
ActivePage Permite determinar qual a guia foi selecionada pelo usurio.
7.18 OBJETO OPENDIALOG (CAIXA DE DILOGO PARA ABERTURA DE
ARQUIVOS)
Permite utilizar uma caixa de dilogo pronta comrecursos padronizados pelo sistema operacional.
Figura 28 - OpenDialog
Propriedades
DefaultExt Especifica a extenso a ser adicionada ao nome de um arquivo quando ousurio digita o nome de um arquivo sem a sua extenso.
FileName Define o arquivo selecionado no componente.Filter Permite definir as mscaras de filtro de arquivo a serem exibidas.FilterIndex Define o filtro default a ser exibido na lista drop-down que define os tipos de
arquivos selecionveis.InitialDir Define o diretrio default quando a caixa de dilogo aberta.Options Neste componente, options define uma srie de valores booleanos.Title Define o ttulo da caixa de dilogo.
Os componentes da paleta dialogs so executados atravs do mtodo execute.
Este mtodo uma funo que retorna um valor booleano, assim para exibir uma
caixa de dilogo, podemos escrever:
ifOpenDialog1.Execute then
Se o usurio escolher algum arquivo e confirmar a caixa, execute retorna verdadeiro,
caso contrrio, falso.
7.19 OBJETO IMAGELIST (LISTA DE IMAGENS)Permite definir um conjunto de cones para seremre-utilizados por diversos componentes derecebem este objeto como provedor de uma listade imagens.
Figura 29 - ImageList
7/28/2019 Apostila Delphi Radstudio 2007
22/113
26
Para incluir imagens no componente ImageList, clique 2 vezes rapidamente no
componente e clique no boto Add.
7.20 OBJETO PROGRESSBAR (BARRA DE PROGRESSO)
Permitir ao usurio ter um acompanhamento de
uma rotina demorada.
Figura 30 - ProgressBar
Propriedades
Max Permite definir o valor mximo para a faixa de valores no componente.Min Permite definir o valor mnimo para a faixa de valores no componente.Orientation Define se o componente dever ser vertical ou horizontal.Position Define a posio corrente do controle no componente.Step Define o incremento usado na variao do valor da propriedade position.
7.21 OBJETO GAUGE (BARRA DE PROGRESSO)
Permitir ao usurio ter um acompanhamento deuma rotina demorada.
Figura 31 - Gauge
Propriedades
Kind Permite definir aparncias diferenciadas no componente.Progress Define a posio corrente do controle no componente.
7/28/2019 Apostila Delphi Radstudio 2007
23/113
27
7.22 OBJETO DATETIMEPICKER (DATA E HORA ATRAVS DE UMA
COMBOBOX)
Permite ao usurio escolher uma data atravs deum componente que possui um importante impactovisual e facilidade operacional.
Figura 32 - DateTimePicker
Propriedades
CalColors Define as cores do calendrio.Date Define a data selecionada no componente.
DateFormat Define o formato da apresentao da data.DateMode Define o estilo da caixa de listagem.Kind Define se o componente deve trabalhar com data ou hora.MaxDate Define uma data mxima para uma faixa de valores.MinDate Define uma data mnima para uma faixa de valores.
7.23 OBJETO MONTHCALENDAR (CALENDRIO MENSAL)
Permite ao usurio escolher uma data atravs deum componente que possui um importante impactovisual e facilidade operacional.
Figura 33 - MonthCalendar
Propriedades
Date Define a data selecionada no componente.FirstDayOfWeek Define qual o primeiro dia da semana.
WeekNumbers Permite numerar as semanas.
7/28/2019 Apostila Delphi Radstudio 2007
24/113
28
7.24 OBJETO STATUSBAR (BARRA DE STATUS)
Um dos principais componentes de informaessobre operaes gerais no sistema.
Figura 34 StatusBar
Propriedades
AutoHint Permite exibir o hint do componente automaticamente na barra de status. Seno houver painis, a barra deve ter a propriedade SimplePanel ligada.
SimplePanel Define que a barra de status ser sem divises.SimpleText Define o texto a ser exibido pela barra de status.Panels Permite a criao e edio depainis na barra de status.
A propriedade SimplePanel deve estar desligada.Pode-se tambm dar um duplo clique na barra de status.
7.25 OBJETO TOOLBAR (BARRA DE CONES)
Permite criar barras de cones de maneira rpida esimples.
Figura 35 ToolBar
Propriedades
Flat Define um efeito visual com relevo atravs do mouse nos botes.Images Permite definir um objeto do tipo ImageList.HotImages Permite definir um objeto do tipo ImageLista ser usado no momento em que o
mouse passa (ou clica) sobre o componente.ShowCaptions Permite exibir a propriedade caption dos botes.
8 LINGUAGEM OBJECT PASCAL
Consideramos que uma aplicao em Delphi baseada em um conjunto de
arquivos, (citados anteriormente .DPROJ .PAS e .DFM) bsicos. Vamos examinar
alguns arquivos de fundamental importncia:
7/28/2019 Apostila Delphi Radstudio 2007
25/113
29
8.1 O MDULO .DPROJ
Todo programa em Object Pascal possui um arquivo .DPR, considerado como
arquivo de projeto, o seu formato composto inicialmente da seguinte definio:
program Project1;
usesForms,Unit1 in Unit1.pas {Form1};
{$R *.RES}
beginApplication.Initialize;Application.CreateForm(Tform1, Form1);Application.Run;
end.
A palavraprogram define o nome do programa, este nome ser alterado quando for
gravado o arquivo .DPROJ do projeto.
Na clusula uses, so listadas as units usadas pelo mdulo principal. As units so
responsveis pela capacidade de dividir o programa em uma viso modularizada.
Em cada um, declaramos uma srie de objetos (funes, variveis, procedimento,
etc...) que podem ser usados por outras units e pelo mdulo principal.
Em seguida vem um conjunto de comandos (denominado comando composto)
atravs de dois delimitadores begine end.
8.2 AS UNITS
Um programa em Object Pascal constitudo de um mdulo principal (.DPROJ) e de
uma ou mais unidades de compilao (.PAS). O compilador gera um arquivo com o
cdigo objeto correspondente, e considera o mesmo nome do arquivo .PAS com a
extenso .DCU.
As units so entidades independentes, ou seja, no momento da criao no h
vnculo lgico (nem fsico) entre uma unite um programa principal que a utiliza. Com
esta caracterstica, podemos utilizar as units em qualquer projeto.
A principal caracterstica do conceito de unit que possibilita estruturar o programa
em mdulos funcionais, com cada unit provendo um conjunto de funes e
procedimentos. Cada formulrio corresponde a uma unit. Mas, podemos criarunitsindependentes, no associadas a um form.
7/28/2019 Apostila Delphi Radstudio 2007
26/113
30
Se considerarmos o cdigo uma unitcom um componente Button e um manipulador
de evento, teremos o seguinte cdigo:
unit Unit1;
interface
usesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ExtCtrls, ComCtrls;
typeTform1 = class(Tform)Button1: Tbutton;procedure Button1Click(Sender: Tobject);
private{ Private declarations }
public{ Public declarations }
end;
varForm1: Tform1;
implementation
{$R *.DFM}
procedure Tform1.Button1Click(Sender: Tobject);beginForm1.Caption := Curso de Delphi 2007;Showmessage(Exemplo de caixa de dilogo);
end;
end.
Uma unitpossui cinco partes:
Cabealho
Contm a palavra reservada unitseguida de um identificador que o nome da
unit. Este nome o mesmo nome do arquivo com extenso .PAS
unit Unit1;
Interface
Contm tudo o que a unitexporta: constantes, tipos, variveis, procedimentos,
funes, etc... Na declarao dos procedimentos e funes que a unit
exporta, deve constar apenas o cabealho (nome e parmetros). A
declarao completa fica na parte da implementao.
InterfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ExtCtrls, ComCtrls;
typeTform1 = class(Tform)
7/28/2019 Apostila Delphi Radstudio 2007
27/113
31
Button1: Tbutton;procedure Button1Click(Sender: Tobject);
private{ Private declarations }
public{ Public declarations }
end;var
Form1: Tform1;
Implementao
Contm a definio completa das funes e procedimentos que constam na
interface. Se na implementao so usados identificadores definidos em outra
unit, o nome desta outra unitdeve ser includo na lista de units da clusula
uses da implementao.
Implementation{$R *.DFM}procedure Tform1.Button1Click(Sender: Tobject);beginForm1.Caption := Curso de Delphi 2007;Showmessage(Exemplo de caixa de dilogo);
end;
In ic ial izao
uma parte opcional. Quando usada, no pode conter nenhuma declarao.
Apenas comandos so permitidos nesta parte. Ela comea com a palavrainitialization, e os comandos de inicializao so executados antes do
programa comear.
Initialization
Fi nalizao
tambm uma parte opcional, com uma observao: ela s pode existir se na
unithouver tambm uma parte de inicializao e s pode conter comandos,
que sero executados dentro do processo de finalizao do programa, aps a
execuo do programas principal.
Finalization
Toda unittermina com a palavra en dseguida de um ponto final (.).
7/28/2019 Apostila Delphi Radstudio 2007
28/113
32
8.3 ATRIBUIO
Ao declarar uma varivel, o compilador cuida de alocar na memria uma rea que
seja suficiente para armazenar qualquer dos valores definidos atravs do seu tipo.
Os valores que podem ser atribudos varivel so definidos atravs de um
comando de atribuio que pode ser considerado da seguinte forma:
Varivel:= expresso;
8.4 DECLARAO DE VARIVEIS
As variveis podem ser classificadas em:
Globais: Quando so feitas diretamente na seo interface de uma unit(ou seja, fora
dos procedimentos e funes). Pode-se ter variveispblicas eprivadas.
Locais: Quando feita a declarao dentro de um procedimento ou funo.
VarN: Single;S: String;I: Integer;
8.5 TIPOS PARA MANIPULAO DE VARIVEIS
Tipos de variveis Inteiras
Tipo Faixa de Valores Formato
Integer -2147483648.. 2147483647 32 bitsCardinal 0..4294967295 32 bits, sem sinalShortint -128..127 8 bits
Smallint -32768..32767 16Longint -2147483648.. 2147483647 32Int64 -2^63..2^63-1 64Byte 0..255 8 bits, sem sinalWord 0..65535 16 bits, sem sinalLongword 0..4294967295 32 bits, sem sinal
Tipos de nmeros Reais
Tipo Faixa de Valores
Real 2.9*10E-39..1.7*10E38Single 1.5*10E-45..3.4*10E38Doubl 5.0*10E-324..1.7*10E308Extended 3.4*10E-4932..1.1*10E4932
7/28/2019 Apostila Delphi Radstudio 2007
29/113
33
Comp -2*10E63+1..2*10E63-1Currency -9.22*10E14..9.22*10E14
Tipos de variveis booleanas
Tipo Faixa de Valores
Boolean False ou TrueByteBool *WordBool *LongBool *
Tipos de variveis de caracteres
Tipo Valores
Char Permite armazenar um caractere ASCII.ShortString Permite armazenar uma cadeia de at 255 caracteres.
String Permite armazenar uma cadeia ilimitada de caracteres.
Tip o genric o (Vari an t)
Objetos variant so essencialmente variveis sem tipo podendo assumir diferentes
tipos, automaticamente. Esta vantagem aparente tem a caracterstica de ser
ineficiente se utilizada indiscriminadamente.
8.6 FUNES DE CONVERSO E MANIPULAO
Os objetos do Delphi para entrada e/ou exibio de dados utilizam propriedades do
tipo String, as propriedades Text e Caption so bons exemplos. O problema ocorre
quando tentamos realizar clculos matemticos com os dados que devem ser
manipulados por estas propriedades.
Desta maneira precisamos de funes para converter dados String em tipos Inteiros
ou Reais ou Datas, por exemplo:
Funo Ob jet iv o
StrToInt(const S: String) Converte um dado String em tipo Inteiro.IntToStr(value: Integer) Converte um dado Inteiro em tipo String.StrToFloat(const S: String) Converte um dado String em tipo Ponto Flutuante.FloatToStr(Value: Extended) Converte um dado Ponto Flutuante em tipo String.DateToStr(Date: TdateTime) Converte um dado TdateTime em String.DateTimeToStr(DateTime:TdateTime)
Converte um dado TdateTime em String.
StrToDate (const S: String) Converte um dado String em tipo TdateTime.StrToDateTime(const S: String) Converte um dado String em tipo TdateTime
FormatFloat(const Format: string;Value: Extended): string
Permite formatar um tipo ponto flutuante retornando uma string.Edit2.Text := FormatFloat(###,###.00,soma);Sendo soma uma varivel real.
7/28/2019 Apostila Delphi Radstudio 2007
30/113
34
8.7 EXPRESSES LGICAS
So expresses que retornam valorbooleano(falso ou verdadeiro).
Operado r Operao
Not NegaoAnd E lgicoOr OU lgicoxor OU EXCLUSIVO lgico
O operadornot unrio, por exemplo: ifnot(X > Z) then
Devemos usar parnteses ao compararmos expresses lgicas, por exemplo:
if(X > Z) or(W > Y) then
EXERCCIO PROPOSTO 2
Objetivo: Trabalhar com objetos e elementos bsicos utilizando as tcnicas de
manipulao de propriedades e eventos.
Componentes utilizados: Label, Memo, Radio Group, CheckBox, ComboBox;
Enfoque: Deselvolver um pequeno editor de texto, onde o usurio possa alterar a
fonte, cor e estilo da fonte.
9 CAIXAS DE DIALOGO
No Delphi existem caixas de dilogos pr-definidas, nas quais podem ser utilizadas
visando facilitar o desenvolvimento de aplicativos pela ferramenta.
ShowMessage Exibe uma mensagem na tela ao usurio.
Exemplo:
ShowMessage(Esta uma mensagem de Texto.);
Figura 36 Tela de Mensagem
MessageDlg Exibe uma mensagem na tela ao usurio, porm permite tratar a
resposta que o usurio informa na caixa de dilogo. Sua sintaxe a seguinte:
function MessageDlg(const Msg: string; DlgType: TMsgDlgType; Buttons:
MsgDlgButtons; HelpCtx: Longint): Word;
7/28/2019 Apostila Delphi Radstudio 2007
31/113
35
onde:
const Msg: string uma constante string ou propriedade deste tipo.
DlgType: TmsgDlgType
mtWarningContm um cone exclamao amarelo.mtError
Contm um cone vermelho de parada.mtInformationContm um cone i azul.mtConfirmationContm uma interrogao verde.mtCustomNo contm BitMap.
Buttons: TMsgDlgButtonsmbYes mbNo mbOK mbCancel mbAbort mbRetrymbIgnore mbAll mbNoToAll mbYesToAll mbHelp
HelpCtx: Longint Define um nmero para o help de contexto. Por padro, zero 0.
Exemplo:
ifMessageDlg(Deseja sair?, mtConfirmation, [mbYes, mbNo], 0)=mrYes then
Figura 37 Tela de Confirmao
APPLICATION.MESSAGEBOX
Uma outra caixa de dilogo o mtodo MessageBox do objeto Application. Esta
funo est definida da seguinte maneira:
function MessageBox(const Text, Caption: PChar; Flags: Longint): Integer;
Onde:
const Text uma constante string ou propriedade deste tipo.Caption: PChar Define uma string para o ttulo da janela.
Flags
Define os botes, cones e a possibilidade de focar um determinadoboto.Os valores para botesso:MB_ABORTRETRYIGNORE,MB_OK,
MB_OKCANCEL,MB_RETRYCANCEL,MB_YESNO,MB_YESNOCANCEL
7/28/2019 Apostila Delphi Radstudio 2007
32/113
36
Os valores para os conesso:MB_ICONEXCLAMATION,MB_ICONWARNING,MB_ICONINFORMATION,MB_ICONASTERISK,MB_ICONQUESTION,MB_ICONSTOP,MB_ICONERROR,
MB_ICONHANDOs valores para a definio do bo to de fau ltpode ser:MB_DEFBUTTON1,MB_DEFBUTTON2,MB_DEFBUTTON3,MB_DEFBUTTON4
O retornoda funo o tipo do boto como id
(IDABORT IDCANCEL IDIGNORE IDNO IDOK IDRETRY IDYES)
Desta maneira pode-se fazer testes lgicos como no exemplo:
If Application.MessageBox('Texto','Ttulo',MB_YESNOCANCEL +
MB_ICONINFORMATION + MB_DEFBUTTON2) = IdYes then
Figura 38 Application.MessageBox
10 CAIXAS DE ENTRADA
Podemos obter dados do usurio atravs de caixas de dilogo pr-defindas.
InputBox
A funo InputBox retorna um tipo String, que dado digitado pelo usurio na sua
utilizao. Sua definio interna a seguinte:
function InputBox(const ACaption, APrompt, ADefault: string): string;
Onde:const ACaption Define o ttulo da janelaAPrompt Define um rtulo para orientao dentro da caixa.
7/28/2019 Apostila Delphi Radstudio 2007
33/113
37
ADefault Define um valor default para a caixa.
Exemplo:
InputBox('Ttulo da janela','Descrio','Valor Padro')
Figura 39 Tela de Input
11 ESTRUTURAS CONDICIONAIS
11.1 IF THEN - ELSE
A estrutura condicional i f pode ser composto de uma ou mais condies de
processamento, por exemplo:
if(A > B) then
B := B + 1;
if(A > B) thenB := B + 1
elseA := A - 1;
Caso haja a mais de uma linha de comando dentro da estrutura then necessrio
delimitar o bloco de comando utilizando as clusulas BEGIN e END
if(A > B) thenbeginB := B + 1;X := B + A;end
elsebeginA := A - 1;Y := Y + B;end;
O comando i f-then-else considerado como nico, portanto, no h ponto e vrgula
(;)antes da palavra reservada else.
possvel ainda que se tenha um conjunto de IF-then-else aninhados, por exemplo:
7/28/2019 Apostila Delphi Radstudio 2007
34/113
38
if(A > B) thenbeginA := A + 1;ShowMessage(A maior que B);end
else Beginif (A < B ) thenbegin
A := A - 1;ShowMessage(B maior do que A);End
elseShowMessage(A igual a B);
End;
11.2 ESTRUTURA CASE - OF
O comando case..ofoferece uma alternativa para comandos i f-then-elsecom um
grande nmero de testes. Por exemplo:
case Key ofA..z: Label1.Caption := Letras;0..9: Label1.Caption := Nmeros;+, -, *, /: Label1.Caption := Operador
elseLabel1.Caption := Caracter especial;
end;//fim do case
12 ESTRUTURAS DE REPETIO
12.1 Repeat ... Until
A estrutura de repetio Repeat ... until, garante que pelo menos uma vez a
estrutura ser executada. Para que as instrues de comando que estiverem dentro
da estrutura de repetio sejam executadas vrias vezes necessrio que acondies existente na clusula until seja de valor FALSO. Exemplo:
....Repeat
X := x+ 1;Inc(Y,3); // equivale a y := y + 3;Dec(Aux,2); // equivale a aux := aux 2;
Until x >= 2000;...
7/28/2019 Apostila Delphi Radstudio 2007
35/113
39
12.2 WHILE - DO
A estrutura de repetio WHILE se difere da estrutura Repeat, pelo fato de realizar
uma validao dos dados antes de executar qualquer instruo dentro da sua
estrutura. Para que as instrues sejam executadas diversas vezes, necessrio
que a condio estabelecida seja VERDADEIRA. Exemplo:
while X
7/28/2019 Apostila Delphi Radstudio 2007
36/113
40
12.5 ADICIONADO FORMULARIOS AO PROJETO
As aplicaes desenvolvidas por ferramentas visuais dificilmente utilizam somente
um formulrio. Nos exerccios anteriores vimos que como se tratavam de aplicaes
simples, no houve a necessidade de se adicionar novos formulrios aplicao.
Vamos criar uma pequena aplicao que seja capaz de manipular mais de um
formulrio.
Primeiramente abra um novo projeto do Delphi 2007, clicando no menu File | New |
VCL Forms Applications Delphi for Win32. Salve a aplicao em uma pasta
Exercicio3, salvando a unit1 com o nome de ufrmExercicio3 e o projeto com o nome
exercicio3.
Figura 40 Salvando o Formulrio 3
Incluia no form1 o compoente MainMenu e altere as propriedades dos objetos da
seguinte forma:
Object Form : TFormCaption : Exerccio Proposto 3Name : frmExercicio3;Position : poDesktopCenter;
Object : MainMenu: TMainMenuName: mmFormularios;
7/28/2019 Apostila Delphi Radstudio 2007
37/113
41
Figura 41 Elaborando Menu de Opes
Agora que os objetos j esto configurados, vamos incluir as linhas de cdigos
necessrias para que o nosso formulrio frmexercicio3 possa chamar os outros
formulrios da aplicao.
Primeiramente antes de realizarmos qualquer codificao necessrio que
adicionemos mais dois novos formulrios na nossa aplicao, para isso clique no
menu File | New | Form Delphi for Win32, salve-os com os respectivos nomes
ufrmFormulario2 e ufrmFormulario3, agora podemos codificar nosso mmFormularios.
Para chamar um outro formurio apartir do formulrio atual temos duas formas:
Show e ShowModal
ShowChama o formulrio solicitado e permite que se alterne entre os formulrios
durante a execuo da aplicao.Showmodal Tem a mesma finalidade do Show, porm no permite a alternncia
entre os formulrios em tempo de execuo.
Clique duas vezes sobre o componente MainMenu e clique duas vezes sobre o item
Formulario 1 e digite o seguinte cdigo:
procedure TForm1.Formulario11Click(Sender: TObject);beginfrmFormulario2.Show;
end;
Em seguida, faa o mesmo procedimento para o item Formulrio 2, mas com o
seguinte cdigo:
procedure TForm1.Formulario21Click(Sender: TObject);beginfrmFormulario3.ShowModal;
end;
Aps isto, salve sua aplicao e execute-a clicando no boto RUN ou pressionandoa tecla F9.
7/28/2019 Apostila Delphi Radstudio 2007
38/113
42
Aparecer a seguinte tela:
Figura 42 Confirmao de Referncia entre formulrios
O Delphi est questionando se no formulrio Form1 deve haver uma referncia ao
formulrio frmFormulario2. Ao confirmar o Delphi adiciona uma referncia no Code
Editorda unidade UFrmExercicio3 na seguinte estrutura:
implementat ion
usesufrmFormulario2;
Perceba que ao chamar o formulrio 1 do menu, voc ainda conseguir acessar o
formulrio principal, porm isto no permitido ao chamar o formulrio 2 do menu.
EXERCCIOS PROPOSTOS 4
Calcule o Volume de uma Espera; rea de um triangulo; Permetro do Triangulo;
EXERCCIOS PROPOSTOS 5
Objetivo: Trabalhar com objetos e elementos bsicos utilizando as tcnicas demanipulao de propriedades, eventos e formulrios.
Enfoque: Deselvolver uma aplicao que contenha todos os projetos abaixo, sendo
cada um solicitado atravs de um Menu de opes.
1. PROJETO TRIANGULO: Dado 3 valores numricos pelo usurio verificar se os
mesmo formam um tringulo e em caso positivo emitir uma mensagem informando
qual o tipo correspondente. Em caso negativo informar ao usurio atravs de umamensagem.
7/28/2019 Apostila Delphi Radstudio 2007
39/113
43
2. PROJETO FIBONACCI: Sendo informado o n de termos desejados para gerar a
seqncia de Fibonacci, faa um programa que exiba toda a seqncia em um
componente Memo.
3. PROJETO FATORIAL: Faa um programa que calcule o fatorial de um numero
informado pelo usurio. O resultado do clculo dever ser exibido em um
componente Edit.
4. PROJETO POTENCIA: Sendo informado a Base e o Expoente pelo usurio,
calcule a potncia para esta operao. A base, o expoente e o resultado devem ser
informados atravs de um coponente Edit.
Cada item acima desenvolvido em formulrios separados.
13 PROCEDIMENTOS E FUNES
Toda parte programvel no Delphi 2007 realizada dentro de procedures ou
functions, toda vez em que um evento de um componente programado, o Delphi
2007 cria automaticamente a sua declarao no Code Editor, por exemplo:
typeTForm1 = class(TForm)
MainMenu1: TMainMenu;Formulario11: TMenuItem;procedure Formulario11Click(Sender: TObject);
possvel tambm criar procedimentos e funes prprias no definidas pelo Delphi,
para isso deve-se declarar o procedimento ou funo na seo INTERFACE do code
editor e implement-la na seo IMPLEMENTATION.
Vale a pena lembrar que a deciso por utilizar procedimento ou funo deciso do
desenvolvedor, visto que todo procedimento no tem como obrigao retornar
valores ao programa, j a funo deve por obrigao retornar um valor ao programa,
sendo que no Object Pascal este retorno de valor se d pela varivel result, varivel
esta que no deve ser declarada pelo desenvolvedor, pois ela declarada
automaticamente sempre que a funo solicitada pelo programa.
Uma forma automtica de se implementar a declarao uma procedure ou function
na seo implementation e posicionar o curso de digitao sobre a declarao da
procedure ou function na seo Interface e pressionar as teclas CTRL + Shift + C.
Exemplo de procedure:
7/28/2019 Apostila Delphi Radstudio 2007
40/113
44...Typeprocedure TForm1.Soma(X, Y: String);...Implementation
procedure TForm1.Soma(X, Y: String);begin
Label1.Caption := FloatToStr(StrToFloat(X)+StrToFloat(Y));end;....
Exemplo de Function...Typefunction TForm1.Subtrai(X, Y: String): String;...Implementation
function TForm1.Subtrai(X, Y: String): String;begin
result := FloatToStr(StrToFloat(X)-StrToFloat(Y));end;
14 TRATAMENTO DE EXCEES
Quando desenvolvemos nossos programas s os disponibilizamos aos usurios
aps uma srie de testes realizados, porm impossvel prever todo e qualquer tipo
de problema que possa ocorrer em tempo de execuo, a esses erros damos onome de excees.
As excees devem ser tratadas para que o aplicativo no trave com o usurio;
no deixe o SO instvel; etc.
Quando uma exceo ocorre, o fluxo de controle automaticamente transferido para
blocos de cdigos de exceo, denominados handlers, definidos atravs de
comandos do object Pascal.
14.1 TRY EXCEPT
Uma das formas de tratarmos excees no Delphi utilizando o comando TRY-
EXCEPT.
Sua sintaxe a sguinte:
Try
Except
End;
7/28/2019 Apostila Delphi Radstudio 2007
41/113
45
Toda vez que o aplicativo for executado sem ocorrer nenhuma exceo o bloco de
cdigos de exceo ignorado e o aplicativo prossegue normalmente, porm caso
ocorra a exceo o aplicativo direcionado ao bloco de excees e executa as
instrues l contidas.
O bloco de exceo pode ser definido atravs de uma construo genrica,
exemplo:
tryAbre(Arq);while not Fim(Arq) doprocessa(Arq);
exceptShowmessage (Houve um erro inesperado.);
end; //bloco try
No exemplo acima tratamos os erros com uma mensagem genrica dentro de um
bloco try-except.
14.2 A CONSTRUO ON-DO
tryAbre(Arq);while not Fim(Arq) doprocessa(Arq);
excepton EInOutError do //erro de entrada e sada
beginShowmessage(Problemas...);Fecha(Arq);
end;on EdivByZero do //erro de diviso de n inteiro por zero
Showmessage(Erro ao dividir por zero);on EconvertError do //erro de converso de tipos
Showmessage(Erro de converso de tipos de dados);end; //bloco try
Podemos ainda definir utilizando a clusula on-do com um handlergenrico usando
else, da seguinte forma:
t ryProcessa;
exceptonExceo1 doTrata1;onExceo2doTrata2;elseTrataOutras;
end;
Os principais tipos de exceo da RTL (RunTime Library) do DELPHI, a seremtratadas nos blocos on ... do so:
7/28/2019 Apostila Delphi Radstudio 2007
42/113
46
Nome Descrio
EaccessViolation Ocorre quando se tenta acessar uma regio de memria invlida(ex: tentar atribuir valor a um ponteiro cujo contedo nil).
EconvertError ocorre quando se tenta converter um string em um valornumrico (ex: utilizar a funo StrToInt em uma letra).
EdivByZero ocorre na diviso de um nmero inteiro por zero.EinOutError ocorre numa operao incorreta de I/O (ex: abrir um arquivo que
no existe).
EintOverFlow ocorre quando o resultado de um clculo excedeu a capacidadedo registrador alocado para ele (para variveis inteiras).
EinvalidCast ocorre quando se tenta realizar uma operao invlida com ooperador as (ex: tentar usar um Sender com uma classe que nocorresponde a seu tipo).
EinvalidOp ocorre quando se detecta uma operao incorreta de pontoflutuante.
EinvalidPointer ocorre quando se executa uma operao invalida com um
ponteiro (ex: tentar liberar um ponteiro duas vezes).EoutOfMemory ocorre quando se tenta alocar memria mas j no existe mais
espao suficiente.
EoverFlow ocorre quando o resultado de um clculo excedeu a capacidadedo registrador alocado para ele (para variveis de pontoflutuante).
ErangeError ocorre quando uma expresso excede os limites para a qual foidefinida (ex: tentar atribuir 11 ao ndice de um vetor que pode irno mximo at 10).
EstackOverflow ocorre quando o sistema no tem mais como alocar espao dememria na Stack.
Eunderflow ocorre quando o resultado de um clculo pequeno demais paraser representado como ponto flutuante.
EzeroDivide ocorre quando se tenta dividir um valor de ponto flutuante porzero.
14.3 O COMANDO TRY-FINALLY
H outro comando cuja sintaxe comea com t ry. Este controle de finalizao nos
permite lidar de forma estruturada com as situaes em que alocamos algum tipo de
recurso e, haja o que houver, precisamos depois liber-lo.
try
finally
end;
O comando funciona da seguinte forma: os comandos especificados aps o Tryso
executados seqencialmente. Se no ocorrer nenhuma exceo, os comandos
especificados aps finallyso executados, e o programa prossegue com a execuo
7/28/2019 Apostila Delphi Radstudio 2007
43/113
47
normal, com o comando seguinte ao try-finally. Porm, se houver alguma exceo
qualquer uma durante a execuo da lista de comandos do try, o trecho aps o
finally executado e, no final, a exceo reativada.
Em resumo: Os comandos do bloco finally sempre so executados, haja ou no
alguma exceo durante a execuo dos comandos especificados aps o try.
14.4 CLASSES BSICAS
Exceo
EMathError
EVariantError
EInvalidOp
EZeroDivide
EOverFlow
EUnderFlow
EIntError EInOutError EAccessViolation
EDivByZero
ERangeError
EIntOverFlow
EOutOfMemory
EInvalidPointer
EInvalidCast
EConvertError
EPrivilege
EStackOverflow
EControlC
EAssertionFailed
Excees de
Ponto Flutuante
Excees de
Variantes
Excees de
Matemtica de
Inteiros
Excees de
Pilha
Excees de
Entrada/Sada
Excees
Typecast
Excees de
Converso
Excees de
Processador
Excees de
Assero
Figura 43 Classes Bsicas de Excees
14.5 BLOCOS TRY ANINHADOS
Blocos try aninhados permitem maior versatilidade na construo de blocos
protegidos, lembrando que se a exceo ocorrer, os comandos inseridos em except
sero executados. J os comandos inseridos em finally sero executados havendo
ou no a ocorrncia de erros.
7/28/2019 Apostila Delphi Radstudio 2007
44/113
48
Embora no prximo exemplo, no exista margem para excees dentro do lao
for..do (a menos que seja digitado errado) podemos ter uma idia de como criar
blocos aninhados para garantir a execuo de rotinas sujeitas a erros mais graves.
procedure TForm1.Button1Click(Sender: Tobject);vari, aux:integer;beginaux := 500;try {inicio do bloco try-finally.
Screen controla uma serie de recursos do sistema operacionalneste exemplo, muda-se a aparencia do cursor para ampulheta}
Screen.Cursor := crHourGlass;try//inicio do bloco try-exceptfori:=0 to aux dobeginEdit1.Text := IntToStr(i);Application.ProcessMessages;
{O mtodo ProcessMessages necessrio para forar que asmensagens do windows sejam processadas, desenhando o numerono Edit. Sem ele, apenas o valor final seria visto.}
end;except
Showmessage('Ocorreu um erro.');end;//fim do bloco try-exceptfinallyScreen.Cursor := crDefault;
end;//fim do bloco try-finallyend;//fim da procedure
15 BANCO DE DADOS
Grande parte dos sistemas desenvolvidos em Delphi, ou ferramentas visuais, tem a
necessidade de comunicao com banco de dados. Um banco de dados pode ser
interpretado de vrias formas. Pode ser um arquivo nico, pode ser um diretrio com
vrios arquivos, etc.
15.1 MODELAGEM DE DADOS
Existem 3 modelos bsico para a modelagem de dados que devemos abordar
rapidamente antes de iniciarmos esta seo, so eles: Modelo Conceitual; Modelo
Lgico; Modelo Fsico;
Modelo Conceitual : Procura abstrair a realidade independente da plataforma de
hardware e software.
Modelo Lgico : Define as regras bsicas na forma de como os dados devem ser
armazenados no banco de dados.
7/28/2019 Apostila Delphi Radstudio 2007
45/113
49
Modelo Fsico : Implementa a definio do modelo lgico.
15.2 MODELO CONCEITUAL E LGICO
A princpio vamos entender como podemos definir os dados que sero armazenados
em um computador, atravs do conceito de entidade.
Ao pensarmos em cadastrar dados de clientes, alunos, fornecedores, etc... temos
exemplos de entidades. A entidade possui propriedades que sero identificados
como os dados propriamente ditos, estas propriedades so chamadas de atributos.
15.3 MODELO FISICO
No modelo fsico de dados, as entidades sero chamadas de tabelas e os atributos
sero chamados de campos. A linha de dados que deriva do conjunto de campos
chama-se registro.
Nas entidades necessrio que haja um campo que seja capaz de identificar um
nico registro dentre todos existente, a este campo chamamos de chave primria.
15.4 RELACIONAMENTOS
Para os bancos de dados relacionais, definimos relacionamentos como sendo uma
associao entre um ou mais entidades. O relacionamento pode ser representado
atravs de cardinalidades, que so as regras de relacionamento entre as entidades.
Existem 3 tipo de cardinalidades: 1:1 ; 1:N ; N : N
O relacionamento 1:N ou N:1 tipo mais comum de relacionamento utilizado, ele
define que a chave primria da entidade 1, deve ser adicionada na entidade N como
chave estrangeira.
J o relacionamento N:N tem como regra a criao de uma 3 tabela, onde aschaves primrias das entidades envolvidas no relacionamento, sero inseridas na 3
tabela como chave estrangeira.
16 CONEXAO DE BANCO DE DADOS
O Delphi 2007 utiliza uma estrutura de camadas para fazer com que o front-end
(formulrio) manipulado pelo usurio venha interagir com a base de dados. Ocaminho deve ser percorrido por uma srie de componentes configurados entre si,
7/28/2019 Apostila Delphi Radstudio 2007
46/113
50
porm, h uma camada intermediria que no fica dentro do ambiente Delphi, nem
diretamente preso ao banco, o BDE.
16.1 BDE
O BDE, Borland DataBase Engine, um conjunto de DLLs que deve acompanhar as
aplicaes que fazem uso de seus recursos de acesso ao banco. nesta camada
que so definidas caractersticas especficas de cada banco de dados, bem como
sua localizao, ou seja, o front-end no acessa diretamente a base de dados, o
BDE responsvel para estabelecer este funcionamento.
Figura 44 Esquema de Aplicao BDE
16.2 COMPONENTES DE CONTROLE E ACESSO
O sistema para conexo com o banco de dados utiliza alm do BDE um conjunto de
componentes denominados: Session, DataBase, DataSet, DataSource e Data-
Aware. O componente Session no ser o foco de nosso estudo.
Uma viso geral sobre estes componentes pode ser vista da seguinte maneira:
Figura 45 Viso Geral dos Componente
Session: Aplicaes simples trabalham com apenas um banco de dados.Porm o Delphi permite mais de uma conexo simultnea bancos de dados
Aplicao Delphi
(Front-End)
Borland DataBase Engine (BDE)
Bancos de Dados Locais SQL Links Drivers ODBC
Session DataBase DataSet DataSource Data-Aware
7/28/2019 Apostila Delphi Radstudio 2007
47/113
51
distintos, e tambm mais de uma conexo com o mesmo banco de dados. O
controle global das conexes feito atravs do componente da classe
TSession, criado automaticamente pelo Delphi na execuo do programa.
Esse componente representa a sesso defaultda aplicao.
DataBase: O componente DataBase responsvel pela conexo da
aplicao a um banco de dados com a finalidade maior de implementar
segurana (transaes) e definir caractersticas de comunicao entre uma
aplicao Delphi-Client/Server. Embora em aplicaes locais, sua utilizao
explicita recomendada.
DataSet: Existem trs componentes que descendem de uma classe
chamada TDataSet e implementam importantes mtodos de manipulao de
banco de dados alm de suas caractersticas especficas. De fato, no
utilizamos a classe TDataSet diretamente, mas atravs dos componentes
TTable, TQuery(SQL) e TStoreProc. Estes componentes esto na paleta
BDE
DataSource: O componente DataSource responsvel por conectar os
componentes Data-Aware uma determinada tabela representada pelo
DataSet. Este componente est na paleta DataAccess.
Data-Aware: Os componentes Data-Aware so responsveis pela
visualizao e manipulao direta dos dados. Todo componente Data-Aware
tem uma propriedade para conectar-se ao DataSource correspondente
tabela destino. Estes componentes esto na paleta DataControls.
Exemplo
Vamos exemplificar a utilizao de componentes bsicos de acesso e controle
atravs de um exemplo baseado em uma tabela (arquivo de dados) j pronta, criada
na instalao do Delphi. O objetivo entendermos o funcionamento destes
componentes.
Crie uma nova aplicao e salve-a na pasta especificada pelo instrutor.A unit : UFrmPeixes
7/28/2019 Apostila Delphi Radstudio 2007
48/113
52
Projeto: Peixes
Insira dois componentes: Um DataSource e um Table. Configure suas
propriedades de acordo com a orientao abaixo:
Object: Table : TTable
Name: TbPeixes;DatabaseName = 'DBDEMOS'TableName = 'biolife.db'Active = True
Object:DataSouce : TDataSourceName = DsPeixes;AutoEdit = FalseDataSet = TbPeixes
Insira um componente DBGrid e configure-o:
objectDBGrid1: TDBGridAlign = alBottomDataSource = DsPeixes
Insira um componente DBImage e configure-o:
objectDBImage1: TDBImageDataField = 'Graphic'DataSource = DsPeixesStretch = True
Insira um componente DBMemo e configure-o:
objectDBMemo1: TDBMemoDataSource = DsPeixesDataField = 'Notes'
Insira um componente
DBNavigator e configure-o:
objectDBNavigator1: TDBNavigatorDataSource = DsPeixes
Uma sugesto do visual pode ser a
seguinte:
Podemos perceber que a aplicaofunciona manipulando a tabela
7/28/2019 Apostila Delphi Radstudio 2007
49/113
53
biolife.DB sem a necessidade de nenhuma linha de cdigo explcita.
claro que este apenas um exemplo para entendermos o mecanismo de
componentes de acesso e controle. Desse modo, veremos a seguir que linhas de
cdigo sero necessrias para implementar funcionalidades especficas (pesquisas),
ou mesmo bsicas como incluso, edio e remoo.
Por ltimo, vamos personalizar o componente DBGrid para no exibir os campos
Grafice Notes (campos BLOB). Pode-se usar a propriedade Columns ou um duplo
clique no componente DBGrid, O Editor de colunas exibido, clique no cone Add
All Fields; os campos disponveis sero exibidos, selecione o campo desejado
(Grafic) e clique em Delete Selected
Figura 47 Editando Colunas Figura 48 Eliminando um Campo
Salve novamente e execute a aplicao.
16.3 OBJETOS TFIELD
Vamos criar uma outra aplicao e exemplificar um recurso muito importante naconstruo de aplicaes baseadas em banco de dados, os campos pers is tentes.
Crie uma nova aplicao e salve-a na pasta especificada pelo instrutor. Os
nomes podem ser: O Formulrio: UFrmPaises Projeto: Paises
Insira dois componentes: Um DataSource e um Table. Configure suas
propriedades de acordo com a orientao abaixo:
Figura 46 Dados de Biolife
7/28/2019 Apostila Delphi Radstudio 2007
50/113
54
Agora, ao invs de colocarmos componentes data-aware (paleta
DataControls) diretamente no form, vamos definir os campos persistentes
atravs de um duplo clique componente Table surgir o editor de campos
(Fields Editor).
Clique com boto
direito no editor e escolha
Add all fields.
A partir de agora, cada
campo na tabela
considerado um objeto
TFieldcom suas
propriedades individualizadas na Object Inspector.
Mas, o melhor de tudo o fato de podermos arrastaros campos TField diretamente
para o formulrio, e perceber que o Delphi se encarrega de construir o componente
data-aware necessrio a cada campo.
Isso realmente poupa muito tempo no desenvolvimento de aplicaes em banco de
dados. Porm h a possibilidade de criar aplicativos que utilizem acesso banco
sem data-aware.
Insira um componente DBNavigator e configure-o:
object DBNavigator1: TDBNavigatorDataSource = DsPaises
end
Uma sugesto para a disposio dos componentes pode ser:
7/28/2019 Apostila Delphi Radstudio 2007
51/113
55
Figura 49 Cadastro de Paises
Salve novamente e execute a aplicao.
16.4 BDE CRIAO DO ALIAS
Vamos explorar com mais detalhes o conceito e funcionamento da camada BDE. O
BDE instalado junto com o Delphi. Execute o programa e examine a tela inicial.
A tela dividida em duas partes bsicas: A listagem de Aliasesdo lado esquerdo e
as configuraes de cadaAlias no lado direito.
Um conceito importantssimo a definio de Alias. Cada nome do lado esquerdo
do BDE representa uma configurao para acesso a um determinado banco.Exemplo: O Alias BDDEMOS representa o diretrio C:\Arquivos de
programas\Arquivos comuns\Borland Shared\Data, o driver para acesso ao de banco
(Paradox) entre outras configuraes.
Dessa maneira o desenvolvedor utiliza o nome DBDEMOS dentro do Delphi, porm
o diretrio pode ser alterado no BDE sem maiores problemas. O Alias uma string
que define o path e configuraes para acesso ao banco de dados.
7/28/2019 Apostila Delphi Radstudio 2007
52/113
56
Figura 50 Borland DataBase Engine
Para criar um alias:
Clique no menu Object e escolha New. (CTRL+N).
Confirme o tipo de driver;
Defina um nome para o Alias (lado esquerdo).
Defina opath atravs do boto reticncias.
Clique no menu Object e escolha Apply, para confirmar as alteraes.
Confirme a gravao.
Note que j janela de ferramentas ( tool palette), h uma rea especfica para
componentes que acessam o banco de dados atravs do BDE.
16.5 COMPONENTE ADO - ACTIVEX DATA OBJECTS
Uma outra forma de fazer com que sua aplicao possa acessar um banco de dados
atravs de componentes ADO, que permite o acesso direto ao banco de dados
sem a utilizao do BDE.
Abaixo temos um pequeno aplicativo que acessa um banco de dados SQL utilizando
o componente ADO que no Delphi 2007 encontra-se na paleta dbGO.
7/28/2019 Apostila Delphi Radstudio 2007
53/113
57
Figura 51 Paleta dbGo
Como o objetivo do exemplo mostrar a funcionalidade dos componentes ADO,
ser utilizado apenas um formulrio, um dbgrid e um DataSet, componentes estes j
conhecidos de captulos anteriores. Utilizaremos os seguintes componentes da
paleta dbGo: TAdoConnection; TAdoTable.
TAdoConnection: Permite a conexo da aplicao diretamente com o banco de
dados.
TAdoTable : utilizado para acessar as tabelas do banco de dados.
Figura 52 Componentes Ado
Selecione o componente AdoConnection1 e clique no boto ... da propriedade
connectionstring na Object Inspector e aparecer aseguinte tela:
7/28/2019 Apostila Delphi Radstudio 2007
54/113
58
Figura 53 Criando Conexo Ado
A propriedade connectionstring utilizada para informar ao Delphi todas as diretivas
que sero utilizadas pelo banco de dados. Para definirmos a string de conexo,
clique no boto Build... e aparecer a seguinte tela:
Figura 54 Escolhendo tipo de Base de Dados
A janela acima se refere ao link de dados que ser utilizado pela aplicao. Existem
diversos Links de Dados conforme mostrado na figura acima.
O link de dados que utilizaremos para este exemplo o Microsoft OLE DB Provider
for SQL Server, que permite a conexo da aplicao com dados do banco SQL
Server. Em seguida clique no boto next >>
7/28/2019 Apostila Delphi Radstudio 2007
55/113
59
Figura 55 Selecionando Servidor
Na guia Connection, ser especificado no item 1 o nome do servidor de dados onde
est instalado o SQL. No item 2, ser especificado as informaes sobre o tipo de
logon que ser realizado no BD, caso o BD tenha uma senha de acesso definida
necessrio informar o nome do usurio e o senha de acesso, caso contrrio
possvel realizar o acesso ao banco apenas utilizando a integridade de segurana doServidor.
Figura 56Selecionando Usurio
O item 3, ser selecionado especificamente qual o bando de dados que voc ir
acessar.
7/28/2019 Apostila Delphi Radstudio 2007
56/113
60
possvel ainda verificar se as configuraes realizadas foram bem sucedidas
atravs do boto Test Connection e em seguida clique OK.
Figura 57 Exibio dos Dados da Tabela
Note que em nenhum momento foi feito a utilizao do BDE.
possvel ainda utilizar os componentes ADO juntamente com drivers ODBC, que
permite voc acessar outros tipos de bancos de dados.
17 APLICAO DE BANCO DE DADOS
Para aplicarmos tudo o que vimos at agora vamos desenvolver um pequeno projeto
de banco de dados aplicando todos os passos bsicos de desenvolvimento desde a
construo das tabelas at a gerao de relatrios.
Primeiramente vamos criar a estrutura de banco de dados abaixo utilizando o
InterBase e em seguida criar um Alias apontando para o banco.
SetorSetor_ID: INTEGER
Descricao: VARCHAR(100)
Local: VARCHAR(25)
Funcionario
Matricula: CHAR(18)
Nome: VARCHAR(100)
Sexo: CHAR(1)
Endereco: VARCHAR(150)
Email: VARCHAR(150)
Cidade: VARCHAR(50)
Estado: VARCHAR(25)
Salario: FLOAT
Setor_ID: INTEGER (FK)
DependenteDependente_ID: INTEGER
Matricula: CHAR(18) (FK)
Nome: VARCHAR(100)
Sexo: CHAR(1)
GrauParentesco: VARCHAR(20)
Figura 58 Esquema de Banco de Dados 1
7/28/2019 Apostila Delphi Radstudio 2007
57/113
61
Aps a estrutura de bando de dados criada, o passo seguinte abrir o Delphi 2007 e
solicitar uma Nova aplicao clicando no menu File|New|VCL Forms Applications
Delphi for Win32 e salve-a dentro de uma pasta empresa, sendo a unit com o nome
ufrmPrincipal e o projeto com o nome de Empresa.
No formulrio principal, adicione o componente MainMenu com os seguintes itens:
Figura 59 Menu de Opes
17.1 DATA MODULE
A definio dos componentes de acesso aos dados ser centralizada em um
formulrio especial chamado Data Modu le. Este formulrio tem uma caracterstica
bem especfica: um form invisvel e s recebe componentes invisveis, ou seja, o
usurio nem vai imaginar que o DataModule e os componentes que ele recebe esto
na aplicao. A sua finalidade centralizar os componentes para que qualquer
formulrio possa ter acesso aos dados, sem a necessidade de repetir oscomponentes de acesso em cada formulrio. Para criar formulrio DataModule,
clique em File|New|Other|Delphi Files.
Figura 60 Adicionando Novo Item
7/28/2019 Apostila Delphi Radstudio 2007
58/113
62
Salve o novo formulrio com o nome de UFrmDmEmpresa e insira trs
componentes: um DataBase, Table ( Paleta BDE ) e DataSource (Paleta
DataAccess).
Figura 61 DataModule
Configure as propriedades como abaixo:
Object DataBase : TDataBase;Connected : False;Name : ConexaoAliasName: EmpresaDataBaseName: dbEmpresa;
Object Table : TTable;DataBaseName: tbEmpresa;TableName: Setor;Name: tbSetor;
Object DataSource: TDataSource;Name: dsSetor;DataSet: tbSetor;
17.2 FORMULRIO DE CADASTRO DE SETOR
Adicione um novo formulrio a aplicao e insira 2 componentes Panel, onde um
ter alinhamento na parte inferior (alBottom) e outro na rea cliente (alClient).
Salve o formulrio com o nome FrmCadSetor e a propriedade name do form ser
FrmCadSetor.
Uma caracterstica importante na construo de aplicaes utilizando banco de
dados a possibilidade de trabalharmos com campos TFIELD exemplificados
anteriormente, ou seja, campos que so considerados como objetos dentro da
aplicao, sendo assim estes campos possuem propriedades e eventos individuais
atravs da object inspector ou por atribuies manipulando cdigo.
Vamos explorar um pouco mais da funcionalidade deste recurso. Campos TFIELD
so chamados de campos persistentes e sua criao extremamente simples.
7/28/2019 Apostila Delphi Radstudio 2007
59/113
63
No DataModule, localize o objeto Table referente tabela desejada.
Um duplo clique no objeto Table, exibir a janela de manipulao dos
campos
Um clique dentro da janela com o boto direito exibir o speed menu.
Escolha a opo Add All Fields.
Figura 62 Field Editor
Aps a criao dos campos persistentes, pode-se selecion-lo e verificar
propriedades especficas na Object Inspector. As propriedades sero diferentes
dependendo do tipo de dados do campo, neste exemplo um tipo TStringField.
Figura 63 Exibindo Propriedades do campo TField
7/28/2019 Apostila Delphi Radstudio 2007
60/113
64
Mas o melhor est para vir. Posicione a janela dos campos persistentes em um lado
da tela e com o formulrio FrmCadSetor (criado anteriormente) visvel, selecione os
campos e arraste-os para dentro do Form. Uma pergunta do tipo:
Figura 64 Confirmao de Referncia entre Formulrios
Ser exibida. Confirme com Yes, ou seja, o Delphi est questionando se no
formulrio FrmCadSetor deve haver uma referncia ao formulrio DmEmpresa
(DataModule). Ao confirmar o Delphi adiciona uma referncia no Code Editor da
unidade UFrmCadSetorna seguinte estrutura:
implementation
uses UDMEmpresa;
Pode-se fechar o editor de campos persistentes. Uma diferena visual que temdestaque agora so os controles de manipulao de dados que foram inseridos
automaticamente pelo Delphi.
Figura 65 Tela de cadastro Verso 1
Embora se paream com um componente j visto anteriormente (Edit) estes
componentes so provenientes da paleta Data Controls e tem o nome de DBEdit, ou
seja, um controle especfico para manipulao de dados provenientes de um banco
7/28/2019 Apostila Delphi Radstudio 2007
61/113
65
de dados. J nos referimos a estes controles nos primeiros exemplos do captulo
anterior.
DBEdit
DataSource Permite conectar o controle fonte de dados.
DataField Permite especificar um campo da tabela referenciada em DataSource.
Insira um componente DBNavigatore modifique suas propriedades:
objectDBNavigator1: TDBNavigatorDataSource = DmEmpresa.DsSetorVisibleButtons = [nbFirst, nbPrior, nbNext, nbLast]
en d
Insira seis componentes BitBtn, e configure apenas as propriedades Name, Captione Glyph. Uma sugesto visual pode ser vista a seguir:
Figura 66 Tela de Cadastro Finalizada
17.3 MTODOS E PROPRIEDADES PARA MANIPULAO DE DADOS
Para percorreros registros de uma tabela podemos utilizar os seguintes mtodos:
First Move o cursor para o primeiro registro do dataset.Prior Move o cursor para o registro anterior (se houver).Next Move o cursor para o prximo registro (se houver).Last Move o cursor para o ltimo registro do dataset.MoveBy(N) Move o cursor para frente ou para trs, conforme o valor do parmetro N, que
um valor inteiro, positivo ou negativo.
Para controlaro incio e fim da tabela podemos utilizar aspropriedades:
BOF : Boolean Begin Of File. Indica True se o cursor estiver no primeiro registro da tabela.EOF : Boolean End Of File. Indica True se o cursor estiver no ltimo registro da tabela.
7/28/2019 Apostila Delphi Radstudio 2007
62/113
66
Por exemplo:
Table1.First;While notTable1.EOFdobegincomando1;
comando2;...Table1.Next;
end;
Um incoveniente com relao ao cdigo acima que os controles data-aware (data
controls) sero atualizados no monitor medida que o mtodo Next percorre a
tabela, gerando uma visualizao indesejada e perda de tempo com a sua
atualizao.
Neste caso, pode-se utilizar os mtodos DisableControls e EnableControls.
Table1.DisableControls;t ryTable1.First;whi le notTable1.EOFdobegincomando1;comando2;
...Table1.Next;end;finallyTable1.EnableControls;end;
Em nosso exemplo atual, no formulrio de Cadastro de Setores, os cdigos para
percorrer o dataset foram implementados de maneira automtica atravs do
componente DBNavigator. Porm nada impede a criao de botes independentes
e a definio de handlers de controle para navegao retirando o DBNavigator.
Para alterar(editar) os valores de um datasetpodemos utilizar o seguinte mtodo:
Edit Permite editar o data set para alterao dos valores atuais para novos valores.
Exemplo:
Table1.Edit;
Para inserirum novo registro em um datasetpodemos utilizar dois mtodos:
7/28/2019 Apostila Delphi Radstudio 2007
63/113
67
Append Cria um novo registro aps o ltimo registro do dataset.Insert Cria um novo registro aps o registro corrente.
Exemplo:
Table1.Append;
Ou
Table1.Insert;
Para removerum registro em um datasetpodemos utilizar o mtodo:
Delete Remove o registro corrente.
Exemplo:
i fMessageDLG(Est certo disto?!,mtConfirmation,[mbYes,mbNo],0) = mrYes
thenTable1.Delete;
Para confirmar(gravar) as alteraes no datasetpodemos utilizar o mtodo:
Post Confirma as alteraes em um dataset.
Exemplo:
Table1.Append;...Table1.Post;
Table1.Edit;...Table1.Post;
Para acessar o valor em um campo atravs de TField podemos utilizar a
propriedade Fields ou o mtodo FieldByName.
Fields Faz referncia a um campo especfico atravs de um array.FieldByName Faz referncia a um campo atravs de seu nome.
Para cancelar algum comando enviado ao banco de dados, utiliza-se o mtodo
cancel.
Cancel Confirma as alteraes em um dataset.
Exemplo:Table1.Append;...
Table1.Edit;...
7/28/2019 Apostila Delphi Radstudio 2007
64/113
68Table1.Cancel; Table1.Cancel;
17.4 OS ESTADOS DE UM DATASET
Os datasets trabalham com estados. Em cada estado uma determinada operao
pode ser vlida, outras no. A manipulao do dataset atravs de mtodos efunes agem nestes estados em todo o tempo provocando mudanas.
Uma viso geral sobre os estados de um datasetpode ser vista a seguir:
Figura 67 Estado de um DataSet
Vamos utilizar no formulrio FrmCadSetora prtica deste conceito. Antes,
troque o DBEdit1 referente ao cdigo para um componente DBText configure
as propriedades DataSource para a tabela Setor e DataFieldpara o campo
Setor_ID.
O BitBtn referente sada do form pode ter sua propriedade Cancel
verdadeira.
O BitBtn referente confirmao das operaes pode ter sua propriedade
Defaultverdadeira e a propriedade Enabledcomo falso.
O BitBtn referente ao cancelamento das operaes pode ter sua propriedade
Enabledcomo falso.
Edit
Browse
Inativo
Insert
Insert
Append
Post
Cancel
Close Open
EditCancel
Post
7/28/2019 Apostila Delphi Radstudio 2007
65/113
69
Figura 68 Cadastrando Setor
unit uFrmCadSetor;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, Buttons, DBCtrls, Mask, ExtCtrls,DB;
typeTFrmCadSetor = class(TForm){Para criar o procedimento TrataBotoes, digite sua declarao(sem TFrmCadSetor) na clusula Type e utilize CTRL+SHIFT+CPara todos os demais, selecione o objeto e utilize a object inspector}procedure TrataBotao;
private{ Private declarations }
public{ Public declarations }
end;varFrmCadSetor: TFrmCadSetor;
implementationuses uFrmDmEmpresa;{$R *.dfm}
procedure TFrmCadSetor.bbtCancelarClick(Sender: TObject);beginDMEmpresa.tbSetor.Cancel;TrataBotao;
end;
procedure TFrmCadSetor.bbtConfirmarClick(Sender: TObject);beginDMEmpresa.tbSetor.Post;TrataBotao
end;
procedure TFrmCadSetor.bbtEditarClick(Sender: TObject);beginDMEmpresa.tbSetor.Edit;TrataBotao
end;
procedure TFrmCadSetor.bbtIncluirClick(Sender: TObject);Var ProxNum : Integer;beginTrataBotao;
7/28/2019 Apostila Delphi Radstudio 2007
66/113
70
DMEmpresa.tbSetor.Last;ProxNum := DMEmpresa.tbSetor.FieldByName('Setor_ID').AsInteger + 1;DMEmpresa.tbSetor.Append;DMEmpresa.tbSetor.FieldByName('Setor_ID').AsInteger := ProxNum;DBEdit2.SetFocus;
end;
procedure TFrmCadSetor.bbtRemoverClick(Sender: TObject);
beginif DMEmpresa.tbSetor.RecordCount 0 Then Beginif MessageDlg('Deseja excluir este registro?',mtConfirmation,[mbYes,mbNo],0) = mryes thenDMEmpresa.tbSetor.Delete
EndElseMessageDlg('No h registro a ser excludo.',mtInformation,[mbok],0);
end;
procedure TFrmCadSetor.bbtSairClick(Sender: TObject);beginFrmCadSetor.Close;
end;
procedure TFrmCadSetor.FormCloseQuery(Sender: TObject; var CanClose: Boolean);beginif DMEmpresa.tbSetor.State IN [DSEDIT,DSINSERT] thenif MessageDlg('Existem Dados Pendentes.'+ #13 + 'Deseja salv-lo?',mtConfirmation,
[mbYes,mbNo],0) = mryes thenCanClose := False
else beginDMEmpresa.tbSetor.Cancel;TrataBotao;CanClose := True;
end;end;
procedure TFrmCadSetor.TrataBotao;beginbbtIncluir.Enabled := not bbtIncluir.Enabled;BbtEditar.Enabled := not BbtEditar.Enabled;BbtRemover.Enabled := not BbtRemover.Enabled;BbtCancelar.Enabled := not BbtCancelar.Enabled;BbtConfirmar.Enabled := not BbtConfirmar.Enabled;BbtSair.Enabled := not BbtSair.Enabled;
end;end.
17.5 FORMULRIO DE CADASTRO DE FUNCIONRIO
FrmCadFunc ionar io
Vamos iniciar a construo do formulrio de Cadastro de Funcionrio.
No menu File escolha o comando New | Form Delphi for Win32.
Grave este novo formulrio com o nome de: UFrmCadFuncionario A propriedade Name do form dever serFrmCadFuncionario
7/28/2019 Apostila Delphi Radstudio 2007
67/113
71
Chame o DataModule. Crie os campos persistentes (TFields) para a tabela
Funcionrio. Arraste-os para dentro do formulrio. Confirme o dilogo (YES) sobre
usar o DataModule e posicione os objetos em uma seqncia sua escolha. Uma
sugesto pode ser vista a seguir:
Figura 69 Tela de Cadastro de Funcionario
Associe o componente o componente DBText1 tabela atravs da propriedade
DataSource apontando para a tabela Funcionario e DataField apontando para ocampo Matricula.
Associe o componente DBNavigator tabela Funcionrio atravs da propriedade
DataSource.
Implemente os handlers de cada boto conforme o raciocnio do formulrio anterior.
Vamos definir outros componentes e caractersticas que no formulrio anterior no
existiam.
Por exemplo, o campo Sexo foi definido na tabela como uma String de um caracter.Podemos evitar que o usurio entre com uma string diferente de M ou F por
exemplo, este raciocnio pode ser feito via cdigo ou via componente.
Vamos optar pela segunda opo por uma srie de vantagens.
Insira um componente DBRadioGroup no formulrio e no se preocupe com o
alinhamento (por enquanto).
Modifique as propriedades do componente:
objectDBRadioGroup1: TDBRadioGroupCaption = 'Sexo'Columns = 2DataSource = DmEmpresa.DsFuncionario
7/28/2019 Apostila Delphi Radstudio 2007
68/113
72DataField = 'Sexo'Items.Strings =
MascFem
Values.Strings =FM
en d
Columns Define em quantas colunas os dados da propriedade items sero ordenados.Items Define os itens a serem exibidos no componente.Values Define os valores a serem armazenados na tabela.
Pode-se excluir o DBEdit responsvel pelo campo Sexo e alinhar o DBRadioGroup
em seu lugar.
Um outro componente que pode exibir um conjunto de
Top Related