A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Desenvolvimento de Aplicações Desktop Delphi Prof. Melo.

Apresentações semelhantes


Apresentação em tema: "Desenvolvimento de Aplicações Desktop Delphi Prof. Melo."— Transcrição da apresentação:

1 Desenvolvimento de Aplicações Desktop Delphi Prof. Melo

2 Apresentação Nome: Hildeberto Melo; Técnico em Desenvolvimento de Software. Ibratec, PE; Bacharel em Sistemas de Informação. FIR, PE; Pós-Graduação em Docência do Ensino Superior. FMN, PE; Mestre em Ciência da Computação. CIN/UFPE.

3 3 Roteiro Competências Habilidades Resumo do Programa Plano de Aula Critério de Avaliação Regras de Convivência Material do Aluno Avaliações

4 4 Delphi

5 5

6 6 Funções Trim(string) – remove os espaços em branco no início e no fim do texto.  Ex: x := trim(‘ Hildeberto Melo ‘);  X = ‘Hildeberto Melo’; TrimLeft(string) – remove os espaços em branco no início do texto.  Ex: x := trim(‘ Hildeberto Melo ‘);  X = ‘Hildeberto Melo ’; TrimRight(string) – remove os espaços em branco no fim do texto.  Ex: x := trim(‘ Hildeberto Melo ‘);  X = ‘ Hildeberto Melo’;

7 7 Funções Inc(integer) – acrescenta uma unidade ao valor;  Ex: var x : integer;  X := 10;  Inc(x);  X = 11; Dec(integer) - – decrescenta uma unidade ao valor;  Ex: var x : integer;  X := 10;  Dec(x);  X = 9;

8 8 Funções Strtoint(string) – converte um valor string em um valor inteiro. Strtofloat(string) – converte um valor string em uma valor float. Strtotime(string) – converte um valor string em uma valor hora. Strtodate(string) – converte um valor string em uma valor data. Strtodatetime(string) - converte um valor string em uma valor data/hora. Strotocurr(string) - converte um valor string em uma valor moeda.

9 9 Funções Length(string) – retorno o tamanho de um texto.  Ex: var int x;  X = length(‘Hildeberto Melo’);  X = 15; IntToStr(integer) – Converte um valor inteiro em um valor texto. FloatToStr(float) – Converte um valor float em um valor texto.

10 10 Funções IntToStr(integer) – Converte um valor inteiro em um valor texto. FloatToStr(float) – Converte um valor float em um valor texto. FloatToCurr(float) – Converte uma valor float em um valor moeda.

11 11 Mensagens ShowMessage(texto)  ShowMessage('Hildeberto Melo');

12 12 Mensagens Application.MessageBox(texto da mensagem, titulo, ícone);  Application.MessageBox('Hildeberto Melo','Hand',MB_ICONHAND);  Application.MessageBox('Hildeberto Melo','Quaestion',MB_ICONQUESTION);  Application.MessageBox('Hildeberto Melo','Exclamation',MB_ICONEXCLAMATION);  Application.MessageBox('Hildeberto Melo','Asterik',MB_ICONASTERISK);  Application.MessageBox('Hildeberto Melo','Warning',MB_ICONWARNING);

13 13 Mensagens Application.MessageBox(texto da mensagem, titulo, ícone);  Application.MessageBox('Hildeberto Melo','Error',MB_ICONERROR);  Application.MessageBox('Hildeberto Melo','Information',MB_ICONINFORMATION);  Application.MessageBox('Hildeberto Melo','Stop',MB_ICONSTOP);  Application.MessageBox('Hildeberto Melo','Mask',MB_ICONMASK);

14 14 Mensagens MessageDlg(texto, tipo, botões): integer; BotãoRetorno 1OK 2Cancel 3Abort 4Retry 5Ignore 6Yes 7No 9No to all 10Yes to all

15 15 Mensagens MessageDlg(texto, tipo, botões);  MessageDlg('Hildeberto Melo',mtWarning,mbYesNoCancel,0);

16 16 Mensagens MessageDlg(texto, tipo, botões);  MessageDlg('Hildeberto Melo',mtInformation,mbYesAllNoAllCancel,0);

17 17 Mensagens MessageDlg(texto, tipo, botões);  MessageDlg('Hildeberto Melo',mtError,mbOKCancel,0);

18 18 Mensagens MessageDlg(texto, tipo, botões);  MessageDlg('Hildeberto Melo',mtConfirmation,mbAbortRetryIgnore,0);

19 19 Mensagens MessageDlg(texto, tipo, botões);  MessageDlg('Hildeberto Melo',mtCustom,mbAbortIgnore,0);

