Carregar apresentação
A apresentação está carregando. Por favor, espere
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
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 ?
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.