279
Faculdade 7 de Setembro – Sistemas de informaçã0 – N.E.O. INTRODUÇÃO AO DESENVOLVIMENTO DE APLICATIVOS COM INTERFACE GRÁFICA [email protected] – 2011.2

Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Embed Size (px)

Citation preview

Page 1: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Faculdade 7 de Setembro – Sistemas de informaçã0 – N.E.O.

INTRODUÇÃO AO DESENVOLVIMENTO DE

APLICATIVOS COM INTERFACE GRÁFICA

[email protected] – 2011.2

Page 2: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Objetivos são importantes!

“O que vale na vida não é o ponto de partida e sim a caminhada. Caminhando e semeando, no fim terás o que colher”.

Cora Carolina

Page 3: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

ObjetivosDesenvolver aplicativos com interface gráfica;

Programação Orientada a Objetos (P.O.O.);

Interface de Desenvolvimento (I.D.E.);

Banco de dados;

Compilação final;

Instalador.

Page 4: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Interface de desenvolvimento

Page 5: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Interface de desenvolvimento

LAZARUS

Page 6: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Programação Orientada a Objetos

P.O.O.

Classe

Atributos

Métodos

Objetos Mensagens

Construtor

Herança

Polimorfismo

Page 7: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

“Meu Primeiro Programa”

“Meu Segundo Programa”

Calculadora Simples

Editor de texto

Cadastro de Clientes

Aplicativos gráficos

Page 10: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Reduzir o tamanho dos executáveis por meio de uma compilação otimizada;

Compilação

Page 11: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Criar um instalador para os aplicativos usando o Inno Setup Compiler;

Instalação

Page 12: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Sucesso

SQLite

Lazarus

P.O.O.

Resumo

Page 13: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

O que é o Lazarus?IDE de código aberto;

Utiliza o compilador Free Pascal;

É um clone do Delphi;

É compatível com vários sistemas operacionais;

O mesmo código pode ser compilado em qualquer plataforma.

Page 14: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Simplicidade;

Didática;

O que se aprende no Lazarus é aplicado em qualquer outra IDE;

O projeto iniciou em 1998 e cresce cada vez mais;

LGLP.

Por que utilizar o Lazarus?

Page 15: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Comparando as IDEs

Page 16: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02
Page 17: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02
Page 18: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02
Page 19: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02
Page 20: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02
Page 21: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02
Page 22: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02
Page 23: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02
Page 24: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

O conhecimeto adiquirido durante o curso é independente da I.D.E. que você utilize no futuro!

Conclusão

Page 25: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Vá ao site http://www.lazarus.freepascal.org/ e clique em “Download”;

Selecione o arquivo adequado, dependendo de seu sistema operacional;

É recomendado que, mesmo utilizando o Windows 64 bits, baixar o Lazarus 32 bits;

A versão que utilizaremos será a Lazarus 0.9.30 Win 32 (arquivo de 76.2 megas).

Instalando o Lazarus

Page 26: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

A instalação é bastante intuitiva;

Não há necessidade de nenhuma customização na instalação;

Fica a gosto de cada um alterar o diretório onde os arquivos serão instalados, criar ou não um atalho no desktop e criar ou não uma pasta no menu iniciar, dentre outros detalhes.

Instalando o Lazarus

Page 27: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Antes de começar a utilizar o Lazarus, é necessário realizar uma configuração;

O debugger do Lazarus possui um problema em determinadas máquinas. Esse problema surgiu em uma determinada versão e ainda está sendo analisado pelos desenvolvedores;

Há uma forma de se resolver esse problema, entretanto é mais fácil simplesmente desabilitar o debugger.

Desabilitando o Debugger

Page 28: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Como o escopo de nosso curso é bastante limitado e não utilizaremos o recurso de debugger, não haverá perdas se o desabilitarmos;

Para isso, clique em “Environment”, em seguida em “Options”;

Procure a aba “Debugger” e a selecione;

Na opção “Debugger Type and path” selecione “none”;

Clique em “OK”. Pronto, o Debugger está desabilitado.

Desabilitando o Debugger

Page 29: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02
Page 30: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02
Page 31: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02
Page 32: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02
Page 33: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02
Page 34: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Programação Orientada a Objetos

Aproximar o mundo real do mundo virtual;

Simular o mundo real dentro do computador;

Para isso, utiliza-se Objetos;

O programador descreve os Objetos por meio das Classes.

Page 35: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

ClasseÉ a definição de um tipo de objeto;

É dividido em duas partes: atributos e métodos;

Atributos são as características básicas dos objetos (são dados);

Métodos são as ações básicas que os objetos podem realizar (são funções com ou sem retorno).

Page 36: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

O homo sapiens sapiensO homo sapiens sapiens é uma classe;Possui seus atributos:

Nome;Idade;Altura;Peso;Etc.

Possui seus métodos:Andar;Correr;Saltar;Etc.

Page 37: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Classes Vs. Objetos A classe é uma definição;

Objeto é um ente definido por uma classe;

O “homo sapiens sapiens” é uma classe que possui os atributos (características) e métodos (ações) definidos anteriormente;

Eu, você e sua mãe somos objetos da classe “homo sapiens sapiens”.

Page 38: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Mais um exemploCachorro é uma classe;Possui seus atributos:

Nome;Raça;Idade;Peso;Etc.

Possui seus métodos:Senta;Late;Finge De Morto;Etc.

Page 39: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Bilu é um objeto da classe Cachorro;

Rex é outro objeto da classe Cachorro;

Scooby é outro objeto da classe cachorro.

Mais um exemplo

Page 40: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Como vimos, as classes possuem atributos e métodos;

Os atributos são variáveis que estão dentro de cada um dos objetos da classe em questão. Podem ser de qualquer tipo (float, int, char, bool etc);

Os métodos são as funções que cada um dos objetos da classe em questão pode executar. Podem ter retorno de qualquer tipo ou ser do tipo void.

Criação de classes

Page 41: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Estrutura da Classe em C++

Class NomeDaClasse {Private:

(Atributos);Public:

(Métodos);};

Page 42: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Para declarar (instanciar) um objeto, basta colocar um identificador depois do nome da classe;

É semelhante a declaração de uma variável;

Exemplos:HomoSapiensSapiens Artur;HomoSapiensSapiens Luana;Cachorro Bilu, Rex, Scooby;NomeDaClasse Obj1, Obj2;

Declaração de objetos

Page 43: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

MensagensUma mensagem é um texto que o objeto consegue

entender;

Dependendo da mensagem o objeto realiza uma ação específica;

Envia-se uma mensagem a um objeto pelo operador ponto (.);

Por exemplo: Artur.Andar; Artur.Idade = ‘24’; Rex.Senta; Scooby.Late;

Page 44: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

P.O.O. na prática

Quais atributos e métodos um classe carro possui?

Page 45: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Carro

Carro.txt

Page 46: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

ExercíciosDe forma análoga ao exemplo do carro,

estabeleça a classe cachorro e instancie quantos objetos quiser.

Page 47: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Características básicas do desenvolvimento de aplicativos gráficos

Desenha-se as janelas do programa;

Utiliza-se componentes básicos para isso;

Cada componente inserido na janela é um objeto;

Cada objeto possui atributos (propriedades), métodos e respondem a mensagens;

As mensagens são os eventos que cada componente pode responder, realizando um procedimento associado.

Page 48: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Elementos básicosElemento Descrição

Form (Formulário) É uma janela do programa. É onde os componentes são agrupados, formando a Interface gráfica do usuário (G.U.I.).

Unit (Unidade) É o lugar onde fica o código em Object Pascal. Cada Form possui uma Unit.

Components (Componentes) Objetos utilizados para compor a G.U.I.

Properties (Propriedades) São os atributos de cada componente.

Método Procedimento (Procedure) ou Função (Function) de cada objeto.

Events (Eventos) Resposta dos componentes aos estímulos.

Estímulos Um click, um duplo click, abrir ou fechar uma janela.

Project (Projeto) Conjunto de formulários, componentes e unidades que formam um aplicativo.

Page 49: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Conhecendo a I.D.E.Quando iniciamos o Lazarus, a tela inicial

é parecida com a figura a seguir;

Os elementos básicos são:Janela superior;Object Inspector;Form1;Unit1;Messages.

Page 50: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02
Page 51: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

A janela superior se divide em:Barra de menu principal (Main Menu);

Arquivo, Editar etc.Barra de ferramentas rápidas (Speed Bar);

Abrir, Salvar etc.Paleta de componentes;

Base da programação visual!

Janela superior

Page 52: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Object InspectorEncontra-se abaixo da Speed

Bar;

A parte superior serve para visualizar e acessar todos os componentes do formulário selecionado;

A parte inferior serve para visualizar e alterar as propriedades e eventos do componente selecionado do formulário em questão.

Page 53: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Formulários e Units

Encontram-se abaixo da paleta de componentes;Forms são as janelas que estão sendo construídas;Units são os códigos programáveis das janelas;Cada Form tem possui uma Unit exclusiva.

Page 54: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

A janela “Messages” proporciona informações gerais para o programador, tais como erros de sintaxe.

Messages

Page 55: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Componentes básicos

Page 56: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Componentes de banco de dados

Lembre-se: Cada componente é um objeto!

Page 57: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Propriedade Descrição

Align Determina o alinhamento do componente em relação ao formulário.

Caption Legenda do componente. Usa-se & antes da letra para se criar um atalho.

Enabled Define se o componente está ativado.

Font Define a fonte utilizada pelo componente.

Height Define a altura.

Hint Dica sobre o componente.

Propriedades ComunsLembrando que propriedades são os atributos!

Page 58: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Propriedade Descrição

Name Nome do componente. Define o identificador do objeto. É gerado um nome automaticamente, porém é recomendado utilizar nomes mais adequados, definidos pelo usuário. O código gerado automaticamente na Unit é atualizado quando mudamos essa propriedade de um componente.

PopupMenu Menu de contexto do componente.