20 20 Mensagens MessageDlg(texto, tipo, botões);  MessageDlg('Hildeberto Melo',mtWarning,mbYesNoCancel,0);  MessageDlg('Hildeberto Melo',mtInformation,mbYesAllNoAllCancel,0);  MessageDlg('Hildeberto Melo',mtError,mbOKCancel,0);  MessageDlg('Hildeberto Melo',mtConfirmation,mbAbortRetryIgnore,0);  MessageDlg('Hildeberto Melo',mtCustom,mbAbortIgnore,0);

21 21 Conexão Com Banco de Dados 1ª parte da disciplina

22 22 Criando Uma Conexão ODBC Vá em: 1. Iniciar do Windows 2. Configurações 3. Painel de Controle 4. Ferramentas Administrativas 5. Fontes de Dados ODBC

23 23 Criando Uma Conexão ODBC Para adicionar uma nova fonte clique no botão Adcionar

24 24 Access Aparecerá esta tela com os drives disponíveis para conexão Vamos escolher o Driver do Microsoft Access (*.mdb) e clicar em concluir

25 25 Access Informar o nome da fonte de dados, ex: CTD2008 Selecionar o Banco de Dados, clicando no botão selecionar

26 26 Access Informe onde está o arquivo do banco Depois confirme clicando no ok

27 27 SQL Server Aparecerá esta tela com os drives disponíveis para conexão Vamos escolher o Driver do SQL Server e clicar em concluir

28 28 SQL Server Informar o nome do alias Escolher o servidor no qual deseja se conectar

29 29 SQL Server Após informado os dados clicar em avançar.

30 30 SQL Server Caso não haja um usuário definido no banco de dados escolher a opção Com autenticação do windows, caso contrário escolha a opção com autenticação do SQL Serve, nesse caso deverá ser informado o login e senha. Clicar em avançar.

31 31 SQL Server Escolher o banco de dados no qual deseja se conectar. Clicar em avançar.

32 32 SQL Server Aparecerá esta tela com opções de mudança de idioma e outras informações, não há necessidade de alterar as opções. Clicar em concluir.

33 33 SQL Server Aparecerá esta tela com as informações da conexão Clique no botão testar conexão pra verificar se está conectando com sucesso.

34 34 SQL Server Aparecerá esta tela com o resultado do teste. Após estas etapas, basta ir clicando nos botões de OK/Confirmar e está concluída a etapa de criação da conexão.

35 35 No Delphi Abrir o Delphi e Iniciar um nova aplicação

36 36 No Delphi Adcionar um DataModule ao projeto

37 37 No Delphi

38 38 Paleta BDE Table DataBase

39 39 No DataModule Adcionar o componente DataBase Informar o Alias criado anteriormente Informar o nome do componente

40 40 Propriedades do DataBase Colocar a opção LoginPropt para True Colocar a opção Connected para True

41 41 Table Adcionar um Table No DataModule

42 42 Table Informar o DataBaseName Informar a TableName Ativar a Table

43 43 Adcionando os Campos a Table 1.Dar um duplo clique no componente Table1 do DataModule 2.Irá aparecer uma caixa, onde clicaremos com botão direito do mouse nesta caixa 3.Escolheremos a opção “Add All Fields” 1 2 3

44 44 DataSource

45 45 DataSource 1.Colocar um DataSource no DataModule 2.Escolher a tabela a qual irá se vincular 12

46 46 Paleta DataControls DBGrid DBNavigator DBText DBEdit

47 47 Form Principal 1.Colocar os Componentes DBGrid e DBNavigator 2.Fazer com que o Form Principal use o DataModule 1 2

48 48 Form Principal Vincular a propriedade DataSource do DBNavigator e DBGrid ao DataSource1

49 49 Ir no Object Inspector do Form Principal e escolher a aba de eventos, o evento OnCreate

50 50 Form Principal Colocar os seguintes comandos abaixo, no evento OnCreate do Form Principal, para ativar a conexão com o banco de dados e ativar a tabela.

51 51 Ir no Object Inspector do Form Principal e escolher a aba de eventos, o OnDestroy

52 52 Form Principal Colocar os seguintes comandos abaixo, no evento OnDestroy do Form Principal, para fechar a conexão.

53 53 Propriedades do Projeto 1.Ir no Menu Project -> options 2.Colocar a criação do datamodule como o primeiro

54 54 Rodar a Aplicação Resultado

55 55 Componente TTable  Locate  Filter

