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