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

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

Desenvolvimento de Aplicações Desktop Delphi

Apresentações semelhantes


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

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

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. 2

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 Delphi

5 Delphi

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. X = ‘Hildeberto Melo ’; TrimRight(string) – remove os espaços em branco no fim do texto. X = ‘ Hildeberto Melo’;

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; Dec(x); X = 9;

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 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 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 Mensagens ShowMessage(texto) ShowMessage('Hildeberto Melo');

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 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 MessageDlg(texto, tipo, botões): integer;
Mensagens MessageDlg(texto, tipo, botões): integer; Botão Retorno 1 OK 2 Cancel 3 Abort 4 Retry 5 Ignore 6 Yes 7 No 9 No to all 10 Yes to all

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

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

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

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

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

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 Conexão Com Banco de Dados
1ª parte da disciplina

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

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

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 Access Informar o nome da fonte de dados, ex: CTD2008
Selecionar o Banco de Dados, clicando no botão selecionar

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

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 SQL Server Informar o nome do alias
Escolher o servidor no qual deseja se conectar

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

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 SQL Server Escolher o banco de dados no qual deseja se conectar.
Clicar em avançar.

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 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 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 No Delphi Abrir o Delphi e Iniciar um nova aplicação

36 No Delphi Adcionar um DataModule ao projeto

37 No Delphi

38 Paleta BDE Table DataBase

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

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

41 Table Adcionar um Table No DataModule

42 Table Informar o DataBaseName Ativar a Table Informar a TableName

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

44 DataSource

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

46 Paleta DataControls DBGrid DBEdit DBNavigator DBText

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

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

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

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 Ir no Object Inspector do Form Principal e escolher a aba de eventos, o OnDestroy

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

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

54 Rodar a Aplicação Resultado

55 Componente TTable Locate Filter

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 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 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 Locate Clique do botão consultar com locate, colocar este código.

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

61 Tela antes de utilizar os comandos Locate e Filter

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

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

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

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 Status do Componente Table
Insert Append Edit Post Cancel Delete Refresh

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

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

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

70 Relatório com Table Adicionar duas QRBands ao QuickRep

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

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

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

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 Relatório com Table No clique do botão colocar o código abaixo

76 Executando a Aplicação

77 Querys Trabalhando com querys – Segunda parte da disciplina

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 Configuração do TDataBase
AliasName = ctds2008 DataBaseName = dbctd Name = dbctd

80 Configuração da TQuery
DataBaseName = dbctd

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 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 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 Representação do type

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

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 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 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 Método Select

90 Método Insert

91 Método Update

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 Utilizando os Métodos do DataModule
Colocar na tela principal os componentes conforme tela abaixo: DBGrid Edit

94 Botão Selecionar Todos

95 Botão Novo

96 Botão Carregar

97 Botão Alterar

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

99 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 26/08/08

100 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 26/08/08

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 Vantagens Modularidade: Coesão Facilidade de manutenção: Reusabilidade
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 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 Estrutura básica das camadas
GUI, Servlet, Applet, JSP, RMI Front-end Fachada Back-end Coleção de Negócio usar o suporte dar suporte Coleção de Dados Classes Básicas

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 Cliente Conta 1 N

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 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 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 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 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 Criação de Classe Criar uma nova unit, indo no menu File -> new -> Unit Salvar a unit com o nome ClasseBasica

112 Criação de Classe

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 Criação de Classe Atributos da classe Property – define que o referido
Atributo será uma propriedade da classe

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 Criação de Classe

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 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 Instanciando a Classe Criando a classe Atribuindo valores
Destruindo a classe

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

122

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

124 Classe Aluno Implementação do Construtor

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

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 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 Utilizando Listas Criando a classe Carregando os valores
Adicionando na lista Criando a lista de objetos

129 Percorrendo a Lista

130 Criando a Classe de Acesso

131 Método Create

132 Método Select

133 Método Insert

134 Criando o Controlador

135 Método Insert

136 Método Select

137 Fachada

138 Método Create

139 Método Destroy

140 Método Select Turma

141 Método Insert Turma

142 Perguntas...

143 Por onde estudar ?


Carregar ppt "Desenvolvimento de Aplicações Desktop Delphi"

Apresentações semelhantes


Anúncios Google