56 56 Localizando Registros Para localizar registros você pode usar vários métodos, mas o melhor deles é o Locate, no exemplo abaixo é feita uma pesquisa exata.  if not DtmCli.Tbl.Locate('CodCli', Edt.Text, []) then ShowMessage('Cliente não encontrado.'); Você também pode fazer uma pesquisa parcial e/ou sem sensitividade de caso usando o terceiro parâmetro, que é um conjunto de opções.  DtmCli.Tbl.Locate('Nome', Edt.Text, [loPartialKey, loCaseInsensitive]); Lopartialkey – pesquisas parciais, só precisa informar parte do nome. LocaseInsensitive – desconsidera maiúsculas e minúsculas Se você precisar fazer uma pesquisa por mais de um campo, separe os nomes dos campos por ponto e vírgula e use a função VarArrayOf para criar um array com os valores que você quer procurar.  if not DtmPed.Tbl.Locate('Vendedor;Data', VarArrayOf([EdtVendedor.Text, EdtData.Text]), [loCaseInsensitive]) then ShowMessage('O vendedor não realizou nenhuma venda nessa data'); Caso os campos pesquisados sejam indexados, a pesquisa será muito mais eficiente, senão será criado um filtro temporário da BDE para localizar os registros Para utilizar o Locate em um formulário é necessário colocar na claúsula USES do form, a classe DB.

57 57 Utilizando o filter Utilizamos a propriedade Filter e Filtered do componente TTable, para filtrar um determinado número de registros na tabela. A propriedade Filter recebe uma String com o filtro. Ex: nomeDoCampo = ‘conteúdo da pesquisa’ A propriedade Filtered ativa o filtro, tendo como valores: false ou true.

58 58 Tela Adicionar na tela  Um Edit e um Botão, para ser utilizado na consulta com Locate.  Um Edit e dois Botões para ser utilizado com o filter

59 59 Locate Clique do botão consultar com locate, colocar este código.

60 60 Filter Clique dos botões Filtrando e Limpando filtro.

61 61 Tela antes de utilizar os comandos Locate e Filter

62 62 Locate Ao informar no Edit a palavra Wra, o locate localizou o primeiro registro da tabela que continha a palavra.

63 63 Locate Informando um nome que não existe na tabela

64 64 Filter Foi informado a palavra Snapper, ele filtrou e deixou apenas os registro que continham a palavra informada.

65 65 Dica CharSet da aspa simples #39 Podemos concatenar strings que precisam de aspas simples assim:  Variavel := 'state = '+#39+Texto+#39;  Variavel := ‘state = ‘ + ‘’’’ + texto + ‘’’’;

66 66 Status do Componente Table Insert Append Edit Post Cancel Delete Refresh

67 67 Relatório com Table Passos: 1. Criar um novo projeto 2. Adicionar um DataModule ao projeto 3. Adicionar um DataBase e uma Table ao DataModule 4. Configurar o DataBase e a Table conforme foi visto anteriormente 5. Adicionar mais um formulário ao projeto e renomeá-lo para formImpressao

68 68 Relatório com Table Passos (continuação): 6. No formImpressao adicionar um quickRep (aba QReport)

69 69 Relatório com Table Ligar o QuickRep a Table do DataModule

70 70 Relatório com Table Adicionar duas QRBands ao QuickRep

71 71 Relatório com Table Configurar o BandType da segunda QrBand para rbDetail

72 72 Relatório com Table Adicionar um QRLabel na banda de Título

73 73 Relatório com Table Colocar um QRDBText na banda detalhes Configurar o DataField e DataSet

74 74 Relatório com Table No formulário principal colocar um botão, este botão servirá para chamar o formulário de impressão.

75 75 Relatório com Table No clique do botão colocar o código abaixo

76 76 Executando a Aplicação

77 77 Querys Trabalhando com querys – Segunda parte da disciplina

78 78 Trabalhando com querys – 2ª parte da disciplina Abra uma nova aplicação no delphi e vamos utilizar querys para manipular informações no banco de dados. Adcione um DataModule  Coloque um componente TDataBase  Coloque um Componente TQuery

79 79 Configuração do TDataBase AliasName = ctds2008 DataBaseName = dbctd Name = dbctd

80 80 Configuração da TQuery DataBaseName = dbctd

81 81 Criando Uma Aplicação Com Query Visando utilizar Orientação a Objetos em projetos futuros, vamos usar uma metodologia de programação que facilite a migração para Orientação a Objetos.

82 82 Unit de Tipos do Sistema Vamos adcionar uma nova unit ao nosso projeto. Ela servirá para definirmos os tipos de dados que utilizaremos em nosso sistema. Os tipo que serão definidos serão semelhantes as tabelas que estão no banco de dados que nosso sistema utilizará.

