Apostila Delphi Radstudio 2007

Embed Size (px)

Citation preview

  • 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