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

Mais conteúdo relacionado

Mais procurados

Mais procurados (15)

php orientado_a_objetos
php orientado_a_objetosphp orientado_a_objetos
php orientado_a_objetos
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetos
 
Apostila do windows 7 2011-1
Apostila do windows 7   2011-1Apostila do windows 7   2011-1
Apostila do windows 7 2011-1
 
Computação Móvel 2012.2 - Android
Computação Móvel 2012.2 - AndroidComputação Móvel 2012.2 - Android
Computação Móvel 2012.2 - Android
 
Windows xp 2 páginas
Windows xp   2 páginasWindows xp   2 páginas
Windows xp 2 páginas
 
Oo delphi
Oo delphiOo delphi
Oo delphi
 
Delphi aplicado by jurandir pellin
Delphi aplicado by jurandir pellinDelphi aplicado by jurandir pellin
Delphi aplicado by jurandir pellin
 
Delphi 6 básico
Delphi 6 básicoDelphi 6 básico
Delphi 6 básico
 
Construindo aplicações com netbeans
Construindo aplicações com netbeansConstruindo aplicações com netbeans
Construindo aplicações com netbeans
 
Introdução a programação para plataforma iOS
Introdução a programação para plataforma iOSIntrodução a programação para plataforma iOS
Introdução a programação para plataforma iOS
 
Java swing
Java swingJava swing
Java swing
 
Apostila linguagem c
Apostila linguagem cApostila linguagem c
Apostila linguagem c
 
Ficha de trabalho_so_4_m4_-_personalizacao_ambiente_grafico_linux
Ficha de trabalho_so_4_m4_-_personalizacao_ambiente_grafico_linuxFicha de trabalho_so_4_m4_-_personalizacao_ambiente_grafico_linux
Ficha de trabalho_so_4_m4_-_personalizacao_ambiente_grafico_linux
 
Apostila de C# & Asp.Net
Apostila de C# & Asp.NetApostila de C# & Asp.Net
Apostila de C# & Asp.Net
 
Java introdução ao eclipse
Java   introdução ao eclipseJava   introdução ao eclipse
Java introdução ao eclipse
 

Destaque

Introdução à programação e arquitetura de computadores
Introdução à programação e arquitetura de computadoresIntrodução à programação e arquitetura de computadores
Introdução à programação e arquitetura de computadoresArtur Barreto
 
Computadores modernos compensam algoritmos ineficientes?
Computadores modernos compensam algoritmos ineficientes?Computadores modernos compensam algoritmos ineficientes?
Computadores modernos compensam algoritmos ineficientes?Artur Barreto
 
Listas Lineares - Parte 2
Listas Lineares - Parte 2Listas Lineares - Parte 2
Listas Lineares - Parte 2Artur Barreto
 
Listas Lineares - Parte 1
Listas Lineares - Parte 1Listas Lineares - Parte 1
Listas Lineares - Parte 1Artur Barreto
 
Palestra Mobilidade - Computação móvel, Dispositivos e Aplicativos 2013
Palestra Mobilidade - Computação móvel, Dispositivos e Aplicativos 2013Palestra Mobilidade - Computação móvel, Dispositivos e Aplicativos 2013
Palestra Mobilidade - Computação móvel, Dispositivos e Aplicativos 2013Carlos Eugenio Torres
 
Como Criar Uma Apresentação de Slides no BrOffice
Como Criar Uma Apresentação de Slides no BrOfficeComo Criar Uma Apresentação de Slides no BrOffice
Como Criar Uma Apresentação de Slides no BrOfficedeborlandini
 
Desvendando os APLICATIVOS SOCIAIS
Desvendando os APLICATIVOS SOCIAISDesvendando os APLICATIVOS SOCIAIS
Desvendando os APLICATIVOS SOCIAISCampanha Digital
 
Cartilha Mei - Micro Empreendedor Individual
Cartilha Mei - Micro Empreendedor Individual Cartilha Mei - Micro Empreendedor Individual
Cartilha Mei - Micro Empreendedor Individual Chico Macena
 
Palestra Mobilidade - Computação móvel, dispositivos e aplicativos
Palestra Mobilidade - Computação móvel, dispositivos e aplicativosPalestra Mobilidade - Computação móvel, dispositivos e aplicativos
Palestra Mobilidade - Computação móvel, dispositivos e aplicativosCarlos Eugenio Torres
 