ShowHint Define se a dica será mostrada.

Width Define a largura do componente.

Propriedades ComunsLembrando que propriedades são os atributos!

Page 59: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Método Descrição

Show O componente fica visível.

Hide O componente fica invisível.

SetFocus O componente fica no foco.

SetColor(p: tcolor) O componente muda de cor.

Métodos ComunsLembrando que métodos são as ações!

Page 60: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

EventosEventos são ações programadas que ocorrem quando

determinada manifestação acontece;

Entende-se por manifestação: Um click, um duplo-click, fechar uma janela, abrir uma janela, mudança em um componente etc.;

Por exemplo: Quando o usuário clica em um botão, o Windows envia uma mensagem para a aplicação informando a ocorrência do click e em qual região ocorreu. Dependendo de qual botão foi clicado, a aplicação executa uma ação anteriormente programada;

Ou seja, dado um evento, uma ação é executada;

Eventos podem ser compartilhados entre os componentes.

Page 61: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

EventosResumidamente:

Um evento é aquilo que o programa faz quando algo acontece.

Page 62: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Eventos comuns

Evento Descrição

OnChange É acionado quando o conteúdo do componente é alterado.

OnClick É acionado quando o componente é clicado.

OnDblClick É acionado quando o componente é clicado duas vezes.

OnEnter É acionado quando o componente entra no foco.

OnExit É acionado quando o componente sai do foco.

Page 63: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

JanelasOs aplicativos gráficos são compostos por pelo

menos uma janela. Ela é o elemento básico desse tipo de aplicativo;

É na janela que os componentes serão inseridos;

As janelas são objetos da classe TForm;

É importante conhecer as principais propriedades, métodos e eventos dessa classe.

Page 64: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Propriedades principais dos Forms

Propriedade Descrição

BorderIcons Quais botões vão aparecer na barra de título (minimizar, maximizar etc).

BorderStyle Define o estilo da borda.

Icon Define o ícone da janela.

Menu Define o menu da janela.

WindowState Maximizado, minimizado ou normal.

Position Define a posição da janela na área de trabalho.

As propriedades comuns vistas anteriormente estão presentes no formulário.

Page 65: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Métodos principais dos Forms

Método Descrição

Show Abre o formulário.

Close Fecha o formulário.

Cascade Os formulários são organizados em “cascata”.

Tile Os formulários são organizados lado a lado.

Os métodos comuns vistos anteriormente estão presentes no formulário.

Page 66: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Eventos principais dos FormsCom exceção do OnEnter e OnExit, os eventos comuns

vistos anteriormente estão presentes no formulário.

Evento Descrição

OnShow É acionado quando a janela é aberta.

OnClose É acionado quando a janela é fechada.

OnActive É acionado quando a janela recebe o foco.

OnDeactive É acionado quando a janela perde o foco.

OnResize É acionado quando a janela muda de tamanho.

Page 67: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

É interessante conhecer as propriedades e métodos de alguns dos componentes que utilizaremos;

Vale lembrar que a melhor forma de aprender esse conteúdo é aliando a teoria, a prática e o tempo;

Não tente aprender tudo de uma vez. Desenvolva seu conhecimento lentamente, mas com qualidade.

Descrição dos principais componentes

Page 68: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

TbuttonA forma mais simples de botão;

TBitBtnBotão com uma figura.

Descrição dos principais componentes

Propriedade

Descrição

Glyph Figura do botão.

LayOut Posição da figura.

Margin Espaço entre a borda e a figura.

Spacing Espaço entre o texto e a figura.

Kind Seleciona estilo do botão, alterando várias propriedades (Botão OK, Cancelar etc).

Page 69: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

TSpeedButtonBotão com figura, utilizado em barras de

ferramentas.

Descrição dos principais componentes

Propriedade

Descrição

Down Indica se o botão está pressionado ou não.

GroupIndex Agrupa os botões em conjuntos.

AllowAllUp Indica se todos os botões de um grupo podem ficar não pressionados.

Page 70: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

TlabelUtilizado para rotulagem.

Descrição dos principais componentes

Propriedade

Descrição

Alignment Alinhamento do texto do label.

AutoSize Indica se o tamanho do componente será do mesmo tamanho do Caption.

Caption Conteudo do Label.

Page 71: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

TEditLinha para entrada de texto.

Descrição dos principais componentes

Propriedade

Descrição

Text Conteudo do Edit.

MaxLength Número máximo de caracteres.

PasswordChar

Indica se o Edit receberá uma senha e deve exibir asteriscos.

Método Descrição

Clear Limpa o conteúdo armazenado na propriedade Text.

Page 72: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

TMemoCaixa de texto com várias linhas.

Descrição dos principais componentes

Propriedade

Descrição

Lines Conteudo do Tmemo. É onde as linhas de texto são armazenadas.

ScrollBar Define qual tipo de barras de rolagem será apresentada.

Page 73: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

TCheckBoxCaixa de checagem;

Descrição dos principais componentes

Propriedade

Descrição

Checked Determina se o componente está marcado.

State Estado atual do Checkbox.

TRadioButtonUtilizado para se obter informação de

situação em que as opções são exclusivas. Por exemplo: Masculino ou Feminino?

Page 74: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

TRadioGroupUtilizado para agrupar e controlar

RadioButtons.

Descrição dos principais componentes

Propriedade

Descrição

Columns Número de colunas.

Items Lista das opções. Cada item é uma String e representa um RadioButton.

ItemIndex Número inteiro, iniciando em zero, que indica qual das opções foi selecionado.

Page 75: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

TPanelPainel utilizado para agrupar componentes em uma

região.

Descrição dos principais componentes

Propriedade

Descrição

BevelInner Estilo da moldura interna.

BevelOuter Estilo da moldura externa.

BevelWidth Largura das molduras interna e externa.

BorderStyle Estilo da borta.

BorderWidth

Largura da borda.

Page 76: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

TComboBoxLista suspensa onde se escolhe uma opção.

Descrição dos principais componentes

Propriedade Descrição

Items Lista das opções. Cada item é uma String e representa uma opção.

DropDownCount

Número de itens visualizáveis por vez.

Style Estilo de formatação do ComboBox. Os mais utilizados são csDropDown e csDropDownList.

Page 77: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

TImageUtilizado para exibir figuras.

Descrição dos principais componentes

Propriedade Descrição

Center Indica se a figura será centralizada no componente.

Picture Figura mostrada.

Stretch Indica se o tamanho da figura será ajustada ao tamanho do componente.

Page 78: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

TOpenDialog/TSaveDialogCaixas de diálogo para abrir e salvar arquivos.

Descrição dos principais componentes

Propriedade Descrição

FileName Nome do arquivo com caminho completo (C:\pasta\texto.txt).

DefaultExt Extensão padrão dos arquivos abertos/salvos.

Filter Filtro dos tipos de arquivos abertos/salvos.

Title Título da caixa de diálogo.

Options Configurações mais específicas.

Método Descrição

Execute Exibe a caixa de diálogo, retornando True caso o usuário clique em uma opção afirmativa (OK, Salvar etc).

Page 79: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

TMainMenuMenu principal;

Descrição dos principais componentes

Propriedade Descrição

Items Itens do menu. É aqui onde o menu é construído.

TPopUpMenu Menu contextual, acessado pelo botão direito do

mouse. Cada componente tem a propriedade “PopUpMenu”, onde o programador faz a ligação entre o componente e o menu de contexto.

Propriedade Descrição

Items Itens do menu contextual.

Page 80: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

TMenuItemElemento constituinte de um menu principal

ou contextual.

Descrição dos principais componentes

Propriedade Descrição

Checked Indica se o item está marcado ou não.

GroupIndex Índice do grupo, assim como no SpeedButton.

RadioGroup Indica se somente um item do grupo pode ser marcado.

ShortCut Tecla de atalho utilizando o teclado.

Hint Dica que aparece quando se posiciona o mouse sobre o ítem.

ShowHint Indica se a dica será mostrada ou não.

Page 81: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Crie um diretório para agrupar seus projetos;

Crie uma pasta para cada aplicativo a ser desenvolvido para armazenar os formulários, unidades, ícones etc;

Com isso, seus programas ficarão organizados;

Para iniciar um novo projeto, clique em File -> New... -> Project -> Application;

É interessante alterar o ícone e título dos seus programas. Para isso, basta ir em Project -> Project Options e fazer as mudanças.

Dica valiosa

Page 82: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

1º ProgramaNosso primeiro aplicativo será algo bastante

simples. O objetivo é ter um primeiro contato com o desenvolvimento de aplicativos gráficos.

Page 83: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

1º Programa

Abra o Lazarus e altere as seguintes propriedades no formulário:

Propriedade Valor

BorderStyle bsDialog

Caption Meu primeiro programa

Height 130

Name JanelaPrincipal

Position poDesktopCenter

Width 250

Page 84: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

1º Programa

Salve o arquivo;Para o nome do projeto, coloque “MPP”;Para o nome da Unit, coloque

“u_JanelaPrincipal”;

Coloque um Label e o modifique da seguinte forma:

Propriedade Valor

Name Rotulo

Caption Digite Aqui!

Page 85: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

1º Programa

Coloque um Edit e o modifique da seguinte forma:

Propriedade Valor

Name CaixaTexto

Text Em branco

Width 220

Coloque um Botão e o modifique da seguinte forma:

Propriedade Valor

Name Botao

Caption Clique aqui

Page 86: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

1º Programa

Selecione o botão e clique na aba Eventos do Inspetor de Objetos. Localize o evento OnClick e digite o seguinte código : Rotulo.Caption := CaixaTexto.Text;

Com isso, quando o usuário clicar no botão, o conteúdo que estiver digitado no Edit será copiado para o Label.

Page 87: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

1º Programa

Page 88: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

2º ProgramaNosso segundo aplicativo será igualmente simples

ao primeiro projeto. O objetivo é ampliar o contato com o desenvolvimento de aplicativos gráficos por meio da construção de uma “Gangorra Eletrônica”.