83 83 Unit de Tipos do Sistema Exemplo:  Suponhamos que tenhamos uma tabela chamada Cliente, e esta tabela possui os seguintes campos: codigo, nome, residencial e celular.  Criaremos um type que representará cada registro desta tabela.

84 84 Representação do type

85 85 Unit de Tipos do Sistema Para cada tabela no banco de dados existirá um type que corresponda a mesma.

86 86 Modularização do Sistema Visando uma melhor organização do código e evitar redundâncias, vamos modularizar o sistema. Todas as operações com relação a banco de dados estarão no DataModule da aplicação. No DataModule estarão os procedimentos de:  Select  Selecionar um conjunto de registros de uma determinada tabela  Update  Atualizar um registro ou um conjunto de registros da tabela)  Insert  Incluir um novo registro na tabela  Delete  Remover um ou mais registros da tabela

87 87 Modularização do Sistema Colocar a assinatura dos procedimentos na sessão public do DataModule. Cada método recebe como parâmetro de entrada um tCliente, servindo como controles internos a cada procedimento específico.

88 88 Propriedades da TQuery SQL –  Clear() // limpa a instrução sql  Add() // adiciona uma instrução na query  Open() // abre a query retornando o resultado(select)  ExecSql // executa uma query(insert, update, delete)  ParamByName // referenciar um determinado parâmetro da query  FieldByName // referenciar um determinado campo da query

89 89 Método Select

90 90 Método Insert

91 91 Método Update

