"Persistir sempre". É assim que começo mais um artigo do nosso projeto modelo 1, onde estamos criando um cadastro em Delphi. Pra ser um bom programador, tem que ter persistência, jamais desistir na primeira dificuldade que encontrar, elas sempre vão parecer, mas a cada uma que você resolver, sua experiência aumenta. A cada dia temos algo novo para aprender, então, vamos em frente sem desistir.
No artigo anterior, realizamos todas as implementações do nosso "DataModule", posteriormente, voltaremos lá para trabalhar com arquivo INI, etc. Por ora, o que vamos usar daqui para frente, já está pronto lá.
Neste artigo, vamos dar início na implementação da nossa tela de manutenção. Pra isso, vá para o código do formulário de manutenção (frmManutencaoCliente).
Declare na seção "Private" as funções "CadastrarCliente" e "AlterarCliente", em seguida, pressione as teclas "Shift + Ctrl + C' para implementar na "Implementation":
Vamos começar implementando a função "CadastrarCliente":
Explicando, temos um "If" verificando se o nosso "ClientDataSet" de alterações, não está ativo, isto é, fechado, caso esteja, então, abrimos.
Se não abrirmos, vai gerar um erro dizendo que não podemos fazer operações com o "ClientDataSet" fechado.
Em seguida, colocamos nosso "ClientDataSet" em modo de inserção, para receber o novo registro, pelo comando "Append".
Após isso, estamos lendo os valores digitados nos campos do formulário e passando para os campos do "ClientDataSet", no final, damos o comando "Post" para que esses dados sejam gravados no cache do "ClientDataSet". Antes do comando "Post" ser executado, o evento "BeforePost" do "ClientDataSet" que implementamos na parte 3, é disparado, e o código do cliente será gerado, exatamente por isso que em nossa função acima não estamos lendo o código, pois o mesmo está sendo gerado automaticamente.
Após o comando "Post" ser executado, o evento "AfterPost" é disparado, e lá, persistimos os dados no banco através do comando "ApplyUpdates".
Se não ocrrer nenhum erro ou exceção, a função retorna "True", caso contrário, vai cair no bloco "Except", a função "False" e uma mensagem de erro é exibida.
Caso queira trazer a mensagem do erro que a classe "Exception" captura, basta acrescentar no parâmetro da mensagem:
"MessageDlg('Não foi possível cadastrar o cliente.' + #13 + 'Erro: ' + E.Message, mtError, [mbOk], 0)";
Ótimo, agora vamos implementar a função "AlterarCliente". Já adianto que é exatamente igual a função "CadastrarCliente", a única diferença é que ao invés de usarmos o "Append" para colocar o "ClientDataSet" em modo de inserção, utilizaremos o comando "Edit" para colocar em modo de edição. Também a mensagem precisa ser alterada, segue abaixo a implementação:
Legal, agora vamos para um detalhe muito importante. Na tela de manutenção, temos o botão "Salvar". O mesmo será clicado após o usuário cadastrar um novo cliente, e após alterar os dados de algum cliente. Temos aí um dilema, como o botão salvar saberá qual função executar, "CadastrarCliente" ou "AlterarCliente"? Para resolver isso, vamos criar uma variável global que armazenará um número. Como assim? Simples, quando o usuário clicar no botão "Novo" na tela de cadastro, atribuiremos o valor "1" para esta variável, e quando o usuário clicar no botão "Alterar" na tela de cadastro, atribuiremos o valor "2" para a variável, depois, no botão Salvar, verificamos se está variável está com o valor "1" ou "2", se for "1", chamamos a função "CadastrarCliente" senão, chamamos a função "AlterarCliente". Então, declare a variável "iOpc" global, ainda no fonte da tela de Manutenção Cliente.
Muito bem, agora, duplo-clique sobre o botão "Salvar" e faça a seguinte implementação:
Como já expliquei anteriormente, apenas verificamos o valor da variável "iOpc" para saber qual função chamar. Note que no momento da chamada, já estamos testando o retorno da função, caso retornar "True" mandamos uma mensagem.
Ressalto que este modelo é bem didático, no ambiente real não é muito legal ficar exibindo essas mensagens, imagina que o usuário vai cadastrar vários clientes, e no final de cada cadastro ficar exibindo esta mensagem fica algo bem incômodo, pelo menos, esta é a visão que eu tenho como usuário, eu acharia bem chato, geralmente só exibimos mensagens de erros caso ocorra.
Ok, pra finalizarmos a implementação da tela de Manutenção, duplo-clique no botão "Cancelar" e faça a seguinte implementação:
Agora, o botão "Fechar":
Ótimo, e assim concluímos mais uma etapa do nosso projeto, até o próximo artigo. Abraço.
(Por Welinton Jr. Dias)
0 comments:
Postar um comentário
Visite nossa página de Política de comentarios antes de comentar para ter certeza de que seu comentário não será excluído! Lembre-se, assim que aprovarmos o teu comentário ele será publicado, por isso, não deixe de sempre visitar nosso blog e conferir nossa resposta ao seu comentário, abraço!