Page 89: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

2º Programa

Abra o Lazarus e altere as seguintes propriedades no formulário:

Propriedade Valor

BorderStyle bsDialog

Caption Gangorra Eletrônica

Height 105

Name JanelaPrincipal

Position poDesktopCenter

Width 250

Page 90: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

2º Programa

Salve o arquivo;Para o nome do projeto, coloque “Gangorra”;Para o nome da Unit, coloque

“u_JanelaPrincipal”.

Coloque um Label e o modifique da seguinte forma:

Propriedade Valor

Name Rotulo

Caption Gangorra Eletrônica

Font -> Size 20

Page 91: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Botão

Caption

Name Enabled

1 ON Botao_1 True

2 OFF Botao_2 False

3 Sair Botao_Sair

True

2º Programa

Coloque três botões e os modifique da seguinte forma:

Page 92: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

2º Programa

Selecione o botão 1 e clique na aba Eventos do Inspetor de Objetos. Localize o evento OnClick e digite o seguinte código : Botao_1.Caption := 'OFF'; Botao_1.Enabled := False; Botao_2.Caption := 'ON'; Botao_2.Enabled := True;

Page 93: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

2º Programa

Selecione o botão 2 e clique na aba Eventos do Inspetor de Objetos. Localize o evento OnClick e digite o seguinte código : Botao_2.Caption := 'OFF'; Botao_2.Enabled := False; Botao_1.Caption := 'ON'; Botao_1.Enabled := True;

Page 94: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

2º Programa

Selecione o botão Sair e clique na aba Eventos do Inspetor de Objetos. Localize o evento OnClick e digite o seguinte método: Close;

O evento OnClick de um objeto ocorre quando o mesmo é clicado;

Nesse exemplo, as propriedades Enabled e Caption são alteradas sempre que os evento OnClick dos botões 1 e 2 ocorrem. O programa é fechado quando o evento OnClick do botão 3 é chamado.

Page 95: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

2º Programa

Page 96: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Calculadora

Nosso terceiro aplicativo será uma calculadora.

Page 97: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Calculadora

Abra o Lazarus e altere as seguintes propriedades no formulário:

Propriedade Valor

BordersIcons biMaximize: false | biHelp: false

Border Style bsSingle

Caption Calculadora

Height 300

Name frm_Calculadora

Position poDesktopCenter

Width 250

Page 98: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Calculadora

Salve o arquivo;Para o nome do projeto, coloque

“Calculadora”;Para o nome da Unit, coloque

“u_Calculadora”;

Coloque um Edit e o modifique da seguinte forma:

Propriedade Valor

Name Visor

Alignment taRightJustify

Text 0

Width 235

Page 99: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Calculadora

Colocaremos 16 TButtons. Todos terão as seguintes propriedades:

Propriedade Valor

Height 45

Width 45

Page 100: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Calculadora

10 botões terão as seguintes propriedades:

Name Original

Caption Name

Button1 1 Bt_1

Button2 2 Bt_2

Button3 3 Bt_3

Button4 4 Bt_4

Button5 5 Bt_5

Button6 6 Bt_6

Button7 7 Bt_7

Button8 8 Bt_8

Button9 9 Bt_9

Button10 0 Bt_0

Page 101: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Calculadora

6 botões terão as seguintes propriedades:

Name Original

Caption Name

Button11 + Bt_soma

Button12 - Bt_subtracao

Button13 * Bt_multiplicacao

Button14 / Bt_divisao

Button15 , Bt_virgula

Button16 = Bt_igual

Page 102: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Calculadora

A calculadora deve ter a seguinte aparência:

Page 103: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

CalculadoraCom a janela finalizada, chegou o momento de

desenvolver o código de nossa calculadora;

Declare as seguintes variáveis globais:Valor_1: Real;Valor_2: Real;Total: Real;Operacao: Integer;LimparTela: Boolean;

Essas variáveis devem ser colocadas abaixo da variável frm_Calculadora: Tfrm_Calculadora;

Page 104: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Calculadora No evento OnShow da janela “frm_Calculadora”, coloque o

seguinte código: LimparTela := True;

No evento OnClick de cada botão numérico, coloque o seguinte código:

if LimparTela then Begin Visor.Text := ''; Visor.Text := 'X'; LimparTela := False; endelse Visor.Text := Visor.Text + 'X';

X vai de 0 até 9, dependendo do botão;

Page 105: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Coloque o seguinte código no evento OnClick do botão virgula(,):Visor.Text := Visor.Text + ',';

Com isso, o Visor receberá o valor do botão clicado.

Calculadora

Page 106: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Calculadora

No evento OnClick do botão adição, coloque o seguinte código:

if (Visor.Text <> '') then begin Valor_1 := StrToFloat(Visor.Text); Operacao := 1; LimparTela := True; end;

Page 107: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Calculadora

No evento OnClick do botão subtração, coloque o seguinte código:

if (Visor.Text <> '') then begin Valor_1 := StrToFloat(Visor.Text); Operacao := 2; LimparTela := True; end;

Page 108: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Calculadora

No evento OnClick do botão multiplicação, coloque o seguinte código:

if (Visor.Text <> '') then begin Valor_1 := StrToFloat(Visor.Text); Operacao := 3; LimparTela := True; end;

Page 109: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Calculadora

No evento OnClick do botão divisão, coloque o seguinte código:

if (Visor.Text <> '') then begin Valor_1 := StrToFloat(Visor.Text); Operacao := 4; LimparTela := True; end;

Page 110: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Calculadora

No evento OnClick do botão igual, coloque o seguinte código:

if (Visor.Text <> '') then begin

Valor_2 := StrToFloat(Visor.Text); Case Operacao of 1: Begin Total := Valor_1 + Valor_2; Visor.Text := FloatToStr(Total); end; 2: Begin Total := Valor_1 - Valor_2; Visor.Text := FloatToStr(Total); end;

Page 111: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

3: Begin Total := Valor_1 * Valor_2; Visor.Text := FloatToStr(Total); end; 4: Begin if Valor_2 <> 0 then Begin Total := Valor_1 / Valor_2; Visor.Text := FloatToStr(Total); end else Begin Visor.Text:= 'Erro!'; end; end; end; LimparTela := True;

end;

Calculadora

Page 112: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Calculadora

Page 113: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Editor de textos

Nosso quarto aplicativo será um editor de textos.

Page 114: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Inicie o Lazarus e crie uma nova aplicação;

Mude a propriedade Name do formulário para frmPrincipal;

Mude a propriedade Caption do formulário para Editor de Textos;

Mude a propriedade WindowState do formulário para wsMaximized;

Salve, escolhendo Editor para nome do projeto e u_Principal para nome da Unit.

Editor de textos

Page 115: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um Main Menu ao formulário com a seguinte estrutura: Arquivo

Novo Abrir Salvar ---------- Sair

Editar Recortar Copiar Colar ---------- Alinhamento

Esquerda Centralizado Direita

Formatar Fonte... Fonte... Cor... ---------- Negrito Itálico Sublinhado

Ajuda Sobre

Editor de textos

Page 116: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Altere a propriedade Checked do Item Alinhamento -> Esquerda para True;

Isso é necessário, pois o alinhamento default de nosso editor será à esquerda.

Editor de textos

Page 117: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Altere a propriedade ShortCut de cada item conforme a tabela abaixo.

Editor de textos

Opção Atalho

Novo Ctrl + N

Abrir Ctrl + O

Salvar Ctrl + S

Sair Ctrl + Q

Recortar

Ctrl + X

Copiar Ctrl + C

Colar Ctrl + V

Opção Atalho

Alinhamento à Esquerda

Ctrl + Alt + L

Alinhamento Central Ctrl + Alt + C

Alinhamento à Direita

Ctrl + Alt + R

Negrito Ctrl + Alt + N

Itálico Ctrl + Alt + I

Sublinhado Ctrl + Alt + U

Sobre F12

Page 118: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um Memo (aba Standard);

Altere a propriedade Name para Texto;

Altere a propriedade Align para alClient;

Altere a propriedade ScrollBars para ssVertical;

Deixe a propriedade Lines vazia.

Editor de textos

Page 119: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TOpenDialog (aba Dialogs);

Adicione um TSaveDialog (aba Dialogs);

Adicione um TFontDialog (aba Dialogs);

Adicione um TColorDialog (aba Dialogs).

Editor de textos

Page 120: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Nosso projeto deve estar assim:

Editor de textos

Page 121: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

No evento OnClick do item Arquivo -> Novo do Main Menu do formulário Principal digite o seguinte código: Texto.Clear;

No evento OnClick do item Arquivo -> Sair do Main Menu do formulário Principal digite o seguinte código: Close;

Editor de textos

Page 122: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

No evento OnClick do item Editar-> Recortar do Main Menu do formulário Principal digite o seguinte código:Texto.CutToClipboard;

No evento OnClick do item Editar-> Copiar do Main Menu do formulário Principal digite o seguinte código:Texto.CopyToClipboard;

No evento OnClick do item Editar-> Colar do Main Menu do formulário Principal digite o seguinte código:Texto.PasteFromClipboard;

Editor de textos

Page 123: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

As caixas de diálogos (abrir, salvar, configurações da fonte etc) são exibidas no programa pelo método Execute;

O método retorna True se o usuário clicar no botão OK;

O método retorna False se o usuário fechar a caixa de diálogo ou clicar em Cancelar;

No primeiro caso, o programa respoderá às alterações da caixa de diálogo exibida.

Editor de textos

Page 124: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

No evento OnClick do item Arquivo -> Abrir do Main Menu do formulário Principal digite o seguinte código:

If OpenDialog1.Execute then Texto.Lines.LoadFromFile(OpenDialog1.FileName);

Ou seja, se o usuário selecionar um arquivo de texto pela caixa de diálogo e clicar em OK, o conteúdo do mesmo será carregado para as linhas do Memo “Texto”.

Editor de textos

Page 125: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