92 92 Atenção Quando colocamos : (dois pontos) antes de uma palavra na instrução SQL, significa que a palavra será interpretado como um parâmetro.Exemplo: Query1.SQL.Add('update clientes set nome= :nome’); O :nome será um parâmetro e deverá ser referenciado utilizando o ParamByName.  Query1.ParamByName('nome').AsString := cliente.nome;

93 93 Utilizando os Métodos do DataModule Colocar na tela principal os componentes conforme tela abaixo: DBGrid Edit

94 94 Botão Selecionar Todos

95 95 Botão Novo

96 96 Botão Carregar

97 97 Botão Alterar

98 98 Orientação a Objetos – 3ª parte da disciplina

99 26/08/08 Orientação a Objetos Paradigma focado nos dados ao invés de operações Entidades do mundo real são modelados como objetos que encapsulam dados (atributos) e comportamento (métodos) Vantagens  Facilidade de manutenção  Maior extensibilidade  Maior reuso

100 26/08/08 Orientação a Objetos Classes são “moldes” para criação de objetos  Uma classe define a estrutura de um objeto: dados + comportamento Classe é um conceito que define categorias e tipos O conceito de classe agrupa entidades (objetos) com características semelhantes Um objeto é uma instância de uma classe Com orientação a objetos fica muito mais fácil estender sistemas de grande porte

101 101 Objetos Características de um objeto  Identidade – todo objeto tem um identificador único que é diferente dos identificadores dos demais objetos  Estado – o estado de um objeto é definido como o valor de seus atributos num determinado tempo  Comportamento – o comportamento de um objeto é definido pelas mensagens que ele aceita. Entenda-se por mensagem qualquer pedido ou solicitação enviada para o objeto (Ex. quando o botão de crédito é pressionado)

102 102 Vantagens Modularidade:  Melhor estruturação do sistema  Melhor entendimento Coesão Facilidade de manutenção:  Custos de manutenção representam em média 70% do custo total do software Reusabilidade

103 103 Camadas Características Idéia básica:  Dividir o sistema em partes menores (camadas) para resolver problemas em separado (separação de conceitos)  Estruturas o sistema é em camadas (uma sobre a outra) Propósito geral de cada camada:  Fornecer suporte para a camada superior  Abstrair as camadas superiores de detalhes específicos Propósito específico de cada camada:  Preocupar-se com os detalhes específicos que serão ‘escondidos’ das camadas superiores

104 104 Estrutura básica das camadas Classes Básicas Coleção de Dados Coleção de Negócio Fachada GUI, Servlet, Applet, JSP, RMI Front-end Back-end usar o suportedar suporte

105 105 Classes Básicas Composta pelas classes mais elementares do sistema Apenas os objetos de negócio da aplicação e seus relacionamentos são modelados ClienteConta 1N

106 106 Coleção de Dados Responsável por manipular diversos objetos das classes básicas Geralmente possui alguma estrutura de armazenamento de objetos: lista, conjunto, array, tabela hash… Preocupa-se com detalhes de armazenamento e recuperação dos objetos: memória, banco de dados, arquivos… Também conhecida como Camada de Persistência

107 107 Coleção de Negócio Utiliza uma Coleção de Dados para lhe dar suporte à persistência dos objetos da aplicação Realiza as críticas de Negócio inerentes a uma determinada classe básica aplicação. Ex: ‘não é possível inserir duas contas com o mesmo número’. Disponibiliza serviços específicos do negócio envolvido Geralmente chamada de Cadastro

108 108 Implementação das camadas Como implementar a coleção de dados que trata do armazenamento e recuperação de objetos para o sistema?  Quais serviços dessa camada estarão disponíveis para a camada superior Como implementar a coleção de negócio e fazê-la usar o suporte da coleção de dados?  Como relacionar essas camadas? Quais serviços serão disponibilizados na coleção de negócio?  Que métodos serão replicados ou criados na coleção de negócio?

109 109 Identificando serviços da Coleção de dados Classe acessoMaterial  procedure select(listaMaterial: TListaMaterial); overload;  procedure insert(material: TMaterial);  procedure update(material: TMaterial);  procedure delete(material: TMaterial; usuario: TUsuario);  function verificaUso(material: TMaterial): boolean;

110 110 Projeto OO Faremos um projeto em Delphi utilizando OO(Orientação a Objetos), para isso seguiremos alguns passos que serão descritos posteriormente. No projeto utilizaremos o Banco de Dados CTDS feito no Access. Utilizaremos classes, objetos, herança, sobrecarga, polimorfismo, etc.

111 111 Criação de Classe 1.Criar uma nova unit, indo no menu File -> new -> Unit 2.Salvar a unit com o nome ClasseBasica

112 112 Criação de Classe

113 113 Criação de Classe O Type define a classe, onde serão Colocados os atributos e métodos da mesma. A palavra class define que o TClasseBasica será uma classe.

114 114 Criação de Classe Atributos da classe Property – define que o referido Atributo será uma propriedade da classe

115 115 Criação de Classe O encapsulamento dos atributos da classe em delphi é diferente ao encapsulamento feito em java. O Delphi utiliza um padrão diferente do javaBean Para realizar esta tarefa de encapsulamento basta colocar o cursor em cima de um dos atributos da classe e pressionar: Ctrl+shft+C

116 116 Criação de Classe

117 117 Anteriormente haviamos apenas declarado dois atributos: codigo o descricao. Depois de pressionar Ctrl+Shft+C, foi gerado atributos e métodos na sessão private. Estes métodos e atributos gerados servirão para realizar o encapsulamento dos atributos da classe.

118 118 Read – quando atributo codigo for lido, será lido o valor que está em FCodigo. Write – quando se atribuir um valor ao atributo codigo será utilizado o método Setdescricao. Isto garantem o encapsulamento dos atributos, e distingue do encapsulamento feito pelo padrão javaBean.

119 119 Instanciando a Classe Criando a classe Atribuindo valores Destruindo a classe

120 120 Herança Criar uma nova unit e salvar com o nome de endereço Na definição da classe, depois da palavra reservada class colocar entre parenteses a classe a ser herdada

121 121

122 122

123 123 Classe Aluno Atributo do tipo TEndereco Herança de Classebasica Importando as classes utilizadas Criando contrutores

124 124 Classe Aluno Implementação do Construtor

125 125 Sobrecarga de Métodos Para sobrecarregar métodos temos que utilizar a palavra reservada overload.

126 126 Lista de Objetos A classe Tlist do Delphi possui todos os métodos necessários para manipulação de listas de objetos Ela manipula objetos objetos de uma forma genérica, pois a mesma possui uma lista de ponteiros. Um ponteiro aponta para uma variável criada dinamicamente em tempo de execução. Esta variável pode ser de um tipo Objeto

127 127 Cast Para converter um tipo genérico em um tipo específico, teremos que utilizar o Cast para retornar um objeto especifícado. Basta colocar o tipo a ser convertido antes do tipo genérico.

128 128 Utilizando Listas Criando a classe Carregando os valores Adicionando na lista Criando a lista de objetos

129 129 Percorrendo a Lista

130 130 Criando a Classe de Acesso

131 131 Método Create

132 132 Método Select

133 133 Método Insert

134 134 Criando o Controlador

135 135 Método Insert

136 136 Método Select

137 137 Fachada

138 138 Método Create

139 139 Método Destroy

140 140 Método Select Turma

141 141 Método Insert Turma

142 142 Perguntas...

143 143 Por onde estudar ?


Carregar ppt "Desenvolvimento de Aplicações Desktop Delphi Prof. Melo."

Apresentações semelhantes


Anúncios Google