Faculdade 7 de Setembro – Sistemas de informaçã0 – N.E.O.<br />Artur.Gomes.Barreto@gmail.com – 2011.2<br />Introdução ao d...
Objetivos são importantes!<br />“O que vale na vida não é o ponto de partida e sim a caminhada. Caminhando e semeando, no ...
Objetivos<br />Desenvolver aplicativos com interface gráfica;<br />Programação Orientada a Objetos (P.O.O.);<br />Interfac...
Interface de desenvolvimento<br />
Interface de desenvolvimento<br />Lazarus<br />
Programação Orientada a Objetos<br />
Aplicativos gráficos<br />
Banco de dados<br />
Banco de dados<br />
Reduzir o tamanho dos executáveis por meio de uma compilação otimizada;<br />Compilação<br />
Criar um instalador para os aplicativos usando o Inno Setup Compiler;<br />Instalação<br />
Resumo<br />
O que é o Lazarus?<br />IDE de código aberto;<br />Utiliza o compilador Free Pascal;<br />É um clone do Delphi;<br />É com...
Simplicidade;<br />Didática;<br />Oque se aprende no Lazarus é aplicado em qualquer outra IDE;<br />O projeto iniciou em 1...
Comparando as IDEs<br />
Conclusão	<br />O conhecimetoadiquirido durante o curso é independente da I.D.E. que você utilize no futuro!<br />
Instalando o Lazarus<br />Vá ao site http://www.lazarus.freepascal.org/ e clique em “Download”;<br />Selecione o arquivo a...
Instalando o Lazarus<br />A instalação é bastante intuitiva;<br />Não há necessidade de nenhuma customização na instalação...
Antes de começar a utilizar o Lazarus, é necessário realizar uma configuração;<br />O debugger do Lazarus possui um proble...
Desabilitando o Debugger<br />Como o escopo de nosso curso é bastante limitado e não utilizaremos o recurso de debugger, n...
Programação Orientada a Objetos<br />Aproximar o mundo real do mundo virtual;<br />Simular o mundo real dentro do computad...
Classe<br />É a definição de um tipo de objeto;<br />É dividido em duas partes: atributos e métodos;<br />Atributos são as...
O homo sapiens sapiens<br />O homo sapiens sapiens é uma classe;<br />Possui seus atributos:<br />Nome;<br />Idade;<br />A...
Classes Vs. Objetos <br />A classe é uma definição;<br />Objeto é um ente definido por uma classe;<br />O “homo sapiens sa...
Mais um exemplo<br />Cachorro é uma classe;<br />Possui seus atributos:<br />Nome;<br />Raça;<br />Idade;<br />Peso;<br />...
Bilu é um objeto da classe Cachorro;<br />Rex é outro objeto da classe Cachorro;<br />Scooby é outro objeto da classe cach...
Criação de classes<br />Como vimos, as classes possuem atributos e métodos;<br />Os atributos são variáveis que estão dent...
Estrutura da Classe em C++<br />ClassNomeDaClasse {<br />Private:<br />	(Atributos);<br />Public:<br />	(Métodos);<br />};...
Declaração de objetos<br />Para declarar (instanciar) um objeto, basta colocar um identificador depois do nome da classe;<...
Mensagens<br />Uma mensagem é um texto que o objeto consegue entender;<br />Dependendo da mensagem o objeto realiza uma aç...
P.O.O. na prática<br />Quais atributos e métodos um classe carro possui?<br />
Carro<br />
Exercícios<br />De forma análoga ao exemplo do carro, estabeleça a classe cachorro e instancie quantos objetos quiser.<br />
Características básicas do desenvolvimento de aplicativos gráficos<br />Desenha-se as janelas do programa;<br />Utiliza-se...
Elementos básicos<br />
Conhecendo a I.D.E.<br />Quando iniciamos o Lazarus, a tela inicial é parecida com a figura a seguir;<br />Os elementos bá...
Janela superior<br />A janela superior se divide em:<br />Barra de menu principal (Main Menu);<br />Arquivo, Editar etc.<b...
ObjectInspector<br />Encontra-se abaixo da Speed Bar;<br />A parte superior serve para visualizar e acessar todos os compo...
Formulários e Units<br />Encontram-se abaixo da paleta de componentes;<br />Forms são as janelas que estão sendo construíd...
A janela “Messages” proporciona informações gerais para o programador, tais como erros de sintaxe.<br />Messages<br />
Componentes básicos<br />
Componentes de banco de dados<br />Lembre-se: Cada componente é um objeto!<br />
Propriedades Comuns<br />Lembrando que propriedades são os atributos!<br />
Propriedades Comuns<br />Lembrando que propriedades são os atributos!<br />
Métodos Comuns<br />Lembrando que métodos são as ações!<br />
Eventos<br />Eventos são ações programadas que ocorrem quando determinada manifestação acontece;<br />Entende-se por manif...
Eventos<br />Resumidamente:<br />Um evento é aquilo que o programa faz quando algo acontece.<br />
Eventos comuns<br />
Janelas<br />Os aplicativos gráficos são compostos por pelo menos uma janela. Ela é o elemento básico desse tipo de aplica...
Propriedades principais dos Forms<br />As propriedades comuns vistas anteriormente estão presentes no formulário.<br />
Métodos principais dos Forms<br />Os métodos comuns vistos anteriormente estão presentes no formulário.<br />
Eventos principais dos Forms<br />Com exceção do OnEnter e OnExit, os eventos comuns vistos anteriormente estão presentes ...
É interessante conhecer as propriedades e métodos de alguns dos componentes que utilizaremos;<br />Vale lembrar que a melh...
Tbutton<br />A forma mais simples de botão;<br />TBitBtn<br />Botão com uma figura.<br />Descrição dos principais componen...
Descrição dos principais componentes<br />TSpeedButton<br />Botão com figura, utilizado em barras de ferramentas.<br />
Descrição dos principais componentes<br />Tlabel<br />Utilizado para rotulagem.<br />
Descrição dos principais componentes<br />TEdit<br />Linha para entrada de texto.<br />
Descrição dos principais componentes<br />TMemo<br />Caixa de texto com várias linhas.<br />
Descrição dos principais componentes<br />TCheckBox<br />Caixa de checagem;<br />TRadioButton<br />Utilizado para se obter...
Descrição dos principais componentes<br />TRadioGroup<br />Utilizado para agrupar e controlar RadioButtons.<br />
Descrição dos principais componentes<br />TPanel<br />Painel utilizado para agrupar componentes em uma região.<br />
Descrição dos principais componentes<br />TComboBox<br />Lista suspensa onde se escolhe uma opção.<br />
Descrição dos principais componentes<br />TImage<br />Utilizado para exibir figuras.<br />
Descrição dos principais componentes<br />TOpenDialog/TSaveDialog<br />Caixas de diálogo para abrir e salvar arquivos.<br />
Descrição dos principais componentes<br />TMainMenu<br />Menu principal;<br />TPopUpMenu<br />Menu contextual, acessado pe...
Descrição dos principais componentes<br />TMenuItem<br />Elemento constituinte de um menu principal ou contextual.<br />
Dica valiosa<br />Crie um diretório para agrupar seus projetos;<br />Crie uma pasta para cada aplicativo a ser desenvolvid...
1º Programa<br />Nosso primeiro aplicativo será algo bastante simples. O objetivo é ter um primeiro contato com o desenvol...
1º Programa<br />Abra o Lazaruse altere as seguintes propriedades no formulário:<br />
1º Programa<br />Salve o arquivo;<br />Para o nome do projeto, coloque “MPP”;<br />Para o nome da Unit, coloque “u_JanelaP...
1º Programa<br />Coloque um Edit e o modifique da seguinte forma:<br />Coloque um Botão e o modifique da seguinte forma:<b...
1º Programa<br />Selecione o botão e clique na aba Eventos do Inspetor de Objetos. Localize o evento OnClicke digite o seg...
1º Programa<br />
2º Programa<br />Nosso segundo aplicativo será igualmente simples ao primeiro projeto. O objetivo é ampliar o contato com ...
2º Programa<br />Abra o Lazaruse altere as seguintes propriedades no formulário:<br />
2º Programa<br />Salve o arquivo;<br />Para o nome do projeto, coloque “Gangorra”;<br />Para o nome da Unit, coloque “u_Ja...
2º Programa<br />Coloque três botões e os modifique da seguinte forma:<br />
2º Programa<br />Selecione o botão 1 e clique na aba Eventos do Inspetor de Objetos. Localize o evento OnClicke digite o s...
2º Programa<br />Selecione o botão 2 e clique na aba Eventos do Inspetor de Objetos. Localize o evento OnClicke digite o s...
2º Programa<br />Selecione o botão Sair e clique na aba Eventos do Inspetor de Objetos. Localize o evento OnClicke digite ...
2º Programa<br />
Calculadora<br />Nosso terceiro aplicativo será uma calculadora.<br />
Calculadora<br />Abra o Lazaruse altere as seguintes propriedades no formulário:<br />
Calculadora<br />Salve o arquivo;<br />Para o nome do projeto, coloque “Calculadora”;<br />Para o nome da Unit, coloque “u...
Calculadora<br />Colocaremos 16 TButtons. Todos terão as seguintes propriedades:<br />
Calculadora<br />10 botões terão as seguintes propriedades:<br />
Calculadora<br />6 botões terão as seguintes propriedades:<br />
Calculadora<br />A calculadora deve ter a seguinte aparência:<br />
Calculadora<br />Com a janela finalizada, chegou o momento de desenvolver o código de nossa calculadora;<br />Declare as s...
Calculadora<br />No evento OnShow da janela “frm_Calculadora”, coloque o seguinte código:<br />LimparTela := True; <br />N...
Coloque o seguinte código no evento OnClick do botão virgula(,):<br />Visor.Text := Visor.Text+ ',';<br />Com isso, o Viso...
Calculadora<br />No evento OnClick do botão adição, coloque o seguinte código:<br />if(Visor.Text<> '') then<br />begin   ...
Calculadora<br />No evento OnClick do botão subtração, coloque o seguinte código:<br />if(Visor.Text<> '') then<br />begin...
Calculadora<br />No evento OnClick do botão multiplicação, coloque o seguinte código:<br />if(Visor.Text<> '') then<br />b...
Calculadora<br />No evento OnClick do botão divisão, coloque o seguinte código:<br />if(Visor.Text<> '') then<br />begin  ...
Calculadora<br />No evento OnClick do botão igual, coloque o seguinte código:<br />if (Visor.Text <> '') then<br />begin<b...
Calculadora<br />     3:<br />         Begin<br />           Total := Valor_1 * Valor_2;<br />Visor.Text := FloatToStr(Tot...
Calculadora<br />
Editor de textos<br />Nosso quarto aplicativo será um editor de textos.<br />
Editor de textos<br />Inicie o Lazarus e crie uma nova aplicação;<br />Mude a propriedade Namedo formulário para frmPrinci...
Editor de textos<br />Adicione um Main Menu ao formulário com a seguinte estrutura:<br />Arquivo<br />Novo<br />Abrir<br /...
Altere a propriedade Checkeddo Item Alinhamento -> Esquerda para True;<br />Isso é necessário, pois o alinhamento default ...
Editor de textos<br />Altere a propriedade ShortCut de cada item conforme a tabela abaixo.<br />
Adicione um Memo(aba Standard);<br />Altere a propriedade Namepara Texto;<br />Altere a propriedade Alignpara alClient;<br...
Editor de textos<br />Adicione um TOpenDialog (aba Dialogs);<br />Adicione um TSaveDialog(aba Dialogs);<br />Adicione um T...
Editor de textos<br />Nosso projeto deve estar assim:<br />
No evento OnClickdo item Arquivo -> Novo do Main Menu do formulário Principal digite o seguinte código:<br />Texto.Clear;<...
No evento OnClickdo item Editar-> Recortar do Main Menu do formulário Principal digite o seguinte código:<br />Texto.CutTo...
Editor de textos<br />As caixas de diálogos (abrir, salvar, configurações da fonte etc) são exibidas no programa pelo méto...
No evento OnClickdo item Arquivo -> Abrir do Main Menu do formulário Principal digite o seguinte código:<br />If OpenDialo...
No evento OnClickdo item Arquivo -> Salvar do Main Menu do formulário Principal digite o seguinte código:<br />If SaveDial...
Editor de textos<br />Altere as seguintes propriedades do OpenDialoge do SaveDialogadicionados para que o programa abra e ...
No evento OnClickdo item Editar -> Formatar Fonte... -> Fonte do Main Menu do formulário Principal digite o seguinte códig...
No evento OnClickdo item Editar -> Formatar Fonte... -> Cor do Main Menu do formulário Principal digite o seguinte código:...
Editor de textos<br />No evento OnClickdo item Editar -> Alinhamento -> Esquerda do Main Menu do formulário Principal digi...
Editor de textos<br />No evento OnClickdo item Editar -> Alinhamento -> Centralizado do Main Menu do formulário Principal ...
Editor de textos<br />No evento OnClickdo item Editar -> Alinhamento -> Direita do Main Menu do formulário Principal digit...
Editor de textos<br />No evento OnClickdo item Editar -> Formatar Fonte... -> Negrito do Main Menu do formulário Principal...
Editor de textos<br />No evento OnClickdo item Editar -> Formatar Fonte... -> Itálico do Main Menu do formulário Principal...
Editor de textos<br />No evento OnClickdo item Editar -> Formatar Fonte... -> Sublinhado do Main Menu do formulário Princi...
Para criarmos a janela “Sobre”, utilizaremos o método “MessageBox” pertencente a aplicação;<br />Esse método possui três p...
No evento OnClickdo item Ajuda -> Sobre do Main Menu do formulário Principal digite o seguinte código:<br />Application.Me...
Editor de textos<br />Adicione um TToolBar (aba Common Controls);<br />Apertando com o botão direito do mouse no ToolBar q...
Editor de textos<br />Adicione um TImageList (aba Common Controls);<br />Apertando com o botão direito do mouse no ImageLi...
Selecione o ToolBar que foi adicionado e altere a propriedade Images para ImageList1;<br />Altere as propriedades de cada ...
Editor de textos<br />A propriedade Image Index vincula cada botão na barra de ferramenta com um ícone armazenado na Image...
Selecione o Tb_Esquerda e altere a propriedade Down para True;<br />Isso se deve ao fato de o texto estar alinhado à esque...
Editor de textos<br />Como os atalhos criados são equivalentes às opções programadas no Menu Principal, reaproveitaremos t...
Editor de textos<br />
Editor de textos<br />Note que quando clicamos em algum tipo de alinhamento ou estilo pelo menu principal, o botão na barr...
Editor de textos<br />Adicione o seguinte texto no evento OnClickMn_EsquerdaClick:<br />Tb_Esquerda.Down := Mn_Esquerda.Ch...
Editor de textos<br />Adicione o seguinte texto no evento OnClickMn_NegritoClick:<br />Tb_Negrito.Down := Mn_Negrito.Check...
Editor de textos<br />
Banco de dados<br />Um Banco de dados é um conjunto de dados inter-relacionados, constituindo informações sobre um determi...
Banco de dados – Conceitos Importantes<br />Entidade<br />Objetos sobre os quais se mantem informações;<br />Cada entidade...
Banco de dados – Relacionamentos<br />Os relacionamentos representam as ligações entre as tabelas. Podem ser dos seguintes...
Banco de dados – SGBD<br />Um Sistema Gerenciador de Banco de Dados é um software utilizado para:<br />Definir a estrutura...
Banco de dados – Linguagem de definição de dados<br />É utilizada para definir a estrutura básica do banco de dados;<br />...
Banco de dados – Dicionário de dados<br />Contem as definições dos elementos de dados juntamente com suas características;...
Banco de dados – Linguagem de manipulação de dados<br />Utilizada para manipular dados. As ações básicas são:<br />Acresce...
Banco de dados – Operações em SQL<br />Select<br />Consulta registros de tabelas que obedecem a determinados parâmetros;<b...
SQLite3<br />SQLite é uma biblioteca que provê um motor de banco de dados SQL;<br />Não há necessidade de um servidor ou c...
Baixando o SQLite3<br />Vá ao site oficial e click em Downloads;<br />http://www.sqlite.org/<br />Procure a parte “Precomp...
Instalando o SQLite3<br />Instalar o SQLite é muito simples. Basta descompactar o DLL que você baixou na pasta:<br />C:Win...
SQLite Studio é aplicativo bem simples que utilizaremos para criar o nosso banco de dados e as suas tabelas com seus respe...
Vá ao site oficial e click em Downloads;<br />http://sqlitestudio.one.pl/<br />Escolha a versão adequada, dependendo de se...
Cadastro de Clientes<br />Nosso quinto aplicativo será um Cadastro de Clientes utilizando um banco de dados;<br />O SQLite...
Cadastro de Clientes – Estruturando o BD<br />Utilizando o SQLite Studio, crie um banco de dados chamado “Banco.db” e o sa...
Cadastro de Clientes – Formulário Principal<br />Inicie o Lazarus e crie uma nova aplicação;<br />Adicione um Main Menu ao...
Cadastro de Clientes – Formulário Principal<br />No evento OnClickdo item Arquivo-> Sair do Main Menu do formulário Princi...
Adicione um Data Module. Para isso, selecione o menu Arquivo -> Novo. Selecione Data Module , no grupo Módulo e pressione ...
Cadastro de Clientes – Data Module<br />Adicione um TSQLite3Connection(aba SQLdb) no DataModule;<br />Altere a propriedade...
Adicione um TSQLTransaction(aba SQLdb)no DataModule;<br />Altere a propriedade Namepara trGeral;<br />Selecione dbClienten...
Adicione um TSQLQuery (aba SQLdb) no DataModule;<br />Altere a propriedade Namepara queCidade;<br />Selecione dbClientena ...
Adicione outro TSQLQuery(aba SQLdb) no DataModule;<br />Altere a propriedade Namepara queCliente;<br />Selecione dbCliente...
Adicione um TDataSource (aba Data Access)no DataModule;<br />Altere a propriedade Name para dsCidade;<br />Selecione queCi...
Adicione outro TDataSource (aba Data Access)no DataModule;<br />Altere a propriedade Name para dsCliente;<br />Selecione q...
Resumo:<br />SQLite3Connection<br />Estabelece a conexão com o banco de dados;<br />TSQLTransaction<br />Controla as trans...
Cadastro de Clientes – Data Module<br /><ul><li>Nesse estágio, o data module deve estar assim:</li></li></ul><li>Selecione...
Devemos criar uma janela para adicionar, remover e editar os registros da tabela Cidade;<br />O desenho desse form deve te...
Insira um novo form na aplicação;<br />Altere a propriedade Name para frmCidade;<br />Altere a propriedade Caption para Ci...
Cadastro de Clientes – Formulário Cidade<br />Digite u_dmdados no Uses da Unit do formulário Cidades;<br />Isso faz com qu...
Adicione um Tpanel (aba Standard);<br />Altere a propriedade Alignpara alTop;<br />Deixe a propriedade Captionvazia;<br />...
Adicione um TDBNavigator(aba Data Controls)sobre o painel;<br />Altere a propriedade DataSourcepara dsCidade;<br />Adicion...
No primeiro TDBEdit:<br />Altere a propriedade Name para edIdCidade;<br />Altere a propriedade DataSource para dsCidade;<b...
Adicione dois TLabel (aba Standard)e coloque um à esquerda de cada TDBEdit para identificá-los;<br />Altere suas proprieda...
Cadastro de Clientes – Formulário Cidade<br />Adicione um TSpeedButton (aba Additional) sobre o painel;<br />Alterea propr...
Vamos programar a abertura e o fechamento da Query no formulário cidade;<br />A abertura será programada no evento OnShow;...
Selecione o formulário Cidade. Clique na aba Eventos do Inspetor de Objetos. Localize o evento OnShow e digite o seguinte ...
Vamos programar o envio dos dados para o banco;<br />Isso é feito no evento AfterPost da Query;<br />Este evento ocorre se...
Selecione o queCidade  presente no DataModule;<br />Clique na aba Eventos do Inspetor de Objetos. Localize o evento AfterP...
procedure TdmDados.queCidadeAfterPost(DataSet: TDataSet);<br />var<br />posicao: TBookMark;<br />begin<br />try<br />posic...
Clique na aba Eventos do Inspetor de Objetos. Localize o evento AfterDeletee selecione queCidadeAfterPost;<br />Assim, o c...
Vamos programar a abertura do formulário Cidade (frmCidade)a partir no formulário Principal (frmPrincipal);<br />Selecione...
Cadastro de Clientes – Formulário Cliente<br />Devemos criar uma janela para adicionar, remover e editar os registros da t...
Insira um novo form na aplicação;<br />Altere a propriedade Name para frmCliente;<br />Altere a propriedade Caption para C...
Cadastro de Clientes – Formulário Cliente<br />Digite u_dmdados no Uses da Unit do formulário Cliente;<br />Isso faz com q...
Adicione um Tpanel (aba Standard);<br />Altere a propriedade Alignpara alTop;<br />Deixe a propriedade Captionvazia;<br />...
Adicione um TDBNavigator(aba Data Controls)sobre o painel;<br />Altere a propriedade DataSourcepara dsCliente.<br />Cadast...
Cadastro de Clientes – Formulário Cliente<br />Adicione um TSpeedButton (aba Additional) sobre o painel;<br />Alterea prop...
Cadastro de Clientes – Formulário Cliente<br />Adicione dois TDBEdit (aba Data Controls ) no formCliente;<br />No primeiro...
Adicione dois TLabel (aba Standard)e coloque um à esquerda de cada TDBEdit para identificá-los;<br />Altere suas proprieda...
Adicione um TDBLookupComboBox (aba Data Controls) no form Cliente;<br />Altere a propriedade Name para dblIdCidade.<br />C...
Cadastro de Clientes – Formulário Cliente<br />Altere a propriedade DataSource para dsCliente;<br />Altere a propriedade D...
Altere a propriedade Sorted para True;<br />Altere a propriedade Style  para dsDropDownList.<br />Cadastro de Clientes – F...
Adicione um TLabel (aba Standard)  para identificar esse campo;<br />Altere a propriedade Caption para Cidade.<br />Cadast...
Adicione um TDBEdit(aba Data Controls) no form Cliente;<br />Altere a propriedade Name para edTelefone;<br />Altere a prop...
Adicione um TLabel (aba Standard)  para identificar este campo;<br />Altere a propriedade Caption para Telefone.<br />Cada...
Adicione um TDBRadioGroup(aba Data Controls) no form Cliente;<br />Altere  a propriedade Captionpara Tipo;<br />Altere a p...
Cadastro de Clientes – Formulário Cliente<br />Altere a propriedade Items, digitando Pessoa física na primeira linha e Pes...
Vamos programar a abertura e o fechamento da Query no formulário Cliente;<br />A abertura será programada no evento OnShow...
Selecione o formulário Cliente. Clique na aba Eventos do Inspetor de Objetos. Localize o evento OnShow e digite o seguinte...
Vamos programar o envio dos dados para o banco;<br />Isso é feito no evento AfterPost da Query;<br />Este evento ocorre se...
Selecione o queClientepresente no DataModule;<br />Clique na aba Eventos do Inspetor de Objetos. Localize o evento AfterPo...
procedure TdmDados.queClienteAfterPost(DataSet: TDataSet);<br />var<br />posicao: TBookMark;<br />begin<br />try<br />posi...
Clique na aba Eventos do Inspetor de Objetos. Localize o evento AfterDeletee selecione queClienteAfterPost;<br />Assim, o ...
Vamos programar a abertura do formulário Cliente (frmCidade)a partir no formulário Principal (frmPrincipal);<br />Selecion...
Cadastro de Clientes – Consulta Cidade<br />Devemos criar uma janela para consultar os registros da tabela Cidade;<br />O ...
Cadastro de Clientes – Data Module<br />Adicione um TSQLQuery (aba SQLdb) no DataModule;<br />Altere a propriedade Name pa...
Adicione um TDataSource (aba Data Access)no DataModule;<br />Altere a propriedade Name para dsConsCidade;<br />Selecione q...
Insira um novo form na aplicação;<br />Altere a propriedade Name para frmConsCidade;<br />Altere a propriedade Caption par...
Cadastro de Clientes – Consulta Cidade<br />Digite u_dmdados no Uses da Unit do formulário da Consulta Cidade;<br />Isso f...
Adicione um Tpanel (aba Standard);<br />Altere a propriedade Alignpara alTop;<br />Deixe a propriedade Captionvazia;<br />...
Adicione um TRadioGroup(aba Standard) no painel;<br />Altere a propriedade Captionpara Campo;<br />Altere a propriedade It...
Cadastro de Clientes – Consulta Cidade<br />Adicione umTEdit (aba Standard) no painel;<br />Altere a propriedade Nameparae...
Cadastro de Clientes – Consulta Cidade<br />Adicione um TDBGrid (aba Data Controls) no form Cliente;<br />Altere a proprie...
Cadastro de Clientes – Consulta Cidade<br />Adicione um Tbutton (aba Standard) no painel;<br />Altere a propriedade Name p...
Cadastro de Clientes – Consulta Cidade<br />procedure TfrmConsCidade.btnConsultarClick(Sender: TObject);<br />begin<br />w...
Vamos programar a abertura do formulário de Consulta Cidade (frmConsCidade)a partir no formulário Principal (frmPrincipal)...
Cadastro de Clientes – Consulta Clientes<br />Devemos criar uma janela para consultar os registros da tabela Cliente;<br /...
Cadastro de Clientes – Data Module<br />Adicione um TSQLQuery (aba SQLdb) no DataModule;<br />Altere a propriedade Name pa...
Adicione um TDataSource (aba Data Access)no DataModule;<br />Altere a propriedade Name para dsConsCliente;<br />Selecione ...
Insira um novo form na aplicação;<br />Altere a propriedade Name para frmConsCliente;<br />Altere a propriedade Caption pa...
Cadastro de Clientes – Consulta Cliente<br />Digite u_dmdados no Uses da Unit do formulário da Consulta Cliente;<br />Isso...
Adicione um TPanel(aba Standard);<br />Altere a propriedade Alignpara alTop;<br />Deixe a propriedade Captionvazia;<br />A...
Adicione um TRadioGroup(aba Standard) no painel;<br />Altere a propriedade Captionpara Campo;<br />Altere a propriedade It...
Cadastro de Clientes – Consulta Cliente<br />Adicione umTEdit (aba Standard) no painel;<br />Altere a propriedade Namepara...
Adicione um TDBLookupComboBox (aba Data Controls) no painel;<br />Altere a propriedade Name para dblIdCidade.<br />Cadastr...
Cadastro de Clientes – Consulta Cliente<br />Altere a propriedade DataSource para dsCliente;<br />Altere a propriedade Dat...
Altere a propriedade Sorted para True;<br />Altere a propriedade Stylepara dsDropDownList.<br />Cadastro de Clientes – Con...
Cadastro de Clientes – Consulta Cliente<br />Adicione um TRadioGroup(aba Standard) no painel;<br />Altere a propriedade Ca...
Cadastro de Clientes – Consulta Cliente<br />Adicione um TDBGrid (aba Data Controls) no formulário Consulta Cliente;<br />...
Cadastro de Clientes – Consulta Cliente<br />Adicione um Tbutton (aba Standard) no painel;<br />Altere a propriedade Name ...
Cadastro de Clientes – Consulta Cliente<br />procedure TfrmConsCliente.btnConsultarClick(Sender: TObject);<br />begin<br /...
Cadastro de Clientes – Consulta Cliente<br /> 2:<br />begin<br />SQL.Add('selectcl.id_cliente, cl.nome, cl.endereco, ci.no...
Selecione o objeto rgCampo;<br />Clique na aba Eventos do Inspetor de Objetos. Localize o evento OnClicke digite o seguint...
Cadastro de Clientes – Consulta Cliente<br /> case rgCampo.ItemIndexof<br />    2:<br />begin<br />edDado.Enabled:= false;...
Vamos programar a abertura do formulário de Consulta Cliente (frmConsCliente)a partir no formulário Principal (frmPrincipa...
Cadastro de Clientes<br />
Reduzindo o executável compilado<br />Os executáveis gerados pelo compilador do Lazarussão grandes porque eles incluem inf...
Reduzindo o executável compilado<br />Além disso, um programa vazio no Lazarusjá inclui uma imensa quantia de recursos, ta...
O tamanho do executável do Lazarus inicia grande e cresce muito devagar;<br />Um projeto em C++ inicia pequeno, porém aume...
Reduzindo o executável compilado<br />Para reduzir o tamanho do executável basta fazer a seguinte configuração:<br />1. Pr...
Reduzindo o executável compilado<br />Com essa configuração, o executável terá um tamanho de aproximadamente 3 megas, em v...
Instalador<br />Utilizaremos o Inno Setup Compiler;<br />É gratuito;<br />Pode ser usado em aplicativos comerciais sem pag...
Compatível com todas as versões do Windows;<br />Compatível com aplicativos da arquitetura 64-bits;<br />Criação de um úni...
Acompanhadesinstalador;<br />Instalação de arquivosavançado;<br />Criação de atalhos no desktop ou menu iniciar;<br />Atua...
Instalando o Inno Setup Compiler<br />Vá ao site http://www.jrsoftware.org/;<br />Clique em “Inno Setup”;<br />Clique em “...
Instalando o Inno Setup Compiler<br />A instalação é bastante intuitiva;<br />Não há necessidade de nenhuma customização n...
Criando um Instalador<br />Criar um instalador para um aplicativo utilizando o “Script Wizard” do Inno é uma tarefa simple...
Criaremos o instalador do “Cadastro de clientes”;<br />Escolhemos esse aplicativo, pois o seu instalador é o mais complexo...
Criando o Instalador do “Cadastro de Clientes”<br />Inicie o Inno Setup Compiler;<br />Na janela Welcome, selecione a opçã...
Criando o Instalador do “Cadastro de Clientes”<br />Aparecerá a janela abaixo. Clique em “Next”.<br />
Criando o Instalador do “Cadastro de Clientes”<br />Especifique algumas informações básicas sobre o aplicativo e clique em...
Criando o Instalador do “Cadastro de Clientes”<br />Especifique algumas informações sobre o diretório onde o aplicativo se...
Criando o Instalador do “Cadastro de Clientes”<br />Em “Applicationmainexecutable file” clique em “Browse...” e selecione ...
Criando o Instalador do “Cadastro de Clientes”<br />Em “Otherapplication files” clique em “Add file(s)...” e adicione o ba...
Criando o Instalador do “Cadastro de Clientes”<br />Em “Destination base folder” selecione “Windows system directory” e cl...
Criando o Instalador do “Cadastro de Clientes”<br />Escolha se o usuário poderá iniciar o aplicativo após a conclusão da i...
Criando o Instalador do “Cadastro de Clientes”<br />Configure a paste do aplicativo no menu iniciar e a criação de ícones ...
Criando o Instalador do “Cadastro de Clientes”<br />Especifique quais arquivos de documentação deverão aparecer durante a ...
Criando o Instalador do “Cadastro de Clientes”<br />Especifique em quais línguas o instalador estará à disposição do usuár...
Criando o Instalador do “Cadastro de Clientes”<br />Selecione um diretório onde o instalador será salvo quando compilado. ...
Criando o Instalador do “Cadastro de Clientes”<br />Clique em “Next”.<br />
Criando o Instalador do “Cadastro de Clientes”<br />Clique em “Finish”.<br />
Criando o Instalador do “Cadastro de Clientes”<br />Com isso, finalizamos o “Inno Setup Script Wizard” e o código do insta...
Criando o Instalador do “Cadastro de Clientes”<br />O programa perguntará se você deseja salvar script do instalador agora...
Criando o Instalador do “Cadastro de Clientes”<br />O instalador está criado e pronto para ser distribuido.<br />
Links Interessantes<br />http://www.hardware.com.br/artigos/programacao-orientada-objetos/ - Ótimo artigo sobre P.O.O.;<br...
Livros<br />
Lazarus - The Complete Guide<br />Autores: M. van Canneyt, M. Gärtner, S. Heinig, F. Monteiro de Cavalho, I. Ouedraogo.Idi...
Desenvolvendo Aplicativos com Lazarus<br />Autor: Jean PatrickIdioma: Português<br />346 páginashttp://www.clubedeautores....
Programando com o Lazarus<br />Autor: Vitor Amadeu SouzaIdioma: Português <br />64 páginas<br />http://www.clubedeautores....
Introdução ao desenvolvimento de aplicativos com interface gráfica
Introdução ao desenvolvimento de aplicativos com interface gráfica
Upcoming SlideShare
Loading in …5
×

Introdução ao desenvolvimento de aplicativos com interface gráfica

12,792
-1

Published on

Curso ministrado aos alunos do Bacharelado em Sistemas de Informação objetivando apresentar os conceitos fundamentais do desenvolvimento de aplicativos com interface gráfica utilizando a I.D.E. Lazarus.

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
12,792
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
394
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Introdução ao desenvolvimento de aplicativos com interface gráfica

  1. 1. Faculdade 7 de Setembro – Sistemas de informaçã0 – N.E.O.<br />Artur.Gomes.Barreto@gmail.com – 2011.2<br />Introdução ao desenvolvimento de aplicativos com interface gráfica<br />
  2. 2. Objetivos são importantes!<br />“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”.<br /> Cora Carolina<br />
  3. 3. Objetivos<br />Desenvolver aplicativos com interface gráfica;<br />Programação Orientada a Objetos (P.O.O.);<br />Interface de Desenvolvimento (I.D.E.);<br />Banco de dados;<br />Compilação final;<br />Instalador.<br />
  4. 4. Interface de desenvolvimento<br />
  5. 5. Interface de desenvolvimento<br />Lazarus<br />
  6. 6. Programação Orientada a Objetos<br />
  7. 7. Aplicativos gráficos<br />
  8. 8. Banco de dados<br />
  9. 9. Banco de dados<br />
  10. 10. Reduzir o tamanho dos executáveis por meio de uma compilação otimizada;<br />Compilação<br />
  11. 11. Criar um instalador para os aplicativos usando o Inno Setup Compiler;<br />Instalação<br />
  12. 12. Resumo<br />
  13. 13. O que é o Lazarus?<br />IDE de código aberto;<br />Utiliza o compilador Free Pascal;<br />É um clone do Delphi;<br />É compatível com vários sistemas operacionais;<br />O mesmo código pode ser compilado em qualquer plataforma.<br />
  14. 14. Simplicidade;<br />Didática;<br />Oque se aprende no Lazarus é aplicado em qualquer outra IDE;<br />O projeto iniciou em 1998 e cresce cada vez mais;<br />LGLP.<br />Por que utilizar o Lazarus?<br />
  15. 15. Comparando as IDEs<br />
  16. 16.
  17. 17.
  18. 18.
  19. 19.
  20. 20.
  21. 21.
  22. 22.
  23. 23.
  24. 24. Conclusão <br />O conhecimetoadiquirido durante o curso é independente da I.D.E. que você utilize no futuro!<br />
  25. 25. Instalando o Lazarus<br />Vá ao site http://www.lazarus.freepascal.org/ e clique em “Download”;<br />Selecione o arquivo adequado, dependendo de seu sistema operacional;<br />É recomendado que, mesmo utilizando o Windows 64 bits, baixar o Lazarus 32 bits;<br />A versão que utilizaremos será a Lazarus 0.9.30 Win 32 (arquivo de 76.2 megas).<br />
  26. 26. Instalando o Lazarus<br />A instalação é bastante intuitiva;<br />Não há necessidade de nenhuma customização na instalação;<br />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.<br />
  27. 27. Antes de começar a utilizar o Lazarus, é necessário realizar uma configuração;<br />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;<br />Há uma forma de se resolver esse problema, entretanto é mais fácil simplesmente desabilitar o debugger.<br />Desabilitando o Debugger<br />
  28. 28. Desabilitando o Debugger<br />Como o escopo de nosso curso é bastante limitado e não utilizaremos o recurso de debugger, não haverá perdas se o desabilitarmos;<br />Para isso, clique em “Environment”, em seguida em “Options”;<br />Procure a aba “Debugger” e a selecione;<br />Na opção “Debugger Typeand path” selecione “none”;<br />Clique em “OK”. Pronto, o Debugger está desabilitado.<br />
  29. 29.
  30. 30.
  31. 31.
  32. 32.
  33. 33.
  34. 34. Programação Orientada a Objetos<br />Aproximar o mundo real do mundo virtual;<br />Simular o mundo real dentro do computador;<br />Para isso, utiliza-se Objetos;<br />O programador descreve os Objetos por meio das Classes.<br />
  35. 35. Classe<br />É a definição de um tipo de objeto;<br />É dividido em duas partes: atributos e métodos;<br />Atributos são as características básicas dos objetos (são dados);<br />Métodos são as ações básicas que os objetos podem realizar (são funções com ou sem retorno).<br />
  36. 36. O homo sapiens sapiens<br />O homo sapiens sapiens é uma classe;<br />Possui seus atributos:<br />Nome;<br />Idade;<br />Altura;<br />Peso;<br />Etc.<br />Possui seus métodos:<br />Andar;<br />Correr;<br />Saltar;<br />Etc.<br />
  37. 37. Classes Vs. Objetos <br />A classe é uma definição;<br />Objeto é um ente definido por uma classe;<br />O “homo sapiens sapiens” é uma classe que possui os atributos (características) e métodos (ações) definidos anteriormente;<br />Eu, você e sua mãe somos objetos da classe “homo sapiens sapiens”.<br />
  38. 38. Mais um exemplo<br />Cachorro é uma classe;<br />Possui seus atributos:<br />Nome;<br />Raça;<br />Idade;<br />Peso;<br />Etc.<br />Possui seus métodos:<br />Senta;<br />Late;<br />Finge De Morto;<br />Etc.<br />
  39. 39. Bilu é um objeto da classe Cachorro;<br />Rex é outro objeto da classe Cachorro;<br />Scooby é outro objeto da classe cachorro.<br />Mais um exemplo<br />
  40. 40. Criação de classes<br />Como vimos, as classes possuem atributos e métodos;<br />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, booletc);<br />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.<br />
  41. 41. Estrutura da Classe em C++<br />ClassNomeDaClasse {<br />Private:<br /> (Atributos);<br />Public:<br /> (Métodos);<br />};<br />
  42. 42. Declaração de objetos<br />Para declarar (instanciar) um objeto, basta colocar um identificador depois do nome da classe;<br />É semelhante a declaração de uma variável;<br />Exemplos:<br />HomoSapiensSapiens Artur;<br />HomoSapiensSapiens Luana;<br />Cachorro Bilu, Rex, Scooby;<br />NomeDaClasse Obj1, Obj2;<br />
  43. 43. Mensagens<br />Uma mensagem é um texto que o objeto consegue entender;<br />Dependendo da mensagem o objeto realiza uma ação específica;<br />Envia-se uma mensagem a um objeto pelo operador ponto (.);<br />Por exemplo:<br />Artur.Andar;<br />Artur.Idade = ‘24’;<br />Rex.Senta; <br />Scooby.Late; <br />
  44. 44. P.O.O. na prática<br />Quais atributos e métodos um classe carro possui?<br />
  45. 45. Carro<br />
  46. 46. Exercícios<br />De forma análoga ao exemplo do carro, estabeleça a classe cachorro e instancie quantos objetos quiser.<br />
  47. 47. Características básicas do desenvolvimento de aplicativos gráficos<br />Desenha-se as janelas do programa;<br />Utiliza-se componentes básicos para isso;<br />Cada componente inserido na janela é um objeto;<br />Cada objeto possui atributos (propriedades), métodos e respondem a mensagens;<br />As mensagens são os eventos que cada componente pode responder, realizando um procedimento associado.<br />
  48. 48. Elementos básicos<br />
  49. 49. Conhecendo a I.D.E.<br />Quando iniciamos o Lazarus, a tela inicial é parecida com a figura a seguir;<br />Os elementos básicos são:<br />Janela superior;<br />ObjectInspector;<br />Form1;<br />Unit1;<br />Messages.<br />
  50. 50.
  51. 51. Janela superior<br />A janela superior se divide em:<br />Barra de menu principal (Main Menu);<br />Arquivo, Editar etc.<br />Barra de ferramentas rápidas (Speed Bar);<br />Abrir, Salvar etc.<br />Paleta de componentes;<br />Base da programação visual!<br />
  52. 52. ObjectInspector<br />Encontra-se abaixo da Speed Bar;<br />A parte superior serve para visualizar e acessar todos os componentes do formulário selecionado;<br />A parte inferior serve para visualizar e alterar as propriedades e eventos do componente selecionado do formulário em questão.<br />
  53. 53. Formulários e Units<br />Encontram-se abaixo da paleta de componentes;<br />Forms são as janelas que estão sendo construídas;<br />Units são os códigos programáveis das janelas;<br />Cada Form tem possui uma Unit exclusiva.<br />
  54. 54. A janela “Messages” proporciona informações gerais para o programador, tais como erros de sintaxe.<br />Messages<br />
  55. 55. Componentes básicos<br />
  56. 56. Componentes de banco de dados<br />Lembre-se: Cada componente é um objeto!<br />
  57. 57. Propriedades Comuns<br />Lembrando que propriedades são os atributos!<br />
  58. 58. Propriedades Comuns<br />Lembrando que propriedades são os atributos!<br />
  59. 59. Métodos Comuns<br />Lembrando que métodos são as ações!<br />
  60. 60. Eventos<br />Eventos são ações programadas que ocorrem quando determinada manifestação acontece;<br />Entende-se por manifestação: Um click, um duplo-click, fechar uma janela, abrir uma janela, mudança em um componente etc.;<br />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;<br />Ou seja, dado um evento, uma ação é executada;<br />Eventos podem ser compartilhados entre os componentes.<br />
  61. 61. Eventos<br />Resumidamente:<br />Um evento é aquilo que o programa faz quando algo acontece.<br />
  62. 62. Eventos comuns<br />
  63. 63. Janelas<br />Os aplicativos gráficos são compostos por pelo menos uma janela. Ela é o elemento básico desse tipo de aplicativo;<br />É na janela que os componentes serão inseridos;<br />As janelas são objetos da classe TForm;<br />É importante conhecer as principais propriedades, métodos e eventos dessa classe.<br />
  64. 64. Propriedades principais dos Forms<br />As propriedades comuns vistas anteriormente estão presentes no formulário.<br />
  65. 65. Métodos principais dos Forms<br />Os métodos comuns vistos anteriormente estão presentes no formulário.<br />
  66. 66. Eventos principais dos Forms<br />Com exceção do OnEnter e OnExit, os eventos comuns vistos anteriormente estão presentes no formulário.<br />
  67. 67. É interessante conhecer as propriedades e métodos de alguns dos componentes que utilizaremos;<br />Vale lembrar que a melhor forma de aprender esse conteúdo é aliando a teoria, a prática e o tempo;<br />Não tente aprender tudo de uma vez. Desenvolva seu conhecimento lentamente, mas com qualidade.<br />Descrição dos principais componentes<br />
  68. 68. Tbutton<br />A forma mais simples de botão;<br />TBitBtn<br />Botão com uma figura.<br />Descrição dos principais componentes<br />
  69. 69. Descrição dos principais componentes<br />TSpeedButton<br />Botão com figura, utilizado em barras de ferramentas.<br />
  70. 70. Descrição dos principais componentes<br />Tlabel<br />Utilizado para rotulagem.<br />
  71. 71. Descrição dos principais componentes<br />TEdit<br />Linha para entrada de texto.<br />
  72. 72. Descrição dos principais componentes<br />TMemo<br />Caixa de texto com várias linhas.<br />
  73. 73. Descrição dos principais componentes<br />TCheckBox<br />Caixa de checagem;<br />TRadioButton<br />Utilizado para se obter informação de situação em que as opções são exclusivas. Por exemplo: Masculino ou Feminino?<br />
  74. 74. Descrição dos principais componentes<br />TRadioGroup<br />Utilizado para agrupar e controlar RadioButtons.<br />
  75. 75. Descrição dos principais componentes<br />TPanel<br />Painel utilizado para agrupar componentes em uma região.<br />
  76. 76. Descrição dos principais componentes<br />TComboBox<br />Lista suspensa onde se escolhe uma opção.<br />
  77. 77. Descrição dos principais componentes<br />TImage<br />Utilizado para exibir figuras.<br />
  78. 78. Descrição dos principais componentes<br />TOpenDialog/TSaveDialog<br />Caixas de diálogo para abrir e salvar arquivos.<br />
  79. 79. Descrição dos principais componentes<br />TMainMenu<br />Menu principal;<br />TPopUpMenu<br />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.<br />
  80. 80. Descrição dos principais componentes<br />TMenuItem<br />Elemento constituinte de um menu principal ou contextual.<br />
  81. 81. Dica valiosa<br />Crie um diretório para agrupar seus projetos;<br />Crie uma pasta para cada aplicativo a ser desenvolvido para armazenar os formulários, unidades, ícones etc;<br />Com isso, seus programas ficarão organizados;<br />Para iniciar um novo projeto, clique em File -> New... -> Project -> Application;<br />É interessante alterar o ícone e título dos seus programas. Para isso, basta ir em Project -> Project Options e fazer as mudanças.<br />
  82. 82. 1º Programa<br />Nosso primeiro aplicativo será algo bastante simples. O objetivo é ter um primeiro contato com o desenvolvimento de aplicativos gráficos.<br />
  83. 83. 1º Programa<br />Abra o Lazaruse altere as seguintes propriedades no formulário:<br />
  84. 84. 1º Programa<br />Salve o arquivo;<br />Para o nome do projeto, coloque “MPP”;<br />Para o nome da Unit, coloque “u_JanelaPrincipal”;<br />Coloque um Label e o modifique da seguinte forma:<br />
  85. 85. 1º Programa<br />Coloque um Edit e o modifique da seguinte forma:<br />Coloque um Botão e o modifique da seguinte forma:<br />
  86. 86. 1º Programa<br />Selecione o botão e clique na aba Eventos do Inspetor de Objetos. Localize o evento OnClicke digite o seguinte código :<br />Rotulo.Caption := CaixaTexto.Text;<br />Com isso, quando o usuário clicar no botão, o conteúdo que estiver digitado no Edit será copiado para o Label. <br />
  87. 87. 1º Programa<br />
  88. 88. 2º Programa<br />Nosso 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”.<br />
  89. 89. 2º Programa<br />Abra o Lazaruse altere as seguintes propriedades no formulário:<br />
  90. 90. 2º Programa<br />Salve o arquivo;<br />Para o nome do projeto, coloque “Gangorra”;<br />Para o nome da Unit, coloque “u_JanelaPrincipal”.<br />Coloque um Label e o modifique da seguinte forma:<br />
  91. 91. 2º Programa<br />Coloque três botões e os modifique da seguinte forma:<br />
  92. 92. 2º Programa<br />Selecione o botão 1 e clique na aba Eventos do Inspetor de Objetos. Localize o evento OnClicke digite o seguinte código :<br /> Botao_1.Caption := 'OFF';<br />Botao_1.Enabled := False;<br />Botao_2.Caption := 'ON';<br />Botao_2.Enabled := True; <br />
  93. 93. 2º Programa<br />Selecione o botão 2 e clique na aba Eventos do Inspetor de Objetos. Localize o evento OnClicke digite o seguinte código :<br />Botao_2.Caption := 'OFF';<br /> Botao_2.Enabled := False;<br />Botao_1.Caption := 'ON';<br />Botao_1.Enabled := True; <br />
  94. 94. 2º Programa<br />Selecione o botão Sair e clique na aba Eventos do Inspetor de Objetos. Localize o evento OnClicke digite o seguinte método:<br />Close;<br />O eventoOnClick de um objetoocorrequando o mesmoé clicado;<br />Nesseexemplo, as propriedades Enabled e Caption sãoalteradassemprequeoseventoOnClick dos botões 1 e 2 ocorrem. O programa é fechadoquando o eventoOnClick do botão 3 é chamado.<br />
  95. 95. 2º Programa<br />
  96. 96. Calculadora<br />Nosso terceiro aplicativo será uma calculadora.<br />
  97. 97. Calculadora<br />Abra o Lazaruse altere as seguintes propriedades no formulário:<br />
  98. 98. Calculadora<br />Salve o arquivo;<br />Para o nome do projeto, coloque “Calculadora”;<br />Para o nome da Unit, coloque “u_Calculadora”;<br />Coloque um Edit e o modifique da seguinte forma:<br />
  99. 99. Calculadora<br />Colocaremos 16 TButtons. Todos terão as seguintes propriedades:<br />
  100. 100. Calculadora<br />10 botões terão as seguintes propriedades:<br />
  101. 101. Calculadora<br />6 botões terão as seguintes propriedades:<br />
  102. 102. Calculadora<br />A calculadora deve ter a seguinte aparência:<br />
  103. 103. Calculadora<br />Com a janela finalizada, chegou o momento de desenvolver o código de nossa calculadora;<br />Declare as seguintes variáveis globais:<br />Valor_1: Real;<br />Valor_2: Real;<br />Total: Real;<br />Operacao: Integer;<br />LimparTela: Boolean; <br />Essas variáveis devem ser colocadas abaixo da variável frm_Calculadora: Tfrm_Calculadora;<br />
  104. 104. Calculadora<br />No evento OnShow da janela “frm_Calculadora”, coloque o seguinte código:<br />LimparTela := True; <br />No evento OnClick de cada botão numérico, coloque o seguinte código:<br />ifLimparTelathen<br /> Begin<br /> Visor.Text := '';<br /> Visor.Text := 'X';<br />LimparTela := False;<br />end<br />else<br /> Visor.Text := Visor.Text + 'X';<br />X vai de 0 até 9, dependendo do botão;<br />
  105. 105. Coloque o seguinte código no evento OnClick do botão virgula(,):<br />Visor.Text := Visor.Text+ ',';<br />Com isso, o Visor receberá o valor do botão clicado.<br />Calculadora<br />
  106. 106. Calculadora<br />No evento OnClick do botão adição, coloque o seguinte código:<br />if(Visor.Text<> '') then<br />begin Valor_1 := StrToFloat(Visor.Text); <br />Operacao := 1; <br />LimparTela := True;<br />end;<br />
  107. 107. Calculadora<br />No evento OnClick do botão subtração, coloque o seguinte código:<br />if(Visor.Text<> '') then<br />begin Valor_1 := StrToFloat(Visor.Text); <br />Operacao := 2; <br />LimparTela := True;<br />end;<br />
  108. 108. Calculadora<br />No evento OnClick do botão multiplicação, coloque o seguinte código:<br />if(Visor.Text<> '') then<br />begin Valor_1 := StrToFloat(Visor.Text); <br />Operacao := 3; <br />LimparTela := True;<br />end;<br />
  109. 109. Calculadora<br />No evento OnClick do botão divisão, coloque o seguinte código:<br />if(Visor.Text<> '') then<br />begin Valor_1 := StrToFloat(Visor.Text); <br />Operacao := 4; <br />LimparTela := True;<br />end;<br />
  110. 110. Calculadora<br />No evento OnClick do botão igual, coloque o seguinte código:<br />if (Visor.Text <> '') then<br />begin<br /> Valor_2 := StrToFloat(Visor.Text);<br /> Case Operacaoof<br /> 1:<br /> Begin<br /> Total := Valor_1 + Valor_2;<br />Visor.Text := FloatToStr(Total);<br />end;<br /> 2:<br /> Begin<br /> Total := Valor_1 - Valor_2;<br />Visor.Text := FloatToStr(Total);<br />end;<br />
  111. 111. Calculadora<br /> 3:<br /> Begin<br /> Total := Valor_1 * Valor_2;<br />Visor.Text := FloatToStr(Total);<br />end;<br /> 4:<br /> Begin<br />if Valor_2 <> 0 then<br /> Begin<br /> Total := Valor_1 / Valor_2;<br />Visor.Text := FloatToStr(Total);<br />end<br />else<br /> Begin<br />Visor.Text:= 'Erro!';<br />end;<br />end;<br />end;<br />LimparTela := True;<br />end;<br />
  112. 112. Calculadora<br />
  113. 113. Editor de textos<br />Nosso quarto aplicativo será um editor de textos.<br />
  114. 114. Editor de textos<br />Inicie o Lazarus e crie uma nova aplicação;<br />Mude a propriedade Namedo formulário para frmPrincipal;<br />Mude a propriedade Captiondo formulário para Editor de Textos;<br />Mude a propriedade WindowStatedo formulário para wsMaximized;<br />Salve, escolhendo Editor para nome do projeto e u_Principalpara nome da Unit.<br />
  115. 115. Editor de textos<br />Adicione um Main Menu ao formulário com a seguinte estrutura:<br />Arquivo<br />Novo<br />Abrir<br />Salvar<br />----------<br />Sair<br />Editar<br />Recortar<br />Copiar<br />Colar<br />----------<br />Alinhamento<br />Esquerda<br />Centralizado<br />Direita<br />Formatar Fonte...<br />Fonte...<br />Cor...<br />----------<br />Negrito<br />Itálico<br />Sublinhado<br />Ajuda<br />Sobre<br />
  116. 116. Altere a propriedade Checkeddo Item Alinhamento -> Esquerda para True;<br />Isso é necessário, pois o alinhamento default de nosso editor será à esquerda.<br />Editor de textos<br />
  117. 117. Editor de textos<br />Altere a propriedade ShortCut de cada item conforme a tabela abaixo.<br />
  118. 118. Adicione um Memo(aba Standard);<br />Altere a propriedade Namepara Texto;<br />Altere a propriedade Alignpara alClient;<br />Altere a propriedade ScrollBarspara ssVertical;<br />Deixe a propriedade Linesvazia.<br />Editor de textos<br />
  119. 119. Editor de textos<br />Adicione um TOpenDialog (aba Dialogs);<br />Adicione um TSaveDialog(aba Dialogs);<br />Adicione um TFontDialog(aba Dialogs);<br />Adicione um TColorDialog(aba Dialogs).<br />
  120. 120. Editor de textos<br />Nosso projeto deve estar assim:<br />
  121. 121. No evento OnClickdo item Arquivo -> Novo do Main Menu do formulário Principal digite o seguinte código:<br />Texto.Clear;<br />No evento OnClickdo item Arquivo -> Sair do Main Menu do formulário Principal digite o seguinte código:<br />Close;<br />Editor de textos<br />
  122. 122. No evento OnClickdo item Editar-> Recortar do Main Menu do formulário Principal digite o seguinte código:<br />Texto.CutToClipboard; <br />No evento OnClickdo item Editar-> Copiar do Main Menu do formulário Principal digite o seguinte código:<br />Texto.CopyToClipboard; <br />No evento OnClickdo item Editar-> Colar do Main Menu do formulário Principal digite o seguinte código:<br />Texto.PasteFromClipboard; <br />Editor de textos<br />
  123. 123. Editor de textos<br />As caixas de diálogos (abrir, salvar, configurações da fonte etc) são exibidas no programa pelo método Execute;<br />O método retorna True se o usuário clicar no botão OK;<br />O método retorna False se o usuário fechar a caixa de diálogo ou clicar em Cancelar;<br />No primeiro caso, o programa respoderá às alterações da caixa de diálogo exibida.<br />
  124. 124. No evento OnClickdo item Arquivo -> Abrir do Main Menu do formulário Principal digite o seguinte código:<br />If OpenDialog1.Execute then<br />Texto.Lines.LoadFromFile(OpenDialog1.FileName); <br />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”.<br />Editor de textos<br />
  125. 125. No evento OnClickdo item Arquivo -> Salvar do Main Menu do formulário Principal digite o seguinte código:<br />If SaveDialog1.Execute then<br />Texto.Lines.SaveToFile(SaveDialog1.FileName); <br />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.<br />Editor de textos<br />
  126. 126. Editor de textos<br />Altere as seguintes propriedades do OpenDialoge do SaveDialogadicionados para que o programa abra e salve arquivos no formato.txt;<br />Coloque .txt na propriedade DefaultExt;<br />Coloque os seguintes filtros na propriedade Filter;<br />
  127. 127. No evento OnClickdo item Editar -> Formatar Fonte... -> Fonte do Main Menu do formulário Principal digite o seguinte código:<br /> FontDialog1.Font := Texto.Font;<br />IfFontDialog1.Execute then<br />Texto.Font := FontDialog1.Font;<br />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”.<br />Editor de textos<br />
  128. 128. No evento OnClickdo item Editar -> Formatar Fonte... -> Cor do Main Menu do formulário Principal digite o seguinte código:<br /> ColorDialog1.Color := Texto.Font.Color;<br />IfColorDialog1.Execute then<br />Texto.Font.Color := ColorDialog1.Color; <br />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”.<br />Editor de textos<br />
  129. 129. Editor de textos<br />No evento OnClickdo item Editar -> Alinhamento -> Esquerda do Main Menu do formulário Principal digite o seguinte código:<br />Mn_Esquerda.Checked:= True;<br />Texto.Alignment := taLeftJustify;<br />Mn_Centralizado.Checked:= False;<br />Mn_Direita.Checked:= False;<br />É 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. <br />
  130. 130. Editor de textos<br />No evento OnClickdo item Editar -> Alinhamento -> Centralizado do Main Menu do formulário Principal digite o seguinte código:<br />Mn_Centralizado.Checked:= True;<br />Texto.Alignment:= taCenter;<br />Mn_Esquerda.Checked:= False;<br />Mn_Direita.Checked:= False;<br />É 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. <br />
  131. 131. Editor de textos<br />No evento OnClickdo item Editar -> Alinhamento -> Direita do Main Menu do formulário Principal digite o seguinte código:<br />Mn_Direita.Checked:= True;<br /> Texto.Alignment := taRightJustify;<br />Mn_Centralizado.Checked:= False;<br />Mn_Esquerda.Checked:= False;<br />É 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.<br />
  132. 132. Editor de textos<br />No evento OnClickdo item Editar -> Formatar Fonte... -> Negrito do Main Menu do formulário Principal digite o seguinte código:<br />Mn_Negrito.Checked := NotMn_Negrito.Checked;<br />IfMn_Negrito.Checked = Truethen<br />Texto.Font.Style := Texto.Font.Style + [fsBold]<br />else<br />Texto.Font.Style := Texto.Font.Style - [fsBold]; <br />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”. <br />
  133. 133. Editor de textos<br />No evento OnClickdo item Editar -> Formatar Fonte... -> Itálico do Main Menu do formulário Principal digite o seguinte código:<br />Mn_Italico.Checked:= NotMn_Italico.Checked;<br />IfMn_Italico.Checked= Truethen<br />Texto.Font.Style := Texto.Font.Style + [fsItalic]<br />else<br />Texto.Font.Style := Texto.Font.Style - [fsItalic]; <br />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”. <br />
  134. 134. Editor de textos<br />No evento OnClickdo item Editar -> Formatar Fonte... -> Sublinhado do Main Menu do formulário Principal digite o seguinte código:<br />Mn_Sublinhado.Checked:= NotMn_Sublinhado.Checked;<br />IfMn_Sublinhado.Checked= Truethen<br />Texto.Font.Style := Texto.Font.Style + [fsUnderline]<br />else<br />Texto.Font.Style := Texto.Font.Style - [fsUnderline]; <br />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”. <br />
  135. 135. Para criarmos a janela “Sobre”, utilizaremos o método “MessageBox” pertencente a aplicação;<br />Esse método possui três parâmetros:<br />O primeiro é o texto que aparecerá no corpo da caixa de mensagem;<br />O segundo é o título da caixa de mensagem;<br />O terceiro é um inteiro que representa um conjunto de ícone e botões que aparecerá na caixa de mensagem.<br />Editor de textos<br />
  136. 136. No evento OnClickdo item Ajuda -> Sobre do Main Menu do formulário Principal digite o seguinte código:<br />Application.MessageBox('Versão 1.0 do editor de texto','Sobre o Editor de Texto', 0);<br />Consulte a documentação para um conjunto diferente de ícone e botões.<br />Editor de textos<br />
  137. 137. Editor de textos<br />Adicione um TToolBar (aba Common Controls);<br />Apertando com o botão direito do mouse no ToolBar que acabamos de colocar, adicione botões, separadores e botões de checagem (CheckBotton) de acordo com a figura:<br />Separator<br />Separator<br />Separator<br />Separator<br />Botton<br />Botton<br />CheckBotton<br />Botton<br />CheckBotton<br />
  138. 138. Editor de textos<br />Adicione um TImageList (aba Common Controls);<br />Apertando com o botão direito do mouse no ImageList que acabamos de colocar, selecione a opção “ImageList Editor...”;<br />Adicione os ícones (disponíveis na pasta ICO). Altere a ordem utilizando as opções disponíveis caso seja necessário. Clique em OK.<br />
  139. 139. Selecione o ToolBar que foi adicionado e altere a propriedade Images para ImageList1;<br />Altere as propriedades de cada elemento do ToolBar de acordo com a tabela a seguir:<br />Editor de textos<br />
  140. 140. Editor de textos<br />A propriedade Image Index vincula cada botão na barra de ferramenta com um ícone armazenado na ImageList que adicionamos, seguindo a ordem preestabelecida.<br />
  141. 141. Selecione o Tb_Esquerda e altere a propriedade Down para True;<br />Isso se deve ao fato de o texto estar alinhado à esquerda quando o aplicativo é aberto;<br />Selecione o Tb_Esquerda, Tb_Centralizar e Tb_Direita (utilizando o shift) e altere a propriedade Grouped para True;<br />Com isso, quando selecionarmos uma opção de alinhamento, as outras serão desmarcadas.<br />Editor de textos<br />
  142. 142. Editor de textos<br />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;<br />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;<br />Para isso, em cada botão do ToolBar, selecione o evento OnClick respectivo à opção do menu Principal, conforme tabela a seguir.<br />
  143. 143. Editor de textos<br />
  144. 144. Editor de textos<br />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”;<br />O mesmo ocorre no menu principal quando clicamos pela barra de ferramentas;<br />Logo, para o programa ficar mais coeso, devemos adicionar algumas alterações.<br />
  145. 145. Editor de textos<br />Adicione o seguinte texto no evento OnClickMn_EsquerdaClick:<br />Tb_Esquerda.Down := Mn_Esquerda.Checked;<br />Adicione o seguinte texto no evento OnClickMn_CentralizadoClick:<br />Tb_Centralizado.Down:= Mn_Centralizado.Checked;<br />Adicione o seguinte texto no evento OnClickMn_DireitaClick:<br />Tb_Direita.Down:= Mn_Direita.Checked.<br />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.<br />
  146. 146. Editor de textos<br />Adicione o seguinte texto no evento OnClickMn_NegritoClick:<br />Tb_Negrito.Down := Mn_Negrito.Checked;<br />Adicione o seguinte texto no evento OnClickMn_ItalicoClick:<br />Tb_Italico.Down:= Mn_Italico.Checked;<br />Adicione o seguinte texto no evento OnClickMn_SublinhadoClick:<br />Tb_Sublinhado.Down:= Mn_Sublinhado.Checked.<br />Assim, quando determinado evento se manifestar, o valor verdadeiro ou falso da propriedade Checkeddo objeto do menu principal será atribuído à propriedade Down do objeto da barra de ferramenta.<br />
  147. 147. Editor de textos<br />
  148. 148. Banco de dados<br />Um Banco de dados é um conjunto de dados inter-relacionados, constituindo informações sobre um determinado assunto;<br />Banco de Dados Relacional:<br />Tipo de B.D. mais comum;<br />Os dados são organizados em tabelas bidimensionais;<br />Exemplos:<br />Cadastro de clientes;<br />Cadastro de fornecedores;<br />Estoque.<br />
  149. 149. Banco de dados – Conceitos Importantes<br />Entidade<br />Objetos sobre os quais se mantem informações;<br />Cada entidade está representa uma tabela;<br />Atributos<br />Características específicas de cada entidade;<br />Cada atributo é uma coluna de uma tabela;<br />Registro<br />Informação específica sobre um representante da entidade;<br />Cada registro é uma linha de uma tabela;<br />Chave primária<br />Identificador exclusivo para cada registro;<br />É um atributo especial.<br />
  150. 150. Banco de dados – Relacionamentos<br />Os relacionamentos representam as ligações entre as tabelas. Podem ser dos seguintes tipos:<br />Um para um<br />Quando os campos das duas tabelas relacionadas são chaves primárias;<br />É o relacionamento mais raro;<br />Um para muitos<br />Quando o campo da primeira tabela relacionada é chave primária e o campo da segunda não é chave primária;<br />É o relacionamento mais comum;<br />Muitos para muitos<br />Quando os campos das duas tabelas relacionadas não são chaves primárias;<br />Não ocorre na prática, pois há muita redundância. Para evitar isso, é utilizado dois relacionamentos Um para muitos.<br />
  151. 151. Banco de dados – SGBD<br />Um Sistema Gerenciador de Banco de Dados é um software utilizado para:<br />Definir a estrutura de armazenamento de informações em um Banco de Dados;<br />Fornecer meios para manipula-lo e consulta-lo;<br />Seus principais recursos são:<br />Linguagem de definição de dados;<br />Dicionário de dados;<br />Linguagem de manipulação de dados.<br />
  152. 152. Banco de dados – Linguagem de definição de dados<br />É utilizada para definir a estrutura básica do banco de dados;<br />Cria-se as tabelas;<br />Define-se os seus campos.<br />
  153. 153. Banco de dados – Dicionário de dados<br />Contem as definições dos elementos de dados juntamente com suas características;<br />Possui o nome, tipo, tamanho, descrição e formato de todos os campos;<br />Dentre outras informações, indica o histórico de uso e quem pode usar cada elemento de dado.<br />
  154. 154. Banco de dados – Linguagem de manipulação de dados<br />Utilizada para manipular dados. As ações básicas são:<br />Acrescentar;<br />Alterar;<br />Apagar;<br />Recuperar;<br />A linguagem mais utilizada é a SQL (Structured Query Language).<br />
  155. 155. Banco de dados – Operações em SQL<br />Select<br />Consulta registros de tabelas que obedecem a determinados parâmetros;<br />Sintaxe:<br />Select*Campos*From*Tabelas* Where*Parâmetros*;<br />Update<br />Altera os valores dos registros de tabelas;<br />Delete<br />Remove registros de tabelas.<br />
  156. 156. SQLite3<br />SQLite é uma biblioteca que provê um motor de banco de dados SQL;<br />Não há necessidade de um servidor ou configuração;<br />Está disponível para Window, Linux e Mac OS;<br />Pode-se fazer aplicativos comerciais sem pagar nada aos criadores do SQLite.<br />
  157. 157. Baixando o SQLite3<br />Vá ao site oficial e click em Downloads;<br />http://www.sqlite.org/<br />Procure a parte “PrecompiledBinaries For Windows”;<br />Baixe o arquivo sqlite-dll-win32-x86-XXXXXXX.zip;<br />É uma DLL de aproximadamente 280 kb.<br />
  158. 158. Instalando o SQLite3<br />Instalar o SQLite é muito simples. Basta descompactar o DLL que você baixou na pasta:<br />C:WindowsSystem32 se você usa o Windows XP ou anteriores;<br />C:WindowsSystem32 se você usa o Windows Vista ou Seven 32 bits;<br />C:WindowsSysWOW64 se você usa o Windows Vista ou Seven 64 bits.<br />
  159. 159. SQLite Studio é aplicativo bem simples que utilizaremos para criar o nosso banco de dados e as suas tabelas com seus respectivos campos;<br />Está disponível para Windows, Linux e Mac OS;<br />Pode-se fazer aplicativos comerciais sem pagar nada aos criadores do SQLite Studio.<br />SQLiteStudio<br />
  160. 160. Vá ao site oficial e click em Downloads;<br />http://sqlitestudio.one.pl/<br />Escolha a versão adequada, dependendo de seu sistema operacional;<br />Basta rodar. O programa não possui instalador.<br />Instalando o SQLite Studio<br />
  161. 161. Cadastro de Clientes<br />Nosso quinto aplicativo será um Cadastro de Clientes utilizando um banco de dados;<br />O SQLite 3 deve estar devidamente instalado;<br />Retirei esse tutorial do site http://professorcarlos.blogspot.com/, adaptando alguns detalhes.<br />
  162. 162. Cadastro de Clientes – Estruturando o BD<br />Utilizando o SQLite Studio, crie um banco de dados chamado “Banco.db” e o salve na pasta do projeto;<br />Adicione duas tabelas com os seguintes nomes, campos e propriedades:<br />Cidade<br />id_cidade-> Integer, Primary Key<br />Nome -> Varchar(30)<br />Cliente<br />Id_cliente -> Integer, Primary Key<br />Nome -> Varchar(40)<br />Endereco -> Varchar(40)<br />Id_cidade -> Integer, Foreign Key<br />Telefone -> Varchar(14)<br />Tipo -> Char(1)<br />
  163. 163. Cadastro de Clientes – Formulário Principal<br />Inicie o Lazarus e crie uma nova aplicação;<br />Adicione um Main Menu ao formulário com a seguinte estrutura:<br />Arquivo<br />Sair<br />Cadastro<br />Cidade<br />Cliente<br />Consulta<br />Cidade<br />Cliente<br />
  164. 164. Cadastro de Clientes – Formulário Principal<br />No evento OnClickdo item Arquivo-> Sair do Main Menu do formulário Princial digite o seguinte código:<br />Close;<br />Mude a propriedade Name desse form para frmPrincipal ;<br />Mude a propriedade BorderStyledesse form para bsSingle;<br />Mude a propriedade Captiondesse form para Cadastro de Clientes;<br />Salve, escolhendo Clientes para nome do projeto e u_principalpara nome da Unit.<br />
  165. 165. Adicione um Data Module. Para isso, selecione o menu Arquivo -> Novo. Selecione Data Module , no grupo Módulo e pressione o botão OK;<br />Mude a propriedade Name do Data Module para dmDados e mande salvar. O nome da Unit do dmDados deve ser u_dmdados.<br />Cadastro de Clientes – Data Module<br />
  166. 166. Cadastro de Clientes – Data Module<br />Adicione um TSQLite3Connection(aba SQLdb) no DataModule;<br />Altere a propriedade Name para dbCliente;<br />Na propriedade DatabaseNamecoloque ‘banco.db’ (sem aspas); <br />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;<br />Mude a propriedade Connected para False.<br />
  167. 167. Adicione um TSQLTransaction(aba SQLdb)no DataModule;<br />Altere a propriedade Namepara trGeral;<br />Selecione dbClientena propriedade Database;<br />Selecione o SQLite3Connectionque você adicionou no Data Module e escolha trGeralna propriedade Transaction.<br />Cadastro de Clientes – Data Module<br />
  168. 168. Adicione um TSQLQuery (aba SQLdb) no DataModule;<br />Altere a propriedade Namepara queCidade;<br />Selecione dbClientena propriedade Database;<br />Digite select * fromcidade na propriedade SQL;<br />Selecione trGeralna propriedade Transaction. <br />Cadastro de Clientes – Data Module<br />
  169. 169. Adicione outro TSQLQuery(aba SQLdb) no DataModule;<br />Altere a propriedade Namepara queCliente;<br />Selecione dbClientena propriedade Database;<br />Digite select * fromcliente na propriedade SQL;<br />Selecione trGeralna propriedade Transaction. <br />Cadastro de Clientes – Data Module<br />
  170. 170. Adicione um TDataSource (aba Data Access)no DataModule;<br />Altere a propriedade Name para dsCidade;<br />Selecione queCidadeem DataSet. <br />Cadastro de Clientes – Data Module<br />
  171. 171. Adicione outro TDataSource (aba Data Access)no DataModule;<br />Altere a propriedade Name para dsCliente;<br />Selecione queClienteem DataSet. <br />Cadastro de Clientes – Data Module<br />
  172. 172. Resumo:<br />SQLite3Connection<br />Estabelece a conexão com o banco de dados;<br />TSQLTransaction<br />Controla as transações;<br />TSQLQuery<br />Define uma conexão com uma tabela do banco;<br />TDataSource<br />Estabelece uma ligação entre a tabela e os componentes gráficos que irão ler os campos dessa tabela.<br />Cadastro de Clientes – Data Module<br />
  173. 173. Cadastro de Clientes – Data Module<br /><ul><li>Nesse estágio, o data module deve estar assim:</li></li></ul><li>Selecione o formulário principal e, em sua respectiva Unit, adicione u_dmdados em Uses;<br />Isso faz com que o formulário principal acesse os objetos do data module;<br />Selecione o formulário principal. Clique na aba Eventos do Inspetor de Objetos. Localize o evento OnShow e digite o seguinte código:<br />dmDados.dbCliente.Open;<br />Com isso, a conexão com o banco de dados será estabeleida sempre que o programa for inicializado.<br />Cadastro de Clientes – Formulário Principal<br />
  174. 174. Devemos criar uma janela para adicionar, remover e editar os registros da tabela Cidade;<br />O desenho desse form deve ter a seguinte aparência:<br />Cadastro de Clientes – Formulário Cidade<br />
  175. 175. Insira um novo form na aplicação;<br />Altere a propriedade Name para frmCidade;<br />Altere a propriedade Caption para Cidades;<br />Salve, utilizando u_cidade como o nome da Unit.<br />Cadastro de Clientes – Formulário Cidade<br />
  176. 176. Cadastro de Clientes – Formulário Cidade<br />Digite u_dmdados no Uses da Unit do formulário Cidades;<br />Isso faz com que esse formulário acesse os objetos do Data Module.<br />
  177. 177. Adicione um Tpanel (aba Standard);<br />Altere a propriedade Alignpara alTop;<br />Deixe a propriedade Captionvazia;<br />Altere a propriedade BevelInnerparabvLowered;<br />Altere a propriedade BevelOuterbvRaised.<br />Cadastro de Clientes – Formulário Cidade<br />
  178. 178. Adicione um TDBNavigator(aba Data Controls)sobre o painel;<br />Altere a propriedade DataSourcepara dsCidade;<br />Adicione dois TDBEdit (aba Data Controls) no form Cidade.<br />Cadastro de Clientes – Formulário Cidade<br />
  179. 179. No primeiro TDBEdit:<br />Altere a propriedade Name para edIdCidade;<br />Altere a propriedade DataSource para dsCidade;<br />Digite ID_CIDADE em DataField(Provocará um erro, mas basta clicar em OK);<br />No segundo TDBEdit:<br />Altere a propriedade Name para edNome;<br />Altere a proprieadeDataSourceparadsCidade;<br />Digite NOME em DataField(Provocará um erro, mas basta clicar em OK).<br />Cadastro de Clientes – Formulário Cidade<br />
  180. 180. Adicione dois TLabel (aba Standard)e coloque um à esquerda de cada TDBEdit para identificá-los;<br />Altere suas propriedades Captionpara IDe Nome, respectivamente.<br />Cadastro de Clientes – Formulário Cidade<br />
  181. 181. Cadastro de Clientes – Formulário Cidade<br />Adicione um TSpeedButton (aba Additional) sobre o painel;<br />Alterea propriedade Name para btnSair;<br />Altere a propriedades Caption para Sair;<br />Altere a propriedades Heightpara 25;<br />Altere a propriedades Widrhpara 25;<br />Clique na aba Eventos do Inspetor de Objetos. Localize o evento OnClickdeste botão e digite:<br />Close;<br />
  182. 182. Vamos programar a abertura e o fechamento da Query no formulário cidade;<br />A abertura será programada no evento OnShow;<br />O fechamento será programado no evento OnClose.<br />Cadastro de Clientes – Formulário Cidade<br />
  183. 183. Selecione o formulário Cidade. Clique na aba Eventos do Inspetor de Objetos. Localize o evento OnShow e digite o seguinte código:<br />dmDados.queCidade.Open;<br />No evento OnClosedo formulário Cidade digite o seguinte código:<br />dmDados.queCidade.Close.<br />Cadastro de Clientes – Formulário Cidade<br />
  184. 184. Vamos programar o envio dos dados para o banco;<br />Isso é feito no evento AfterPost da Query;<br />Este evento ocorre sempre depois que um registro égravado no banco.<br />Cadastro de Clientes – Enviando os dados<br />
  185. 185. Selecione o queCidade presente no DataModule;<br />Clique na aba Eventos do Inspetor de Objetos. Localize o evento AfterPoste digite o seguinte código:<br />Cadastro de Clientes – Data Module<br />
  186. 186. procedure TdmDados.queCidadeAfterPost(DataSet: TDataSet);<br />var<br />posicao: TBookMark;<br />begin<br />try<br />posicao := queCidade.GetBookmark;<br />queCidade.ApplyUpdates;<br />iftrGeral.Activethen<br />begin<br />trGeral.CommitRetaining;<br />queCidade.GotoBookmark(posicao);<br />end;<br />except<br />trGeral.Rollback;<br />end;<br />end;<br />Cadastro de Clientes – Data Module<br />
  187. 187. Clique na aba Eventos do Inspetor de Objetos. Localize o evento AfterDeletee selecione queCidadeAfterPost;<br />Assim, o código que executa a mesma operação necessária no AfterDelete é reaproveitado.<br />Cadastro de Clientes – Data Module<br />
  188. 188. Vamos programar a abertura do formulário Cidade (frmCidade)a partir no formulário Principal (frmPrincipal);<br />Selecione a Unit do formulário Principal (u_principal) e digite u_cidadeno Uses;<br />Isso faz com que esse formulário acesse os objetos do formulário Cidade;<br />No evento OnClickdo item Cadastros -> Cidades do Main Menu do formulário Princial digite o seguinte código:<br />frmCidade.Show;<br />Cadastro de Clientes – Formulário Principal<br />
  189. 189. Cadastro de Clientes – Formulário Cliente<br />Devemos criar uma janela para adicionar, remover e editar os registros da tabela Cliente;<br />O desenho desse form deve ter a seguinte aparência:<br />
  190. 190. Insira um novo form na aplicação;<br />Altere a propriedade Name para frmCliente;<br />Altere a propriedade Caption para Clientes;<br />Salve, utilizando u_cliente como o nome da Unit.<br />Cadastro de Clientes – Formulário Cliente<br />
  191. 191. Cadastro de Clientes – Formulário Cliente<br />Digite u_dmdados no Uses da Unit do formulário Cliente;<br />Isso faz com que esse formulário acesse os objetos do Data Module.<br />
  192. 192. Adicione um Tpanel (aba Standard);<br />Altere a propriedade Alignpara alTop;<br />Deixe a propriedade Captionvazia;<br />Altere a propriedade BevelInnerparabvLowered;<br />Altere a propriedade BevelOuterbvRaised.<br />Cadastro de Clientes – Formulário Cliente<br />
  193. 193. Adicione um TDBNavigator(aba Data Controls)sobre o painel;<br />Altere a propriedade DataSourcepara dsCliente.<br />Cadastro de Clientes – Formulário Cliente<br />
  194. 194. Cadastro de Clientes – Formulário Cliente<br />Adicione um TSpeedButton (aba Additional) sobre o painel;<br />Alterea propriedade Name para btnSair;<br />Altere a propriedades Caption para Sair;<br />Altere a propriedades Heightpara 25;<br />Altere a propriedades Widrhpara 25;<br />Clique na aba Eventos do Inspetor de Objetos. Localize o evento OnClickdeste botão e digite:<br />Close;<br />
  195. 195. Cadastro de Clientes – Formulário Cliente<br />Adicione dois TDBEdit (aba Data Controls ) no formCliente;<br />No primeiro TDBEdit:<br />Altere a propriedade Name para edIdCliente;<br />Altere a propriedade DataSource para dsCliente;<br />Digite ID_CLIENTE em DataField(Provocará um erro, mas basta clicar em OK);<br />No segundo TDBEdit:<br />Altere a propriedade Name para edNome;<br />Altere a proprieadeDataSource para dsCliente;<br />Digite NOME em DataField(Provocará um erro, mas basta clicar em OK).<br />
  196. 196. Adicione dois TLabel (aba Standard)e coloque um à esquerda de cada TDBEdit para identificá-los;<br />Altere suas propriedades Captionpara IDe Nome, respectivamente.<br />Cadastro de Clientes – Formulário Cliente<br />
  197. 197. Adicione um TDBLookupComboBox (aba Data Controls) no form Cliente;<br />Altere a propriedade Name para dblIdCidade.<br />Cadastro de Clientes – Formulário Cliente<br />
  198. 198. Cadastro de Clientes – Formulário Cliente<br />Altere a propriedade DataSource para dsCliente;<br />Altere a propriedade DataField para ID_CIDADE;<br />Altere a propriedade ListSource para dsCidade;<br />Altere a propriedadeListField para NOME;<br />Altere a propriedade KeyField para ID_CIDADE.<br />
  199. 199. Altere a propriedade Sorted para True;<br />Altere a propriedade Style para dsDropDownList.<br />Cadastro de Clientes – Formulário Cliente<br />
  200. 200. Adicione um TLabel (aba Standard) para identificar esse campo;<br />Altere a propriedade Caption para Cidade.<br />Cadastro de Clientes – Formulário Cliente<br />
  201. 201. Adicione um TDBEdit(aba Data Controls) no form Cliente;<br />Altere a propriedade Name para edTelefone;<br />Altere a propriedade DataSource para dsCliente;<br />Digite TELEFONEem DataField(Provocará um erro, mas basta clicar em OK).<br />Cadastro de Clientes – Formulário Cliente<br />
  202. 202. Adicione um TLabel (aba Standard) para identificar este campo;<br />Altere a propriedade Caption para Telefone.<br />Cadastro de Clientes – Formulário Cliente<br />
  203. 203. Adicione um TDBRadioGroup(aba Data Controls) no form Cliente;<br />Altere a propriedade Captionpara Tipo;<br />Altere a propriedade Name para rgTipo;<br />Altere a propriedade DataSource para dsCliente;<br />Altere a propriedadeDataFieldpara TIPO.<br />Cadastro de Clientes – Formulário Cliente<br />
  204. 204. Cadastro de Clientes – Formulário Cliente<br />Altere a propriedade Items, digitando Pessoa física na primeira linha e Pessoa jurídica na segunda e pressione OK;<br />Altere a propriedade Values, digite F na primeria linha e J na segunda;<br />A letra F será gravada no banco de dados quando for selecionada a opção Pessoa física. Caso contrário, J será gravado;<br />Altere a propriedade Columns para 2.<br />
  205. 205. Vamos programar a abertura e o fechamento da Query no formulário Cliente;<br />A abertura será programada no evento OnShow;<br />O fechamento será programado no evento OnClose.<br />Cadastro de Clientes – Formulário Cliente<br />
  206. 206. Selecione o formulário Cliente. Clique na aba Eventos do Inspetor de Objetos. Localize o evento OnShow e digite o seguinte código:<br />dmDados.queCliente.Open;<br />No evento OnClosedo formulário Cliente digite o seguinte código:<br />dmDados.queCliente.Close;<br />Cadastro de Clientes – Formulário Cliente<br />
  207. 207. Vamos programar o envio dos dados para o banco;<br />Isso é feito no evento AfterPost da Query;<br />Este evento ocorre sempre depois que um registro égravado no banco.<br />Cadastro de Clientes – Enviando os dados<br />
  208. 208. Selecione o queClientepresente no DataModule;<br />Clique na aba Eventos do Inspetor de Objetos. Localize o evento AfterPoste digite o seguinte código:<br />Cadastro de Clientes – Data Module<br />
  209. 209. procedure TdmDados.queClienteAfterPost(DataSet: TDataSet);<br />var<br />posicao: TBookMark;<br />begin<br />try<br />posicao := queCliente.GetBookmark;<br />queCliente.ApplyUpdates;<br />iftrGeral.Activethen<br />begin<br />trGeral.CommitRetaining;<br />queCliente.GotoBookmark(posicao);<br />end;<br />except<br />trGeral.Rollback;<br />end;<br />end; <br />Cadastro de Clientes – Data Module<br />
  210. 210. Clique na aba Eventos do Inspetor de Objetos. Localize o evento AfterDeletee selecione queClienteAfterPost;<br />Assim, o código que executa a mesma operação necessária no AfterDelete é reaproveitado.<br />Cadastro de Clientes – Data Module<br />
  211. 211. Vamos programar a abertura do formulário Cliente (frmCidade)a partir no formulário Principal (frmPrincipal);<br />Selecione a Unit do formulário Principal (u_principal) e digite u_clienteno Uses;<br />Isso faz com que esse formulário acesse os objetos do formulário Cliente;<br />No evento OnClickdo item Cadastros -> Clientes do Main Menu do formulário Princial digite o seguinte código:<br />frmCliente.Show;<br />Cadastro de Clientes – Formulário Principal<br />
  212. 212. Cadastro de Clientes – Consulta Cidade<br />Devemos criar uma janela para consultar os registros da tabela Cidade;<br />O desenho desse form deve ter a seguinte aparência:<br />
  213. 213. Cadastro de Clientes – Data Module<br />Adicione um TSQLQuery (aba SQLdb) no DataModule;<br />Altere a propriedade Name para queConsCidade;<br />Selecione dbCliente na propriedade Database;<br />Selecione trGeral na propriedade Transaction. <br />
  214. 214. Adicione um TDataSource (aba Data Access)no DataModule;<br />Altere a propriedade Name para dsConsCidade;<br />Selecione queConsCidadeem DataSet. <br />Cadastro de Clientes – Data Module<br />
  215. 215. Insira um novo form na aplicação;<br />Altere a propriedade Name para frmConsCidade;<br />Altere a propriedade Caption para Consulta de cidades;<br />Salve, utilizando u_conscidadecomo o nome da Unit.<br />Cadastro de Clientes – Consulta Cidade<br />
  216. 216. Cadastro de Clientes – Consulta Cidade<br />Digite u_dmdados no Uses da Unit do formulário da Consulta Cidade;<br />Isso faz com que esse formulário acesse os objetos do Data Module.<br />
  217. 217. Adicione um Tpanel (aba Standard);<br />Altere a propriedade Alignpara alTop;<br />Deixe a propriedade Captionvazia;<br />Altere a propriedade BevelInnerparabvLowered;<br />Altere a propriedade BevelOuterbvRaised.<br />Cadastro de Clientes – Consulta Cidade<br />
  218. 218. Adicione um TRadioGroup(aba Standard) no painel;<br />Altere a propriedade Captionpara Campo;<br />Altere a propriedade Items, digitando Códigona primeira linha e Nome na segunda e pressione OK;<br />Altere a propriedade Namepara rgCampo.<br />Cadastro de Clientes – Consulta Cidade<br />
  219. 219. Cadastro de Clientes – Consulta Cidade<br />Adicione umTEdit (aba Standard) no painel;<br />Altere a propriedade NameparaedDado;<br />Delete o conteúdo da propriedade Text;<br />Adicione um TLabel(aba Standard);<br />Altere a propriedade Caption para Dado a consultar.<br />
  220. 220. Cadastro de Clientes – Consulta Cidade<br />Adicione um TDBGrid (aba Data Controls) no form Cliente;<br />Altere a propriedade Name para dbgDados;<br />Altere a propriedade DataSourcepara dsConsCidade;<br />Altere a propriedade Alignpara alClient;<br />Altere a propriedade Options -> dgAutoSizeColumnspara True. <br />
  221. 221. Cadastro de Clientes – Consulta Cidade<br />Adicione um Tbutton (aba Standard) no painel;<br />Altere a propriedade Name para btnConsultar;<br />Altere a propriedade Caption para Consultar;<br />Clique na aba Eventos do Inspetor de Objetos. Localize o evento OnClicke digite o seguinte código:<br />
  222. 222. Cadastro de Clientes – Consulta Cidade<br />procedure TfrmConsCidade.btnConsultarClick(Sender: TObject);<br />begin<br />withdmDados.queConsCidade do<br />begin<br /> Close;<br />SQL.Clear;<br />ifrgCampo.ItemIndex = 0 then<br />begin<br />SQL.Add('select * from cidade whereid_cidade = :pIdCidade');<br />Params[0].Value:= StrToInt(edDado.Text);<br />end<br />else<br />begin<br />SQL.Add('select * from cidade where nome like :pNome');<br />Params[0].Value := edDado.Text + '%';<br />end;<br /> Open;<br />end;<br />end;<br />
  223. 223. Vamos programar a abertura do formulário de Consulta Cidade (frmConsCidade)a partir no formulário Principal (frmPrincipal);<br />Selecione a Unit do formulário Principal (u_principal) e digite u_conscidadeno Uses;<br />Isso faz com que esse formulário acesse os objetos do formulário Consulta Cidade;<br />No evento OnClickdo item Consultas -> Cidade do Main Menu do formulário Princial digite o seguinte código:<br />frmConsCidade.Show;<br />Cadastro de Clientes – Formulário Principal<br />
  224. 224. Cadastro de Clientes – Consulta Clientes<br />Devemos criar uma janela para consultar os registros da tabela Cliente;<br />O desenho desse form deve ter a seguinte aparência:<br />
  225. 225. Cadastro de Clientes – Data Module<br />Adicione um TSQLQuery (aba SQLdb) no DataModule;<br />Altere a propriedade Name para queConsCliente;<br />Selecione dbCliente na propriedade Database;<br />Selecione trGeral na propriedade Transaction. <br />
  226. 226. Adicione um TDataSource (aba Data Access)no DataModule;<br />Altere a propriedade Name para dsConsCliente;<br />Selecione queConsCidadeem DataSet. <br />Cadastro de Clientes – Data Module<br />
  227. 227. Insira um novo form na aplicação;<br />Altere a propriedade Name para frmConsCliente;<br />Altere a propriedade Caption para Consulta de clientes;<br />Salve, utilizando u_consclientecomo o nome da Unit.<br />Cadastro de Clientes – Consulta Cliente<br />
  228. 228. Cadastro de Clientes – Consulta Cliente<br />Digite u_dmdados no Uses da Unit do formulário da Consulta Cliente;<br />Isso faz com que esse formulário acesse os objetos do Data Module.<br />
  229. 229. Adicione um TPanel(aba Standard);<br />Altere a propriedade Alignpara alTop;<br />Deixe a propriedade Captionvazia;<br />Altere a propriedade BevelInnerparabvLowered;<br />Altere a propriedade BevelOuterbvRaised.<br />Cadastro de Clientes – Consulta Cliente<br />
  230. 230. Adicione um TRadioGroup(aba Standard) no painel;<br />Altere a propriedade Captionpara Campo;<br />Altere a propriedade Items, digitando Códigona primeira linha e Nome na segunda, Cidade na terceira, Tipo na quarta e pressione OK;<br />Altere a propriedade Namepara rgCampo.<br />Cadastro de Clientes – Consulta Cliente<br />
  231. 231. Cadastro de Clientes – Consulta Cliente<br />Adicione umTEdit (aba Standard) no painel;<br />Altere a propriedade NameparaedDado;<br />Delete o conteúdo da propriedade Text;<br />Adicione um TLabel(aba Standard) no painel;<br />Altere a propriedade Caption para Dado a consultar.<br />
  232. 232. Adicione um TDBLookupComboBox (aba Data Controls) no painel;<br />Altere a propriedade Name para dblIdCidade.<br />Cadastro de Clientes – Consulta Cliente<br />
  233. 233. Cadastro de Clientes – Consulta Cliente<br />Altere a propriedade DataSource para dsCliente;<br />Altere a propriedade DataField para ID_CIDADE;<br />Altere a propriedade ListSource para dsCidade;<br />Altere a propriedadeListField para NOME;<br />Altere a propriedade KeyField para ID_CIDADE.<br />
  234. 234. Altere a propriedade Sorted para True;<br />Altere a propriedade Stylepara dsDropDownList.<br />Cadastro de Clientes – Consulta Cliente<br />
  235. 235. Cadastro de Clientes – Consulta Cliente<br />Adicione um TRadioGroup(aba Standard) no painel;<br />Altere a propriedade Captionpara Tipo;<br />Altere a propriedade Items, digitando Pessoa física na primeira linha e Pessoa jurídica na segunda e pressione OK;<br />Altere a propriedade Columns para 2;<br />Altere a propriedade Namepara rgTipo.<br />
  236. 236. Cadastro de Clientes – Consulta Cliente<br />Adicione um TDBGrid (aba Data Controls) no formulário Consulta Cliente;<br />Altere a propriedade Name para dbgDados;<br />Altere a propriedade DataSourcepara dsConsCliente;<br />Altere a propriedade Align para alClient;<br />Altere a propriedade Options -> dgAutoSizeColumns para True. <br />
  237. 237. Cadastro de Clientes – Consulta Cliente<br />Adicione um Tbutton (aba Standard) no painel;<br />Altere a propriedade Name para btnConsultar;<br />Altere a propriedade Caption para Consultar;<br />Clique na aba Eventos do Inspetor de Objetos. Localize o evento OnClicke digite o seguinte código:<br />
  238. 238. Cadastro de Clientes – Consulta Cliente<br />procedure TfrmConsCliente.btnConsultarClick(Sender: TObject);<br />begin<br />withdmDados.queConsCliente do<br />begin<br /> Close;<br />SQL.Clear;<br /> case rgCampo.ItemIndexof<br /> 0:<br />begin<br />SQL.Add('selectcl.id_cliente, cl.nome, cl.endereco, ci.nome, cl.telefone, cl.tipofrom cliente as cl, cidade as ciwhereci.id_cidade = cl.id_cidadeandcl.id_cliente = :pIdCliente');<br />Params[0].Value:= StrToInt(edDado.Text);<br />end;<br /> 1:<br />begin<br />SQL.Add('selectcl.id_cliente, cl.nome, cl.endereco, ci.nome, cl.telefone, cl.tipofrom cliente as cl, cidade as ciwhereci.id_cidade = cl.id_cidadeandcl.nomelike :pNome');<br />Params[0].Value := edDado.Text + '%';<br />end;<br />
  239. 239. Cadastro de Clientes – Consulta Cliente<br /> 2:<br />begin<br />SQL.Add('selectcl.id_cliente, cl.nome, cl.endereco, ci.nome, cl.telefone, cl.tipofrom cliente as cl, cidade as ciwhereci.id_cidade = cl.id_cidadeandci.nomelike :pCiNome');<br />Params[0].Value := dbIdCidade.Text + '%';<br />end;<br /> 3:<br />begin<br />SQL.Add('selectcl.id_cliente, cl.nome, cl.endereco, ci.nome, cl.telefone, cl.tipofrom cliente as cl, cidade as ciwhereci.id_cidade = cl.id_cidadeandcl.tipolike :pTipo');<br />ifrgTipo.ItemIndex = 0 then<br />Params[0].Value := 'F%'<br />else<br />Params[0].Value:= 'J%';<br />end;<br />end;<br /> Open;<br />end;<br />end; <br />
  240. 240. Selecione o objeto rgCampo;<br />Clique na aba Eventos do Inspetor de Objetos. Localize o evento OnClicke digite o seguinte código:<br />Cadastro de Clientes – Consulta Cliente<br />
  241. 241. Cadastro de Clientes – Consulta Cliente<br /> case rgCampo.ItemIndexof<br /> 2:<br />begin<br />edDado.Enabled:= false;<br />dbIdCidade.Enabled:= true;<br />rgTipo.Enabled:= false;<br />end;<br /> 3:<br />begin<br />edDado.Enabled:= false;<br />dbIdCidade.Enabled := false;<br />rgTipo.Enabled:= true;<br />end;<br />else<br />begin<br />edDado.Enabled:= true;<br />dbIdCidade.Enabled := false;<br />rgTipo.Enabled:= false;<br />end;<br />end; <br />
  242. 242. Vamos programar a abertura do formulário de Consulta Cliente (frmConsCliente)a partir no formulário Principal (frmPrincipal);<br />Selecione a Unit do formulário Principal (u_principal) e digite u_consclienteno Uses;<br />Isso faz com que esse formulário acesse os objetos do formulário Consulta Cliente;<br />No evento OnClickdo item Consultas -> Cliente do Main Menu do formulário Princial digite o seguinte código:<br />frmConsCliente.Show;<br />Cadastro de Clientes – Formulário Principal<br />
  243. 243. Cadastro de Clientes<br />
  244. 244. Reduzindo o executável compilado<br />Os executáveis gerados pelo compilador do Lazarussão grandes porque eles incluem informações utilizadas pelo depurador (Debugger);<br />Para o usuário final, essas informações não tem utilidade. Por isso é recomendado remove-las, por meio de uma compilação diferenciada.<br />
  245. 245. Reduzindo o executável compilado<br />Além disso, um programa vazio no Lazarusjá inclui uma imensa quantia de recursos, tais como:<br />Biblioteca de manipulação de XML;<br />Biblioteca de manipulação de Imagem para arquivos png, xpm, bmp e ico;<br />Aproximadamente todos os widgets da Biblioteca de Componentes Lazarus;<br />Toda a Biblioteca de RunTime do FreePascal;<br />Sendo assim, o executável é muito grande, mas já inclui de antemão tudo que uma aplicação séria precisará.<br />
  246. 246. O tamanho do executável do Lazarus inicia grande e cresce muito devagar;<br />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.<br />Reduzindo o executável compilado<br />
  247. 247. Reduzindo o executável compilado<br />Para reduzir o tamanho do executável basta fazer a seguinte configuração:<br />1. Project -> Compiler Options -> Code -> Smart Linkable (-CX) -> Marcado;<br />2. Project -> Compiler Options -> Linking -> Debugging -> Desmarque todos, com exceção de Strip Symbols From Executable (-Xs) que deve ficar marcado;<br />3. Project -> Compiler Options -> Linking -> Link Style -> Link Smart (-XX) -> Marcado.<br />
  248. 248. Reduzindo o executável compilado<br />Com essa configuração, o executável terá um tamanho de aproximadamente 3 megas, em vez de 15 megas;<br />É recomendado fazer essacompilaçã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.<br />
  249. 249. Instalador<br />Utilizaremos o Inno Setup Compiler;<br />É gratuito;<br />Pode ser usado em aplicativos comerciais sem pagar aos criadores;<br />Fácil de utilizar;<br />Com conhecimento mais profundo, pode ser utilizado para criação de instaladores complexos.<br />
  250. 250. Compatível com todas as versões do Windows;<br />Compatível com aplicativos da arquitetura 64-bits;<br />Criação de um únicoexecutável, facilitando a redistribuição online;<br />Instaladores com aparênciaagradável com estilo Windows XP;<br />Tipos de instalaçãocustomizável (Mínimo, padrão, máximo).<br />Inno Setup Compiler - Características<br />
  251. 251. Acompanhadesinstalador;<br />Instalação de arquivosavançado;<br />Criação de atalhos no desktop ou menu iniciar;<br />Atualização de registro;<br />Suporte a váriaslínguas;<br />Suporte a instalaçãoencriptada, com assinatura digital ousenha.<br />Inno Setup Compiler - Características<br />
  252. 252. Instalando o Inno Setup Compiler<br />Vá ao site http://www.jrsoftware.org/;<br />Clique em “Inno Setup”;<br />Clique em “Download Inno Setup”;<br />Baixe o executável (compatível com qualquer versão do Windows);<br />A versão que utilizaremos será a 5.4.2.<br />
  253. 253. Instalando o Inno Setup Compiler<br />A instalação é bastante intuitiva;<br />Não há necessidade de nenhuma customização na instalação;<br />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.<br />
  254. 254. Criando um Instalador<br />Criar um instalador para um aplicativo utilizando o “Script Wizard” do Inno é uma tarefa simples;<br />Não entraremos em detalhes visando a criação de instaladores complexos;<br />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.<br />
  255. 255. Criaremos o instalador do “Cadastro de clientes”;<br />Escolhemos esse aplicativo, pois o seu instalador é o mais complexo;<br />Se desejar, faça o instalador dos outros aplicativos desenvolvidos durante o curso a fim de assimilar o funcionamento do Inno.<br />Criando um Instalador<br />
  256. 256. Criando o Instalador do “Cadastro de Clientes”<br />Inicie o Inno Setup Compiler;<br />Na janela Welcome, selecione a opção “Create a new script file usingthe Script Wizard” e clique em OK.<br />
  257. 257. Criando o Instalador do “Cadastro de Clientes”<br />Aparecerá a janela abaixo. Clique em “Next”.<br />
  258. 258. Criando o Instalador do “Cadastro de Clientes”<br />Especifique algumas informações básicas sobre o aplicativo e clique em “Next”.<br />
  259. 259. Criando o Instalador do “Cadastro de Clientes”<br />Especifique algumas informações sobre o diretório onde o aplicativo será instalado e clique em “Next”.<br />
  260. 260. Criando o Instalador do “Cadastro de Clientes”<br />Em “Applicationmainexecutable file” clique em “Browse...” e selecione o executável do aplicativo compilado pelo Lazarus.<br />
  261. 261. Criando o Instalador do “Cadastro de Clientes”<br />Em “Otherapplication files” clique em “Add file(s)...” e adicione o banco de dados (banco.db) e o DLL do SQLite3;<br />Selecione o sqlite3.dll e clique em “Edit...”.<br />
  262. 262. Criando o Instalador do “Cadastro de Clientes”<br />Em “Destination base folder” selecione “Windows system directory” e clique em “OK”;<br />Isso instalará o SQLite na pasta System do Windows do usuário.<br />
  263. 263. Criando o Instalador do “Cadastro de Clientes”<br />Escolha se o usuário poderá iniciar o aplicativo após a conclusão da instalação e clique em “Next”.<br />
  264. 264. Criando o Instalador do “Cadastro de Clientes”<br />Configure a paste do aplicativo no menu iniciar e a criação de ícones conforme desejar;<br />É aconselhável marcar as opções:<br />Create na Internet shortcut in the Start Menu folder;<br />Create na Uninstallicon in the Start Menu folder.<br />
  265. 265. Criando o Instalador do “Cadastro de Clientes”<br />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”.<br />
  266. 266. Criando o Instalador do “Cadastro de Clientes”<br />Especifique em quais línguas o instalador estará à disposição do usuário e clique em “Next”;<br />No nosso caso, deixamos somente “BrazilianPortuguese” marcado.<br />
  267. 267. Criando o Instalador do “Cadastro de Clientes”<br />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;<br />Clique em “Next”. <br />
  268. 268. Criando o Instalador do “Cadastro de Clientes”<br />Clique em “Next”.<br />
  269. 269. Criando o Instalador do “Cadastro de Clientes”<br />Clique em “Finish”.<br />
  270. 270. Criando o Instalador do “Cadastro de Clientes”<br />Com isso, finalizamos o “Inno Setup Script Wizard” e o código do instalador foi gerado automaticamente, com base nos parâmetros que passamos;<br />O programa perguntará se você deseja compilar o instalador agora. Clique em Sim.<br />
  271. 271. Criando o Instalador do “Cadastro de Clientes”<br />O programa perguntará se você deseja salvar script do instalador agora. Clique em Sim e escolha uma pasta adequada;<br />Sempre que desejar fazer uma alteração no instalador de um aplicativo, abra o Script, altere o que desejar e compile novamente.<br />
  272. 272. Criando o Instalador do “Cadastro de Clientes”<br />O instalador está criado e pronto para ser distribuido.<br />
  273. 273. Links Interessantes<br />http://www.hardware.com.br/artigos/programacao-orientada-objetos/ - Ótimo artigo sobre P.O.O.;<br />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);<br />http://www2.explorando.com.br/m/2010/06/videoaula-tutorial-lazarus-delphi - Vídeo aula de 2 horas sobre o Lazarus;<br />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.<br />
  274. 274. Livros<br />
  275. 275. Lazarus - The Complete Guide<br />Autores: M. van Canneyt, M. Gärtner, S. Heinig, F. Monteiro de Cavalho, I. Ouedraogo.Idioma: Inglês e Alemão<br />Aproximadamente 720 páginashttp://www.blaisepascal.eu/index.php?actie=./subscribers/lazarusbookinfoEnglish<br />
  276. 276. Desenvolvendo Aplicativos com Lazarus<br />Autor: Jean PatrickIdioma: Português<br />346 páginashttp://www.clubedeautores.com.br/book/33568--Desenvolvendo_Aplicativos_com_Lazarushttp://agbook.com.br/book/46758--Desenvolvendo_Aplicativos_com_Lazarus<br />
  277. 277. Programando com o Lazarus<br />Autor: Vitor Amadeu SouzaIdioma: Português <br />64 páginas<br />http://www.clubedeautores.com.br/book/24590--Programando_com_o_Lazarushttp://agbook.com.br/book/44784--Programando_com_o_Lazarus<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×