No evento OnClick do item Arquivo -> Salvar do Main Menu do formulário Principal digite o seguinte código:

If SaveDialog1.Execute then Texto.Lines.SaveToFile(SaveDialog1.FileName);

Ou seja, se o usuário selecionar um diretório e um nome de arquivo pela caixa de diálogo e clicar em OK, o conteúdo das linhas do Memo “Texto” será salvo no local escolhido.

Editor de textos

Page 126: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Altere as seguintes propriedades do OpenDialog e do SaveDialog adicionados para que o programa abra e salve arquivos no formato.txt;Coloque .txt na propriedade DefaultExt;Coloque os seguintes filtros na propriedade

Filter;

Editor de textos

Filter Name Filter

Arquivos de texto *.txt

Todos os arquivos *.*

Page 127: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

No evento OnClick do item Editar -> Formatar Fonte... -> Fonte do Main Menu do formulário Principal digite o seguinte código:

FontDialog1.Font := Texto.Font; If FontDialog1.Execute then Texto.Font := FontDialog1.Font;

Primeiramente a fonte é inicializada. Em seguida, se o usuário selecionar uma fonte pela caixa de diálogo e clicar em OK, o conteúdo da mesma será carregado para as linhas do Memo “Texto”.

Editor de textos

Page 128: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

No evento OnClick do item Editar -> Formatar Fonte... -> Cor do Main Menu do formulário Principal digite o seguinte código:

ColorDialog1.Color := Texto.Font.Color; If ColorDialog1.Execute then Texto.Font.Color := ColorDialog1.Color;

Primeiramente a cor é inicializada. Em seguida, se o usuário selecionar uma cor pela caixa de diálogo e clicar em OK, o conteúdo da mesma será carregado para as linhas do Memo “Texto”.

Editor de textos

Page 129: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

No evento OnClick do item Editar -> Alinhamento -> Esquerda do Main Menu do formulário Principal digite o seguinte código:

Mn_Esquerda.Checked:= True; Texto.Alignment := taLeftJustify; Mn_Centralizado.Checked := False; Mn_Direita.Checked := False;

É atribuído True para o valor da propriedade “Checked” do objeto Mn_Esquerda. Em seguida, o texto é alinhado à esquerda e as outras opções de alinhamento tem valor False atribuído a suas propriedades Checked.

Editor de textos

Page 130: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

No evento OnClick do item Editar -> Alinhamento -> Centralizado do Main Menu do formulário Principal digite o seguinte código:

Mn_Centralizado.Checked:= True;Texto.Alignment := taCenter;Mn_Esquerda.Checked := False;Mn_Direita.Checked := False;

É atribuído True para o valor da propriedade “Checked” do objeto Mn_Centralizado. Em seguida, o texto é centralizado e as outras opções de alinhamento tem valor False atribuído a suas propriedades Checked.

Editor de textos

Page 131: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

No evento OnClick do item Editar -> Alinhamento -> Direita do Main Menu do formulário Principal digite o seguinte código:

Mn_Direita.Checked:= True; Texto.Alignment := taRightJustify; Mn_Centralizado.Checked := False; Mn_Esquerda.Checked := False;

É atribuído True para o valor da propriedade “Checked” do objeto Mn_Direita. Em seguida, o texto é alinhado à direita e as outras opções de alinhamento tem valor False atribuído a suas propriedades Checked.

Editor de textos

Page 132: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

No evento OnClick do item Editar -> Formatar Fonte... -> Negrito do Main Menu do formulário Principal digite o seguinte código:

Mn_Negrito.Checked := Not Mn_Negrito.Checked; If Mn_Negrito.Checked = True then Texto.Font.Style := Texto.Font.Style + [fsBold] else Texto.Font.Style := Texto.Font.Style - [fsBold];

O valor da propriedade “Checked” do objeto Mn_Negrito é invertido, pois se a mesma estiver true e ocorreu um clique no botão, é sinal que o usuário deseja desmarcar essa opção. Em seguida, é feito um teste. Se a propriedade “Checked” for igual a True, o estilo “Negrito” é adicionado ao estilo da fonte do Memo “Texto”.

Editor de textos

Page 133: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

No evento OnClick do item Editar -> Formatar Fonte... -> Itálico do Main Menu do formulário Principal digite o seguinte código:

Mn_Italico.Checked := Not Mn_Italico.Checked; If Mn_Italico.Checked = True then Texto.Font.Style := Texto.Font.Style + [fsItalic] else Texto.Font.Style := Texto.Font.Style - [fsItalic];

O valor da propriedade “Checked” do objeto Mn_Italico é invertido, pois se a mesma estiver true e ocorreu um clique no botão, é sinal que o usuário deseja desmarcar essa opção. Em seguida, é feito um teste. Se a propriedade “Checked” for igual a True, o estilo “Itálico” é adicionado ao estilo da fonte do Memo “Texto”.

Editor de textos

Page 134: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

No evento OnClick do item Editar -> Formatar Fonte... -> Sublinhado do Main Menu do formulário Principal digite o seguinte código:

Mn_Sublinhado.Checked := Not Mn_Sublinhado.Checked; If Mn_Sublinhado.Checked = True then Texto.Font.Style := Texto.Font.Style + [fsUnderline] else Texto.Font.Style := Texto.Font.Style - [fsUnderline];

O valor da propriedade “Checked” do objeto Mn_Sublinhado é invertido, pois se a mesma estiver true e ocorreu um clique no botão, é sinal que o usuário deseja desmarcar essa opção. Em seguida, é feito um teste. Se a propriedade “Checked” for igual a True, o estilo “Sublinhado” é adicionado ao estilo da fonte do Memo “Texto”.

Editor de textos

Page 135: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Para criarmos a janela “Sobre”, utilizaremos o método “MessageBox” pertencente a aplicação;

Esse método possui três parâmetros:O primeiro é o texto que aparecerá no corpo da

caixa de mensagem;O segundo é o título da caixa de mensagem;O terceiro é um inteiro que representa um

conjunto de ícone e botões que aparecerá na caixa de mensagem.

Editor de textos

Page 136: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