Monografia TCC Eng Produção - Desenvolvimento de um Aplicativo Móvel para Aná...
Monografia TCC Eng Produção - Desenvolvimento de um Aplicativo Móvel para Aná...Monografia TCC Eng Produção - Desenvolvimento de um Aplicativo Móvel para Aná...
Monografia TCC Eng Produção - Desenvolvimento de um Aplicativo Móvel para Aná...Philippe Elias
 
Calcula e mei (micro emprendedor individual)
Calcula e mei (micro emprendedor individual)Calcula e mei (micro emprendedor individual)
Calcula e mei (micro emprendedor individual)calculaonline
 
Palestra Microempreendedor Individual - MEI
Palestra Microempreendedor Individual - MEIPalestra Microempreendedor Individual - MEI
Palestra Microempreendedor Individual - MEIsebraeleste1
 
Análisis estratégico de Starbucks
Análisis estratégico de StarbucksAnálisis estratégico de Starbucks
Análisis estratégico de StarbucksLuigui Meza Galdos
 

Destaque (20)

Introdução à programação e arquitetura de computadores
Introdução à programação e arquitetura de computadoresIntrodução à programação e arquitetura de computadores
Introdução à programação e arquitetura de computadores
 
Computadores modernos compensam algoritmos ineficientes?
Computadores modernos compensam algoritmos ineficientes?Computadores modernos compensam algoritmos ineficientes?
Computadores modernos compensam algoritmos ineficientes?
 
Listas Lineares - Parte 2
Listas Lineares - Parte 2Listas Lineares - Parte 2
Listas Lineares - Parte 2
 
Lazarus
LazarusLazarus
Lazarus
 
O que é lazarus
O que é lazarusO que é lazarus
O que é lazarus
 
LISTADO CÓDIGOS (LAZARUS).
LISTADO CÓDIGOS (LAZARUS).LISTADO CÓDIGOS (LAZARUS).
LISTADO CÓDIGOS (LAZARUS).
 
Listas Lineares - Parte 1
Listas Lineares - Parte 1Listas Lineares - Parte 1
Listas Lineares - Parte 1
 
MEI como abrir?
MEI como abrir?MEI como abrir?
MEI como abrir?
 
Palestra Mobilidade - Computação móvel, Dispositivos e Aplicativos 2013
Palestra Mobilidade - Computação móvel, Dispositivos e Aplicativos 2013Palestra Mobilidade - Computação móvel, Dispositivos e Aplicativos 2013
Palestra Mobilidade - Computação móvel, Dispositivos e Aplicativos 2013
 
Como Criar Uma Apresentação de Slides no BrOffice
Como Criar Uma Apresentação de Slides no BrOfficeComo Criar Uma Apresentação de Slides no BrOffice
Como Criar Uma Apresentação de Slides no BrOffice
 
Desvendando os APLICATIVOS SOCIAIS
Desvendando os APLICATIVOS SOCIAISDesvendando os APLICATIVOS SOCIAIS
Desvendando os APLICATIVOS SOCIAIS
 
Mei empreendedorismo
Mei empreendedorismoMei empreendedorismo
Mei empreendedorismo
 
Cartilha Mei - Micro Empreendedor Individual
Cartilha Mei - Micro Empreendedor Individual Cartilha Mei - Micro Empreendedor Individual
Cartilha Mei - Micro Empreendedor Individual
 
Palestra Mobilidade - Computação móvel, dispositivos e aplicativos
Palestra Mobilidade - Computação móvel, dispositivos e aplicativosPalestra Mobilidade - Computação móvel, dispositivos e aplicativos
Palestra Mobilidade - Computação móvel, dispositivos e aplicativos
 
Mei
MeiMei
Mei
 
APRESENTAÇÃO SOBRE MEI
APRESENTAÇÃO SOBRE MEIAPRESENTAÇÃO SOBRE MEI
APRESENTAÇÃO SOBRE MEI
 
Monografia TCC Eng Produção - Desenvolvimento de um Aplicativo Móvel para Aná...
Monografia TCC Eng Produção - Desenvolvimento de um Aplicativo Móvel para Aná...Monografia TCC Eng Produção - Desenvolvimento de um Aplicativo Móvel para Aná...
Monografia TCC Eng Produção - Desenvolvimento de um Aplicativo Móvel para Aná...
 
Calcula e mei (micro emprendedor individual)
Calcula e mei (micro emprendedor individual)Calcula e mei (micro emprendedor individual)
Calcula e mei (micro emprendedor individual)
 
Palestra Microempreendedor Individual - MEI
Palestra Microempreendedor Individual - MEIPalestra Microempreendedor Individual - MEI
Palestra Microempreendedor Individual - MEI
 
Análisis estratégico de Starbucks
Análisis estratégico de StarbucksAnálisis estratégico de Starbucks
Análisis estratégico de Starbucks
 

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