No evento OnClick do item Ajuda -> Sobre do Main Menu do formulário Principal digite o seguinte código: Application.MessageBox('Versão 1.0 do

editor de texto','Sobre o Editor de Texto', 0);

Consulte a documentação para um conjunto diferente de ícone e botões.

Editor de textos

Page 137: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TToolBar (aba Common Controls);

Apertando com o botão direito do mouse no ToolBar que acabamos de colocar, adicione botões, separadores e botões de checagem (Check Botton) de acordo com a figura:

Editor de textos

Botton

Botton

Check Botton

Botton

Separator

Separator

Separator

Separator

Check Botton

Page 138: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TImageList (aba Common Controls);

Apertando com o botão direito do mouse no ImageList que acabamos de colocar, selecione a opção “ImageList Editor...”;

Adicione os ícones (disponíveis na pasta ICO). Altere a ordem utilizando as opções disponíveis caso seja necessário. Clique em OK.

Editor de textos

Page 139: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Selecione o ToolBar que foi adicionado e altere a propriedade Images para ImageList1;

Altere as propriedades de cada elemento do ToolBar de acordo com a tabela a seguir:

Editor de textos

Page 140: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Botão Name ImageIndex

ToolButton1

Tb_Novo 0

ToolButton2

Tb_Abrir 1

ToolButton3

Tb_Salvar 2

ToolButton4

Tb_Recortar 3

ToolButton5

Tb_Copiar 4

ToolButton6

Tb_Colar 5

ToolButton7

Tb_Esquerda 6

Editor de textosBotão Name Imag

eIndex

ToolButton8

Tb_Centralizado

7

ToolButton9

Tb_Direita 8

ToolButton10

Tb_Negrito 9

ToolButton11

Tb_Italico 10

ToolButton12

Tb_Sublinhado

11

ToolButton13

Tb_Ajuda 12

TollButton14

Tb_Sair 13

A propriedade Image Index vincula cada botão na barra de ferramenta com um ícone armazenado na ImageList que adicionamos, seguindo a ordem preestabelecida.

Page 141: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Selecione o Tb_Esquerda e altere a propriedade Down para True;

Isso se deve ao fato de o texto estar alinhado à esquerda quando o aplicativo é aberto;

Selecione o Tb_Esquerda, Tb_Centralizar e Tb_Direita (utilizando o shift) e altere a propriedade Grouped para True;

Com isso, quando selecionarmos uma opção de alinhamento, as outras serão desmarcadas.

Editor de textos

Page 142: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Como os atalhos criados são equivalentes às opções programadas no Menu Principal, reaproveitaremos todos os eventos OnClick do Menu Principal na barra de ferramentas;

Por exemplo: O botão Novo localizado na barra de ferramentas tem como evento OnClick o mesmo evento OnClick do botão Novo localizado no Menu Principal;

Para isso, em cada botão do ToolBar, selecione o evento OnClick respectivo à opção do menu Principal, conforme tabela a seguir.

Editor de textos

Page 143: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Botão Evento OnClick

Tb_Novo Mn_Novo

Tb_Abrir Mn_Abrir

Tb_Salvar Mn_Salvar

Tb_Recortar Mn_Recortar

Tb_Copiar Mn_Copiar

Tb_Colar Mn_Colar

Tb_Esquerda Mn_Esquerda

Botão Evento OnClick

Tb_Centralizado

Mn_Centralizado

Tb_Direita Mn_Direita

Tb_Negrito Mn_Negrito

Tb_Italico Mn_Italico

Tb_Sublinhado

Mn_Sublinhado

Tb_Ajuda Mn_Ajuda

Tb_Sair Mn_Sair

Editor de textos

Page 144: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Note que quando clicamos em algum tipo de alinhamento ou estilo pelo menu principal, o botão na barra de ferramentas não altera seu aspecto para “pressionado”;

O mesmo ocorre no menu principal quando clicamos pela barra de ferramentas;

Logo, para o programa ficar mais coeso, devemos adicionar algumas alterações.

Editor de textos

Page 145: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione o seguinte texto no evento OnClick Mn_EsquerdaClick: Tb_Esquerda.Down := Mn_Esquerda.Checked;

Adicione o seguinte texto no evento OnClick Mn_CentralizadoClick: Tb_Centralizado.Down := Mn_Centralizado.Checked;

Adicione o seguinte texto no evento OnClick Mn_DireitaClick: Tb_Direita.Down := Mn_Direita.Checked.

Assim, quando determinado evento se manifestar, o valor verdadeiro ou falso da propriedade Checked do objeto do menu principal será atribuído à propriedade Down do objeto da barra de ferramenta.

Editor de textos

Page 146: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione o seguinte texto no evento OnClick Mn_NegritoClick: Tb_Negrito.Down := Mn_Negrito.Checked;

Adicione o seguinte texto no evento OnClick Mn_ItalicoClick: Tb_Italico.Down := Mn_Italico.Checked;

Adicione o seguinte texto no evento OnClick Mn_SublinhadoClick: Tb_Sublinhado.Down := Mn_Sublinhado.Checked.

Assim, quando determinado evento se manifestar, o valor verdadeiro ou falso da propriedade Checked do objeto do menu principal será atribuído à propriedade Down do objeto da barra de ferramenta.

Editor de textos

Page 147: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Editor de textos

Page 148: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Banco de dadosUm Banco de dados é um conjunto de dados inter-

relacionados, constituindo informações sobre um determinado assunto;

Banco de Dados Relacional:Tipo de B.D. mais comum;Os dados são organizados em tabelas bidimensionais;

Exemplos:Cadastro de clientes;Cadastro de fornecedores;Estoque.

Page 149: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Banco de dados – Conceitos Importantes

Entidade Objetos sobre os quais se mantem informações; Cada entidade está representa uma tabela;

Atributos Características específicas de cada entidade; Cada atributo é uma coluna de uma tabela;

Registro Informação específica sobre um representante da entidade; Cada registro é uma linha de uma tabela;

Chave primária Identificador exclusivo para cada registro; É um atributo especial.

Page 150: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Banco de dados – Relacionamentos

Os relacionamentos representam as ligações entre as tabelas. Podem ser dos seguintes tipos: Um para um

Quando os campos das duas tabelas relacionadas são chaves primárias;

É o relacionamento mais raro;

Um para muitos Quando o campo da primeira tabela relacionada é chave primária

e o campo da segunda não é chave primária; É o relacionamento mais comum;

Muitos para muitos Quando os campos das duas tabelas relacionadas não são chaves

primárias; Não ocorre na prática, pois há muita redundância. Para evitar

isso, é utilizado dois relacionamentos Um para muitos.

Page 151: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Banco de dados – SGBDUm Sistema Gerenciador de Banco de

Dados é um software utilizado para:Definir a estrutura de armazenamento de

informações em um Banco de Dados;Fornecer meios para manipula-lo e consulta-lo;

Seus principais recursos são:Linguagem de definição de dados;Dicionário de dados;Linguagem de manipulação de dados.

Page 152: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Banco de dados – Linguagem de definição de dados

É utilizada para definir a estrutura básica do banco de dados;

Cria-se as tabelas;

Define-se os seus campos.

Page 153: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Banco de dados – Dicionário de dados

Contem as definições dos elementos de dados juntamente com suas características;

Possui o nome, tipo, tamanho, descrição e formato de todos os campos;

Dentre outras informações, indica o histórico de uso e quem pode usar cada elemento de dado.

Page 154: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Banco de dados – Linguagem de manipulação de dados

Utilizada para manipular dados. As ações básicas são:Acrescentar;Alterar;Apagar;Recuperar;

A linguagem mais utilizada é a SQL (Structured Query Language).

Page 155: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Banco de dados – Operações em SQL

SelectConsulta registros de tabelas que obedecem a

determinados parâmetros;Sintaxe:

Select *Campos* From *Tabelas* Where *Parâmetros*;

UpdateAltera os valores dos registros de tabelas;

DeleteRemove registros de tabelas.

Page 156: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

SQLite3SQLite é uma biblioteca que provê um motor

de banco de dados SQL;

Não há necessidade de um servidor ou configuração;

Está disponível para Window, Linux e Mac OS;

Pode-se fazer aplicativos comerciais sem pagar nada aos criadores do SQLite.

Page 157: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Baixando o SQLite3Vá ao site oficial e click em Downloads;

http://www.sqlite.org/

Procure a parte “Precompiled Binaries For Windows”;

Baixe o arquivo sqlite-dll-win32-x86-XXXXXXX.zip;

É uma DLL de aproximadamente 280 kb.

Page 158: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Instalando o SQLite3Instalar o SQLite é muito simples. Basta

descompactar o DLL que você baixou na pasta:C:\Windows\System32 se você usa o Windows

XP ou anteriores;

C:\Windows\System32 se você usa o Windows Vista ou Seven 32 bits;

C:\Windows\SysWOW64 se você usa o Windows Vista ou Seven 64 bits.

Page 159: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

SQLite Studio é aplicativo bem simples que utilizaremos para criar o nosso banco de dados e as suas tabelas com seus respectivos campos;

Está disponível para Windows, Linux e Mac OS;

Pode-se fazer aplicativos comerciais sem pagar nada aos criadores do SQLite Studio.

SQLite Studio

Page 160: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Vá ao site oficial e click em Downloads;http://sqlitestudio.one.pl/

Escolha a versão adequada, dependendo de seu sistema operacional;

Basta rodar. O programa não possui instalador.

Instalando o SQLite Studio

Page 161: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Nosso quinto aplicativo será um Cadastro de Clientes utilizando um banco de dados;

O SQLite 3 deve estar devidamente instalado;

Retirei esse tutorial do site http://professorcarlos.blogspot.com/, adaptando alguns detalhes.

Cadastro de Clientes

Page 162: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Cadastro de Clientes – Estruturando o BD

Utilizando o SQLite Studio, crie um banco de dados chamado “Banco.db” e o salve na pasta do projeto;

Adicione duas tabelas com os seguintes nomes, campos e propriedades:Cidade

id_cidade -> Integer, Primary Key Nome -> Varchar(30)

Cliente Id_cliente -> Integer, Primary Key Nome -> Varchar(40) Endereco -> Varchar(40) Id_cidade -> Integer, Foreign Key Telefone -> Varchar(14) Tipo -> Char(1)

Page 163: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Cadastro de Clientes – Formulário Principal

Inicie o Lazarus e crie uma nova aplicação;

Adicione um Main Menu ao formulário com a seguinte estrutura:Arquivo

SairCadastro

Cidade Cliente

Consulta Cidade Cliente

Page 164: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Cadastro de Clientes – Formulário Principal

No evento OnClick do item Arquivo-> Sair do Main Menu do formulário Princial digite o seguinte código: Close;

Mude a propriedade Name desse form para frmPrincipal ;

Mude a propriedade BorderStyle desse form para bsSingle;

Mude a propriedade Caption desse form para Cadastro de Clientes;

Salve, escolhendo Clientes para nome do projeto e u_principal para nome da Unit.

Page 165: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um Data Module. Para isso, selecione o menu Arquivo -> Novo. Selecione Data Module , no grupo Módulo e pressione o botão OK;

Mude a propriedade Name do Data Module para dmDados e mande salvar. O nome da Unit do dmDados deve ser u_dmdados.

Cadastro de Clientes – Data Module

Page 166: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TSQLite3Connection (aba SQLdb) no DataModule;

Altere a propriedade Name para dbCliente;

Na propriedade DatabaseName coloque ‘banco.db’ (sem aspas);

Mude a propriedade Connected para True a fim de testar se a conexão pode ser estabelecida. Se não ocorrer nenhum erro, tudo está OK;

Mude a propriedade Connected para False.

Cadastro de Clientes – Data Module

Page 167: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TSQLTransaction (aba SQLdb) no DataModule;

Altere a propriedade Name para trGeral;

Selecione dbCliente na propriedade Database;

Selecione o SQLite3Connection que você adicionou no Data Module e escolha trGeral na propriedade Transaction.

Cadastro de Clientes – Data Module

Page 168: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TSQLQuery (aba SQLdb) no DataModule;

Altere a propriedade Name para queCidade;

Selecione dbCliente na propriedade Database;

Digite select * from cidade na propriedade SQL;

Selecione trGeral na propriedade Transaction.

Cadastro de Clientes – Data Module

Page 169: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione outro TSQLQuery (aba SQLdb) no DataModule;

Altere a propriedade Name para queCliente;

Selecione dbCliente na propriedade Database;

Digite select * from cliente na propriedade SQL;

Selecione trGeral na propriedade Transaction.

Cadastro de Clientes – Data Module

Page 170: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TDataSource (aba Data Access) no DataModule;

Altere a propriedade Name para dsCidade;

Selecione queCidade em DataSet.

Cadastro de Clientes – Data Module

Page 171: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione outro TDataSource (aba Data Access) no DataModule;

Altere a propriedade Name para dsCliente;

Selecione queCliente em DataSet.

Cadastro de Clientes – Data Module

Page 172: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Resumo:SQLite3Connection

Estabelece a conexão com o banco de dados;

TSQLTransaction Controla as transações;

TSQLQuery Define uma conexão com uma tabela do banco;

TDataSource Estabelece uma ligação entre a tabela e os componentes

gráficos que irão ler os campos dessa tabela.

Cadastro de Clientes – Data Module

Page 173: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Nesse estágio, o data module deve estar assim:

Cadastro de Clientes – Data Module

Page 174: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Selecione o formulário principal e, em sua respectiva Unit, adicione u_dmdados em Uses;

Isso faz com que o formulário principal acesse os objetos do data module;

Selecione o formulário principal. Clique na aba Eventos do Inspetor de Objetos. Localize o evento OnShow e digite o seguinte código: dmDados.dbCliente.Open;

Com isso, a conexão com o banco de dados será estabeleida sempre que o programa for inicializado.

Cadastro de Clientes – Formulário Principal

Page 175: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Devemos criar uma janela para adicionar, remover e editar os registros da tabela Cidade;

O desenho desse form deve ter a seguinte aparência:

Cadastro de Clientes – Formulário Cidade

Page 176: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Insira um novo form na aplicação;

Altere a propriedade Name para frmCidade;

Altere a propriedade Caption para Cidades;

Salve, utilizando u_cidade como o nome da Unit.

Cadastro de Clientes – Formulário Cidade

Page 177: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Digite u_dmdados no Uses da Unit do formulário Cidades;

Isso faz com que esse formulário acesse os objetos do Data Module.

Cadastro de Clientes – Formulário Cidade

Page 178: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um Tpanel (aba Standard);

Altere a propriedade Align para alTop;

Deixe a propriedade Caption vazia;

Altere a propriedade BevelInner para bvLowered;

Altere a propriedade BevelOuter bvRaised.

Cadastro de Clientes – Formulário Cidade

Page 179: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TDBNavigator (aba Data Controls) sobre o painel;

Altere a propriedade DataSource para dsCidade;

Adicione dois TDBEdit (aba Data Controls) no form Cidade.

Cadastro de Clientes – Formulário Cidade

Page 180: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

No primeiro TDBEdit :Altere a propriedade Name para edIdCidade;Altere a propriedade DataSource para dsCidade;Digite ID_CIDADE em DataField (Provocará um

erro, mas basta clicar em OK);

No segundo TDBEdit:Altere a propriedade Name para edNome;Altere a proprieade DataSource para dsCidade;Digite NOME em DataField(Provocará um erro,

mas basta clicar em OK).

Cadastro de Clientes – Formulário Cidade

Page 181: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione dois TLabel (aba Standard) e coloque um à esquerda de cada TDBEdit para identificá-los;

Altere suas propriedades Caption para ID e Nome, respectivamente.

Cadastro de Clientes – Formulário Cidade

Page 182: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TSpeedButton (aba Additional) sobre o painel;

Altere a propriedade Name para btnSair;

Altere a propriedades Caption para Sair;

Altere a propriedades Height para 25;

Altere a propriedades Widrh para 25;

Clique na aba Eventos do Inspetor de Objetos. Localize o evento OnClick deste botão e digite: Close;

Cadastro de Clientes – Formulário Cidade

Page 183: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Vamos programar a abertura e o fechamento da Query no formulário cidade;

A abertura será programada no evento OnShow;

O fechamento será programado no evento OnClose.

Cadastro de Clientes – Formulário Cidade

Page 184: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Selecione o formulário Cidade. Clique na aba Eventos do Inspetor de Objetos. Localize o evento OnShow e digite o seguinte código:dmDados.queCidade.Open;

No evento OnClose do formulário Cidade digite o seguinte código:dmDados.queCidade.Close.

Cadastro de Clientes – Formulário Cidade

Page 185: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Vamos programar o envio dos dados para o banco;

Isso é feito no evento AfterPost da Query;

Este evento ocorre sempre depois que um registro é gravado no banco.

Cadastro de Clientes – Enviando os dados

Page 186: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Selecione o queCidade presente no DataModule;

Clique na aba Eventos do Inspetor de Objetos. Localize o evento AfterPost e digite o seguinte código:

Cadastro de Clientes – Data Module

Page 187: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

procedure TdmDados.queCidadeAfterPost(DataSet: TDataSet);var posicao: TBookMark;begin try posicao := queCidade.GetBookmark; queCidade.ApplyUpdates; if trGeral.Active then begin trGeral.CommitRetaining; queCidade.GotoBookmark(posicao); end; except trGeral.Rollback; end;end;

Cadastro de Clientes – Data Module

Page 188: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Clique na aba Eventos do Inspetor de Objetos. Localize o evento AfterDelete e selecione queCidadeAfterPost;

Assim, o código que executa a mesma operação necessária no AfterDelete é reaproveitado.

Cadastro de Clientes – Data Module

Page 189: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Vamos programar a abertura do formulário Cidade (frmCidade) a partir no formulário Principal (frmPrincipal);

Selecione a Unit do formulário Principal (u_principal) e digite u_cidade no Uses;

Isso faz com que esse formulário acesse os objetos do formulário Cidade;

No evento OnClick do item Cadastros -> Cidades do Main Menu do formulário Princial digite o seguinte código: frmCidade.Show;

Cadastro de Clientes – Formulário Principal

Page 190: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Devemos criar uma janela para adicionar, remover e editar os registros da tabela Cliente;

Cadastro de Clientes – Formulário Cliente

O desenho desse form deve ter a seguinte aparência:

Page 191: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Insira um novo form na aplicação;

Altere a propriedade Name para frmCliente;

Altere a propriedade Caption para Clientes;

Salve, utilizando u_cliente como o nome da Unit.

Cadastro de Clientes – Formulário Cliente

Page 192: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Digite u_dmdados no Uses da Unit do formulário Cliente;

Isso faz com que esse formulário acesse os objetos do Data Module.

Cadastro de Clientes – Formulário Cliente

Page 193: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um Tpanel (aba Standard);

Altere a propriedade Align para alTop;

Deixe a propriedade Caption vazia;

Altere a propriedade BevelInner para bvLowered;

Altere a propriedade BevelOuter bvRaised.

Cadastro de Clientes – Formulário Cliente

Page 194: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TDBNavigator (aba Data Controls) sobre o painel;

Altere a propriedade DataSource para dsCliente.

Cadastro de Clientes – Formulário Cliente

Page 195: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TSpeedButton (aba Additional) sobre o painel;

Altere a propriedade Name para btnSair;

Altere a propriedades Caption para Sair;

Altere a propriedades Height para 25;

Altere a propriedades Widrh para 25;

Clique na aba Eventos do Inspetor de Objetos. Localize o evento OnClick deste botão e digite: Close;

Cadastro de Clientes – Formulário Cliente

Page 196: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione dois TDBEdit (aba Data Controls ) no form Cliente;

No primeiro TDBEdit :Altere a propriedade Name para edIdCliente;Altere a propriedade DataSource para dsCliente;Digite ID_CLIENTE em DataField (Provocará um erro,

mas basta clicar em OK);

No segundo TDBEdit:Altere a propriedade Name para edNome;Altere a proprieade DataSource para dsCliente;Digite NOME em DataField(Provocará um erro, mas

basta clicar em OK).

Cadastro de Clientes – Formulário Cliente

Page 197: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione dois TLabel (aba Standard) e coloque um à esquerda de cada TDBEdit para identificá-los;

Altere suas propriedades Caption para ID e Nome, respectivamente.

Cadastro de Clientes – Formulário Cliente

Page 198: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TDBLookupComboBox (aba Data Controls) no form Cliente;

Altere a propriedade Name para dblIdCidade.

Cadastro de Clientes – Formulário Cliente

Page 199: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Altere a propriedade DataSource para dsCliente;

Altere a propriedade DataField para ID_CIDADE;

Altere a propriedade ListSource para dsCidade;

Altere a propriedade ListField para NOME;

Altere a propriedade KeyField para ID_CIDADE.

Cadastro de Clientes – Formulário Cliente

Page 200: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Altere a propriedade Sorted para True;

Altere a propriedade Style para dsDropDownList.

Cadastro de Clientes – Formulário Cliente

Page 201: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TLabel (aba Standard) para identificar esse campo;

Altere a propriedade Caption para Cidade.

Cadastro de Clientes – Formulário Cliente

Page 202: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TDBEdit (aba Data Controls) no form Cliente;

Altere a propriedade Name para edTelefone;

Altere a propriedade DataSource para dsCliente ;

Digite TELEFONE em DataField (Provocará um erro, mas basta clicar em OK).

Cadastro de Clientes – Formulário Cliente

Page 203: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TLabel (aba Standard) para identificar este campo;

Altere a propriedade Caption para Telefone.

Cadastro de Clientes – Formulário Cliente

Page 204: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TDBRadioGroup (aba Data Controls ) no form Cliente;

Altere a propriedade Caption para Tipo;

Altere a propriedade Name para rgTipo;

Altere a propriedade DataSource para dsCliente;

Altere a propriedade DataField para TIPO.

Cadastro de Clientes – Formulário Cliente

Page 205: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Altere a propriedade Items, digitando Pessoa física na primeira linha e Pessoa jurídica na segunda e pressione OK;

Altere a propriedade Values, digite F na primeria linha e J na segunda;

A letra F será gravada no banco de dados quando for selecionada a opção Pessoa física. Caso contrário, J será gravado;

Altere a propriedade Columns para 2.

Cadastro de Clientes – Formulário Cliente

Page 206: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Vamos programar a abertura e o fechamento da Query no formulário Cliente;

A abertura será programada no evento OnShow;

O fechamento será programado no evento OnClose.

Cadastro de Clientes – Formulário Cliente

Page 207: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Selecione o formulário Cliente. Clique na aba Eventos do Inspetor de Objetos. Localize o evento OnShow e digite o seguinte código:dmDados.queCliente.Open;

No evento OnClose do formulário Cliente digite o seguinte código:dmDados.queCliente.Close;

Cadastro de Clientes – Formulário Cliente

Page 208: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Vamos programar o envio dos dados para o banco;

Isso é feito no evento AfterPost da Query;

Este evento ocorre sempre depois que um registro é gravado no banco.

Cadastro de Clientes – Enviando os dados

Page 209: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Selecione o queCliente presente no DataModule;

Clique na aba Eventos do Inspetor de Objetos. Localize o evento AfterPost e digite o seguinte código:

Cadastro de Clientes – Data Module

Page 210: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

procedure TdmDados.queClienteAfterPost(DataSet: TDataSet);var posicao: TBookMark;begin try posicao := queCliente.GetBookmark; queCliente.ApplyUpdates; if trGeral.Active then begin trGeral.CommitRetaining; queCliente.GotoBookmark(posicao); end; except trGeral.Rollback; end;end;

Cadastro de Clientes – Data Module

Page 211: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Clique na aba Eventos do Inspetor de Objetos. Localize o evento AfterDelete e selecione queClienteAfterPost;

Assim, o código que executa a mesma operação necessária no AfterDelete é reaproveitado.

Cadastro de Clientes – Data Module

Page 212: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Vamos programar a abertura do formulário Cliente (frmCidade) a partir no formulário Principal (frmPrincipal);

Selecione a Unit do formulário Principal (u_principal) e digite u_cliente no Uses;

Isso faz com que esse formulário acesse os objetos do formulário Cliente;

No evento OnClick do item Cadastros -> Clientes do Main Menu do formulário Princial digite o seguinte código: frmCliente.Show;

Cadastro de Clientes – Formulário Principal

Page 213: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Devemos criar uma janela para consultar os registros da tabela Cidade;

Cadastro de Clientes – Consulta Cidade

O desenho desse form deve ter a seguinte aparência:

Page 214: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TSQLQuery (aba SQLdb) no DataModule;

Altere a propriedade Name para queConsCidade;

Selecione dbCliente na propriedade Database;

Selecione trGeral na propriedade Transaction.

Cadastro de Clientes – Data Module

Page 215: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TDataSource (aba Data Access) no DataModule;

Altere a propriedade Name para dsConsCidade;

Selecione queConsCidade em DataSet.

Cadastro de Clientes – Data Module

Page 216: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Insira um novo form na aplicação;

Altere a propriedade Name para frmConsCidade;

Altere a propriedade Caption para Consulta de cidades;

Salve, utilizando u_conscidade como o nome da Unit.

Cadastro de Clientes – Consulta Cidade

Page 217: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Digite u_dmdados no Uses da Unit do formulário da Consulta Cidade;

Isso faz com que esse formulário acesse os objetos do Data Module.

Cadastro de Clientes – Consulta Cidade

Page 218: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um Tpanel (aba Standard);

Altere a propriedade Align para alTop;

Deixe a propriedade Caption vazia;

Altere a propriedade BevelInner para bvLowered;

Altere a propriedade BevelOuter bvRaised.

Cadastro de Clientes – Consulta Cidade

Page 219: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TRadioGroup (aba Standard) no painel;

Altere a propriedade Caption para Campo;

Altere a propriedade Items, digitando Código na primeira linha e Nome na segunda e pressione OK;

Altere a propriedade Name para rgCampo.

Cadastro de Clientes – Consulta Cidade

Page 220: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TEdit (aba Standard) no painel;

Altere a propriedade Name para edDado;

Delete o conteúdo da propriedade Text;

Adicione um TLabel (aba Standard);

Altere a propriedade Caption para Dado a consultar.

Cadastro de Clientes – Consulta Cidade

Page 221: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TDBGrid (aba Data Controls) no form Cliente;

Altere a propriedade Name para dbgDados;

Altere a propriedade DataSource para dsConsCidade;

Altere a propriedade Align para alClient;

Altere a propriedade Options -> dgAutoSizeColumns para True.

Cadastro de Clientes – Consulta Cidade

Page 222: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um Tbutton (aba Standard) no painel;

Altere a propriedade Name para btnConsultar;

Altere a propriedade Caption para Consultar;

Clique na aba Eventos do Inspetor de Objetos. Localize o evento OnClick e digite o seguinte código:

Cadastro de Clientes – Consulta Cidade

Page 223: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

procedure TfrmConsCidade.btnConsultarClick(Sender: TObject);begin with dmDados.queConsCidade do begin Close; SQL.Clear; if rgCampo.ItemIndex = 0 then begin SQL.Add('select * from cidade where id_cidade = :pIdCidade'); Params[0].Value:= StrToInt(edDado.Text); end else begin SQL.Add('select * from cidade where nome like :pNome'); Params[0].Value := edDado.Text + '%'; end; Open; end;end;

Cadastro de Clientes – Consulta Cidade

Page 224: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Vamos programar a abertura do formulário de Consulta Cidade (frmConsCidade) a partir no formulário Principal (frmPrincipal);

Selecione a Unit do formulário Principal (u_principal) e digite u_conscidade no Uses;

Isso faz com que esse formulário acesse os objetos do formulário Consulta Cidade;

No evento OnClick do item Consultas -> Cidade do Main Menu do formulário Princial digite o seguinte código: frmConsCidade.Show;

Cadastro de Clientes – Formulário Principal

Page 225: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Devemos criar uma janela para consultar os registros da tabela Cliente;

Cadastro de Clientes – Consulta Clientes

O desenho desse form deve ter a seguinte aparência:

Page 226: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TSQLQuery (aba SQLdb) no DataModule;

Altere a propriedade Name para queConsCliente;

Selecione dbCliente na propriedade Database;

Selecione trGeral na propriedade Transaction.

Cadastro de Clientes – Data Module

Page 227: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TDataSource (aba Data Access) no DataModule;

Altere a propriedade Name para dsConsCliente;

Selecione queConsCidade em DataSet.

Cadastro de Clientes – Data Module

Page 228: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Insira um novo form na aplicação;

Altere a propriedade Name para frmConsCliente;

Altere a propriedade Caption para Consulta de clientes;

Salve, utilizando u_conscliente como o nome da Unit.

Cadastro de Clientes – Consulta Cliente

Page 229: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Digite u_dmdados no Uses da Unit do formulário da Consulta Cliente;

Isso faz com que esse formulário acesse os objetos do Data Module.

Cadastro de Clientes – Consulta Cliente

Page 230: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TPanel (aba Standard);

Altere a propriedade Align para alTop;

Deixe a propriedade Caption vazia;

Altere a propriedade BevelInner para bvLowered;

Altere a propriedade BevelOuter bvRaised.

Cadastro de Clientes – Consulta Cliente

Page 231: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TRadioGroup (aba Standard) no painel;

Altere a propriedade Caption para Campo;

Altere a propriedade Items, digitando Código na primeira linha e Nome na segunda, Cidade na terceira, Tipo na quarta e pressione OK;

Altere a propriedade Name para rgCampo.

Cadastro de Clientes – Consulta Cliente

Page 232: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TEdit (aba Standard) no painel;

Altere a propriedade Name para edDado;

Delete o conteúdo da propriedade Text;

Adicione um TLabel (aba Standard) no painel;

Altere a propriedade Caption para Dado a consultar.

Cadastro de Clientes – Consulta Cliente

Page 233: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TDBLookupComboBox (aba Data Controls) no painel;

Altere a propriedade Name para dblIdCidade.

Cadastro de Clientes – Consulta Cliente

Page 234: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Altere a propriedade DataSource para dsCliente;

Altere a propriedade DataField para ID_CIDADE;

Altere a propriedade ListSource para dsCidade;

Altere a propriedade ListField para NOME;

Altere a propriedade KeyField para ID_CIDADE.

Cadastro de Clientes – Consulta Cliente

Page 235: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Altere a propriedade Sorted para True;

Altere a propriedade Style para dsDropDownList.

Cadastro de Clientes – Consulta Cliente

Page 236: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TRadioGroup (aba Standard) no painel;

Altere a propriedade Caption para Tipo;

Altere a propriedade Items, digitando Pessoa física na primeira linha e Pessoa jurídica na segunda e pressione OK;

Altere a propriedade Columns para 2;

Altere a propriedade Name para rgTipo.

Cadastro de Clientes – Consulta Cliente

Page 237: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um TDBGrid (aba Data Controls) no formulário Consulta Cliente;

Altere a propriedade Name para dbgDados;

Altere a propriedade DataSource para dsConsCliente;

Altere a propriedade Align para alClient;

Altere a propriedade Options -> dgAutoSizeColumns para True.

Cadastro de Clientes – Consulta Cliente

Page 238: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Adicione um Tbutton (aba Standard) no painel;

Altere a propriedade Name para btnConsultar;

Altere a propriedade Caption para Consultar;

Clique na aba Eventos do Inspetor de Objetos. Localize o evento OnClick e digite o seguinte código:

Cadastro de Clientes – Consulta Cliente

Page 239: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

procedure TfrmConsCliente.btnConsultarClick(Sender: TObject);begin with dmDados.queConsCliente do begin Close; SQL.Clear; case rgCampo.ItemIndex of 0: begin SQL.Add('select cl.id_cliente, cl.nome, cl.endereco, ci.nome, cl.telefone, cl.tipo from cliente as cl, cidade as ci where ci.id_cidade = cl.id_cidade and cl.id_cliente = :pIdCliente'); Params[0].Value:= StrToInt(edDado.Text); end; 1: begin SQL.Add('select cl.id_cliente, cl.nome, cl.endereco, ci.nome, cl.telefone, cl.tipo from cliente as cl, cidade as ci where ci.id_cidade = cl.id_cidade and cl.nome like :pNome'); Params[0].Value := edDado.Text + '%'; end;

Cadastro de Clientes – Consulta Cliente

Page 240: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

2: begin SQL.Add('select cl.id_cliente, cl.nome, cl.endereco, ci.nome, cl.telefone, cl.tipo from cliente as cl, cidade as ci where ci.id_cidade = cl.id_cidade and ci.nome like :pCiNome'); Params[0].Value := dbIdCidade.Text + '%'; end; 3: begin SQL.Add('select cl.id_cliente, cl.nome, cl.endereco, ci.nome, cl.telefone, cl.tipo from cliente as cl, cidade as ci where ci.id_cidade = cl.id_cidade and cl.tipo like :pTipo'); if rgTipo.ItemIndex = 0 then Params[0].Value := 'F%' else Params[0].Value:= 'J%'; end; end; Open; end;end;

Cadastro de Clientes – Consulta Cliente

Page 241: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Selecione o objeto rgCampo;

Clique na aba Eventos do Inspetor de Objetos. Localize o evento OnClick e digite o seguinte código:

Cadastro de Clientes – Consulta Cliente

Page 242: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

case rgCampo.ItemIndex of 2: begin edDado.Enabled:= false; dbIdCidade.Enabled:= true; rgTipo.Enabled:= false; end; 3: begin edDado.Enabled:= false; dbIdCidade.Enabled := false; rgTipo.Enabled:= true; end; else begin edDado.Enabled:= true; dbIdCidade.Enabled := false; rgTipo.Enabled:= false; end; end;

Cadastro de Clientes – Consulta Cliente

Page 243: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Vamos programar a abertura do formulário de Consulta Cliente (frmConsCliente) a partir no formulário Principal (frmPrincipal);

Selecione a Unit do formulário Principal (u_principal) e digite u_conscliente no Uses;

Isso faz com que esse formulário acesse os objetos do formulário Consulta Cliente;

No evento OnClick do item Consultas -> Cliente do Main Menu do formulário Princial digite o seguinte código: frmConsCliente.Show;

Cadastro de Clientes – Formulário Principal

Page 244: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Cadastro de Clientes

Page 245: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Reduzindo o executável compilado

Os executáveis gerados pelo compilador do Lazarus são grandes porque eles incluem informações utilizadas pelo depurador (Debugger);

Para o usuário final, essas informações não tem utilidade. Por isso é recomendado remove-las, por meio de uma compilação diferenciada.

Page 246: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Reduzindo o executável compilado

Além disso, um programa vazio no Lazarus já inclui uma imensa quantia de recursos, tais como: Biblioteca de manipulação de XML; Biblioteca de manipulação de Imagem para

arquivos png, xpm, bmp e ico; Aproximadamente todos os widgets da Biblioteca

de Componentes Lazarus; Toda a Biblioteca de RunTime do Free Pascal;

Sendo assim, o executável é muito grande, mas já inclui de antemão tudo que uma aplicação séria precisará.

Page 247: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

O tamanho do executável do Lazarus inicia grande e cresce muito devagar;

Um projeto em C++ inicia pequeno, porém aumenta rapidamente de tamanho quando os recursos são inseridos para escrever uma aplicação séria.

Reduzindo o executável compilado

Page 248: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Para reduzir o tamanho do executável basta fazer a seguinte configuração:

1. Project -> Compiler Options -> Code -> Smart Linkable (-CX) -> Marcado;

2. Project -> Compiler Options -> Linking -> Debugging -> Desmarque todos, com exceção de Strip Symbols From Executable (-Xs) que deve ficar marcado;

3. Project -> Compiler Options -> Linking -> Link Style -> Link Smart (-XX) -> Marcado.

Reduzindo o executável compilado

Page 249: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Com essa configuração, o executável terá um tamanho de aproximadamente 3 megas, em vez de 15 megas;

É recomendado fazer essa compilação diferenciada apenas quando o aplicativo estiver pronto, pois o processo de compilação fica mais lento com as configurações indicadas, retardando a atividade de desenvolvimento/teste.

Reduzindo o executável compilado

Page 250: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

InstaladorUtilizaremos o Inno Setup Compiler;

É gratuito;

Pode ser usado em aplicativos comerciais sem pagar aos criadores;

Fácil de utilizar;

Com conhecimento mais profundo, pode ser utilizado para criação de instaladores complexos.

Page 251: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Compatível com todas as versões do Windows;

Compatível com aplicativos da arquitetura 64-bits;

Criação de um único executável, facilitando a redistribuição online;

Instaladores com aparência agradável com estilo Windows XP;

Tipos de instalação customizável (Mínimo, padrão, máximo).

Inno Setup Compiler - Características

Page 252: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Acompanha desinstalador;

Instalação de arquivos avançado;

Criação de atalhos no desktop ou menu iniciar;

Atualização de registro;

Suporte a várias línguas;

Suporte a instalação encriptada, com assinatura digital ou senha.

Inno Setup Compiler - Características

Page 253: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Instalando o Inno Setup Compiler

Vá ao site http://www.jrsoftware.org/;

Clique em “Inno Setup”;

Clique em “Download Inno Setup”;

Baixe o executável (compatível com qualquer versão do Windows);

A versão que utilizaremos será a 5.4.2.

Page 254: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Instalando o Inno Setup Compiler

A instalação é bastante intuitiva;

Não há necessidade de nenhuma customização na instalação;

Fica a gosto de cada um alterar o diretório onde os arquivos serão instalados, criar ou não um atalho no desktop e criar ou não uma pasta no menu iniciar, dentre outros detalhes.

Page 255: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Criando um Instalador

Criar um instalador para um aplicativo utilizando o “Script Wizard” do Inno é uma tarefa simples;

Não entraremos em detalhes visando a criação de instaladores complexos;

Caso deseje aprofundar seus conhecimentos, há vasto material no site oficial contendo informações sobre como usar as funcionalidades avançadas do Inno Setup Compiler.

Page 256: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Criaremos o instalador do “Cadastro de clientes”;

Escolhemos esse aplicativo, pois o seu instalador é o mais complexo;

Se desejar, faça o instalador dos outros aplicativos desenvolvidos durante o curso a fim de assimilar o funcionamento do Inno.

Criando um Instalador

Page 257: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Criando o Instalador do “Cadastro de Clientes”

Inicie o Inno Setup Compiler;

Na janela Welcome, selecione a opção “Create a new script file using the Script Wizard” e clique em OK.

Page 258: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Criando o Instalador do “Cadastro de Clientes”

Aparecerá a janela abaixo. Clique em “Next”.

Page 259: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Criando o Instalador do “Cadastro de Clientes”

Especifique algumas informações básicas sobre o aplicativo e clique em “Next”.

Page 260: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Criando o Instalador do “Cadastro de Clientes”

Especifique algumas informações sobre o diretório onde o aplicativo será instalado e clique em “Next”.

Page 261: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Criando o Instalador do “Cadastro de Clientes”

Em “Application main executable file” clique em “Browse...” e selecione o executável do aplicativo compilado pelo Lazarus.

Page 262: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Criando o Instalador do “Cadastro de Clientes”

Em “Other application files” clique em “Add file(s)...” e adicione o banco de dados (banco.db) e o DLL do SQLite3;

Selecione o sqlite3.dll e clique em “Edit...”.

Page 263: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Criando o Instalador do “Cadastro de Clientes”

Em “Destination base folder” selecione “Windows system directory” e clique em “OK”;

Isso instalará o SQLite na pasta System do Windows do usuário.

Page 264: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Criando o Instalador do “Cadastro de Clientes”

Escolha se o usuário poderá iniciar o aplicativo após a conclusão da instalação e clique em “Next”.

Page 265: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Criando o Instalador do “Cadastro de Clientes”

Configure a paste do aplicativo no menu iniciar e a criação de ícones conforme desejar;

É aconselhável marcar as opções: Create na Internet shortcut in the Start Menu folder; Create na Uninstall icon in the Start Menu folder.

Page 266: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Criando o Instalador do “Cadastro de Clientes”

Especifique quais arquivos de documentação deverão aparecer durante a instalação (licença de uso, antes e depois da instalação) e clique em “Next”.

Page 267: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Criando o Instalador do “Cadastro de Clientes”

Especifique em quais línguas o instalador estará à disposição do usuário e clique em “Next”;

No nosso caso, deixamos somente “Brazilian Portuguese” marcado.

Page 268: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Criando o Instalador do “Cadastro de Clientes”

Selecione um diretório onde o instalador será salvo quando compilado. Em seguida, selecione um nome para o instalador. Caso queira, selecione um ícone e uma senha para o instalador;

Clique em “Next”.

Page 269: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Criando o Instalador do “Cadastro de Clientes”

Clique em “Next”.

Page 270: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Criando o Instalador do “Cadastro de Clientes”

Clique em “Finish”.

Page 271: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Criando o Instalador do “Cadastro de Clientes”

Com isso, finalizamos o “Inno Setup Script Wizard” e o código do instalador foi gerado automaticamente, com base nos parâmetros que passamos;

O programa perguntará se você deseja compilar o instalador agora. Clique em Sim.

Page 272: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Criando o Instalador do “Cadastro de Clientes”

O programa perguntará se você deseja salvar script do instalador agora. Clique em Sim e escolha uma pasta adequada;

Sempre que desejar fazer uma alteração no instalador de um aplicativo, abra o Script, altere o que desejar e compile novamente.

Page 273: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Criando o Instalador do “Cadastro de Clientes”

O instalador está criado e pronto para ser distribuido.

Page 274: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Links Interessanteshttp

://www.hardware.com.br/artigos/programacao-orientada-objetos/ - Ótimo artigo sobre P.O.O.;

http://www.t2ti.com/curso/video/delphi/iniciante/delphi_starter.php - Material gratuito sobre Object Pascal e Delphi. Possui outros materiais gratuitos (Java, PHP e C);

http://www2.explorando.com.br/m/2010/06/videoaula-tutorial-lazarus-delphi - Vídeo aula de 2 horas sobre o Lazarus;

http://professorcarlos.blogspot.com/ - Blog que reúne a maior quantidade de informações sobre o Lazarus em português. Possui tutoriais de todos os níveis.

Page 276: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Lazarus - The Complete Guide

Autores: M. van Canneyt, M. Gärtner, S. Heinig, F. Monteiro de Cavalho, I. Ouedraogo.Idioma: Inglês e AlemãoAproximadamente 720 páginashttp://www.blaisepascal.eu/index.php?actie=./subscribers/lazarusbookinfoEnglish

Page 277: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02

Desenvolvendo Aplicativos com Lazarus

Autor: Jean PatrickIdioma: Português346 páginashttp://www.clubedeautores.com.br/book/33568--Desenvolvendo_Aplicativos_com_Lazarus

http://agbook.com.br/book/46758--Desenvolvendo_Aplicativos_com_Lazarus

Page 279: Introduoaodesenvolvimentodeaplicativoscominterfacegrfica Slides 111006160843 Phpapp02