Introdução ao desenvolvimento de apps para Android - Dia 2/2
Introdução ao desenvolvimento de apps para Android - Dia 2/2Introdução ao desenvolvimento de apps para Android - Dia 2/2
Introdução ao desenvolvimento de apps para Android - Dia 2/2Matheus Calegaro
 
Ds aula 01 - Introdução ao Visual Studio CSharp - Modo Visual
Ds aula 01 - Introdução ao Visual Studio CSharp - Modo VisualDs aula 01 - Introdução ao Visual Studio CSharp - Modo Visual
Ds aula 01 - Introdução ao Visual Studio CSharp - Modo VisualCentro Paula Souza
 
Linguagens de programação 12º M11
Linguagens de programação 12º M11Linguagens de programação 12º M11
Linguagens de programação 12º M11Luis Ferreira
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemassauloroos01
 
3. ambiente de desenvolvimento do vb (parte 2)
3. ambiente de desenvolvimento do vb (parte 2)3. ambiente de desenvolvimento do vb (parte 2)
3. ambiente de desenvolvimento do vb (parte 2)Eugenio Caetano
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandão
 
Java: Introducao ao Swing
Java: Introducao ao SwingJava: Introducao ao Swing
Java: Introducao ao SwingArthur Emanuel
 
01 Orientacao A Objetos Programacao
01   Orientacao A Objetos   Programacao01   Orientacao A Objetos   Programacao
01 Orientacao A Objetos Programacaotaniamaciel
 
Net uma revisão sobre a programação orientada a objetos
Net   uma revisão sobre a programação orientada a objetosNet   uma revisão sobre a programação orientada a objetos
Net uma revisão sobre a programação orientada a objetosLP Maquinas
 
Chrome dev tools google io extended 2016
Chrome dev tools   google io extended 2016Chrome dev tools   google io extended 2016
Chrome dev tools google io extended 2016Diego Melo
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Luis Ferreira
 
Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Laís Vidal
 

Semelhante a Introdução ao desenvolvimento de aplicativos com interface gráfica (20)

Introdução ao desenvolvimento de apps para Android - Dia 2/2
Introdução ao desenvolvimento de apps para Android - Dia 2/2Introdução ao desenvolvimento de apps para Android - Dia 2/2
Introdução ao desenvolvimento de apps para Android - Dia 2/2
 
Ds aula 01 - Introdução ao Visual Studio CSharp - Modo Visual
Ds aula 01 - Introdução ao Visual Studio CSharp - Modo VisualDs aula 01 - Introdução ao Visual Studio CSharp - Modo Visual
Ds aula 01 - Introdução ao Visual Studio CSharp - Modo Visual
 
Linguagens de programação 12º M11
Linguagens de programação 12º M11Linguagens de programação 12º M11
Linguagens de programação 12º M11
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemas
 
Aula1 c++ builder
Aula1   c++ builderAula1   c++ builder
Aula1 c++ builder
 
3. ambiente de desenvolvimento do vb (parte 2)
3. ambiente de desenvolvimento do vb (parte 2)3. ambiente de desenvolvimento do vb (parte 2)
3. ambiente de desenvolvimento do vb (parte 2)
 
Java swingcomponentes
Java swingcomponentesJava swingcomponentes
Java swingcomponentes
 
Aula 1
Aula 1Aula 1
Aula 1
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Java: Introducao ao Swing
Java: Introducao ao SwingJava: Introducao ao Swing
Java: Introducao ao Swing
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Programação Defensiva
Programação DefensivaProgramação Defensiva
Programação Defensiva
 
01 Orientacao A Objetos Programacao
01   Orientacao A Objetos   Programacao01   Orientacao A Objetos   Programacao
01 Orientacao A Objetos Programacao
 
FC-Logic
FC-LogicFC-Logic
FC-Logic
 
05 - C# - componentes visuais v1.0
05 - C# - componentes visuais v1.005 - C# - componentes visuais v1.0
05 - C# - componentes visuais v1.0
 
Net uma revisão sobre a programação orientada a objetos
Net   uma revisão sobre a programação orientada a objetosNet   uma revisão sobre a programação orientada a objetos
Net uma revisão sobre a programação orientada a objetos
 
Chrome dev tools google io extended 2016
Chrome dev tools   google io extended 2016Chrome dev tools   google io extended 2016
Chrome dev tools google io extended 2016
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos
 
Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012
 
Java e orientação a objetos
Java e orientação a objetosJava e orientação a objetos
Java e orientação a objetos
 

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

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