LOGIN:

iMasters | Por uma internet mais criativa e dinâmica

Feeds

Segunda-feira, 22/09/2003 - 01:59 - Por Rafael Smorigo
Seções relacionadas:

Utilizando XML e Delphi - Parte 2

Olá pessoal!

Na primeira parte do artigo, criamos nosso projeto e o arquivo XML que será utilizado para armazenar as informações. Agora montaremos nossa janela (form). Para isso, utilizarei componentes TDBEdit, para a visualização das colunas do XML e botões TSpeedButton para as principais ações.

Novo: Cria uma nova linha no arquivo XML.
Salvar: Confirma a nova linha criada ou atualiza um registro já existente.
Excluir: Remove o registro do arquivo XML.
Cancelar: Cancela a última ação realizada que ainda não foi confirmada pelo botão Salvar.

Caso alguém tenha dúvida sobre como construir o formulário (design), procure mais sobre o assunto em nossa coluna de Delphi aqui no iMasters.

Depois que você adicionar os componentes TDBEdit, você deve modificar o nome dos mesmos para dbeNome, dbeDtNascimento, dbeDtCadastro, dbeTelFixo, dbeTelCelular, dbeEmail.

Também deve ser vinculado cada componente TDBEdit com seu respectivo campo no componente datContatos (TDataSource). Na imagem abaixo, vemos o componente dbeNome com a propriedade DataSource ligada ao Modulo.datContatos e também a propriedade DataField ligada a coluna NOME, repita este procedimento para todas as outras colunas de seu arquivo XML

Como você viu, não vou entrar em muitos detalhes sobre o Design pois acredito que cada pessoa possui um "estilo" de desenvolvimento, principalmente sobre o layout das janelas. Então, vamos diretamente ao nosso código.

Nosso botão Novo será responsável por criar uma nova linha no arquivo XML para isso iremos utilizar o seguinte código:

procedure TContatos.sbtNovoClick(Sender: TObject);
begin
If Not Modulo.cdsContatos.Active Then // Verifica se o DataSet está ativo
Modulo.cdsContatos.Open // Caso esteja fechado
else
begin
Modulo.cdsContatos.Insert; // Cria um novo registro
dbeNome.SetFocus; // Coloca o cursor no primeiro campo a preencher.

   // Desabilita os botões
   sbtNovo.Enabled     := False;
   sbtSalvar.Enabled   := True;
   sbtExcluir.Enabled  := False;
   sbtCancelar.Enabled := True;
  end;
end;

Nosso botão Salvar utiliza uma função que é executada antes de que seja confirmado os dados no arquivo XML. Veja logo a baixo mais detalhes sobre esta função que é responsável por verificar se o usuário informou todas as colunas obrigatórias (todas :-) e após efetuar a validação aplicar as modificações.

procedure TContatos.sbtSalvarClick(Sender: TObject);
begin
If
ValidarDados = True Then // Função que verifica se foi preenchido o formulario
begin
try

Modulo.cdsContatos.FieldByName('DT_CADASTRO').AsDateTime := Now;
// Pega a data atual da maquina

Modulo.cdsContatos.MergeChangeLog; // Atualiza o ParamsLog e a linha de
dados, não cria uma nova.

Modulo.cdsContatos.Post; // Confirma as modificações no DatSet
    // Desabilita os botões
    sbtNovo.Enabled     := True;
    sbtSalvar.Enabled   := False;
    sbtExcluir.Enabled  := True;
    sbtCancelar.Enabled := False;

  except // Caso Aconteça algum erro exibe mensagem ao usuário
   MessageDlg('Atenção não foi possivel salvar o registro.', mtError, [mbOk], 0);
  end;
 end;
end;

O botão Excluir exibe uma mensagem de confirmação para o usuário e logo após é executado o método DELETE que exclui o registro ativo de nossa aplicação.

procedure TContatos.sbtExcluirClick(Sender: TObject);
begin
 If MessageDlg('Você deseja excluir o registro atual ?', mtConfirmation, 
[mbYes,mbNo], 0) = mrYes Then begin Modulo.cdsContatos.Delete; // Exclui o registro atual
   // Desabilita os botões
   sbtNovo.Enabled     := True;
   sbtSalvar.Enabled   := False;
   sbtExcluir.Enabled  := True;
   sbtCancelar.Enabled := False;
  end;
end;

O botão Cancelar não possui nenhum comando desconhecido da "comunidade". Apenas utiliza de uma mensagem de confirmação e aplica a ação de CANCEL de nosso TDataSet

procedure TContatos.sbtCancelarClick(Sender: TObject);
begin
If
MessageDlg('Deseja realmente cancelar as modificações ?', mtConfirmation,
[mbYes,mbNo], 0) = mrYes Then
Modulo.cdsContatos.Cancel;
end;

Como foi falado no início, nosso projeto também possui uma função que é responsavel por validar o cadastro verificando se o usuário digitou a informação ou não.

O procedimento de verificação é simples:

1. Verifica se usuário digitou alguma informação retirando os espaços em branco utilizando Trim e Comparando com EmptyStr (String Vazia)
2. Caso nosso TDBEdit esteja preenchido pulamos para o próximo TDBEdit, caso esteja vazio pula para o próximo passo
3. Exibe uma mensagem ao usuário para ele preencher a coluna
4. Coloca o cursor no campo que deve ser preenchido
5. Retorna a função o valor FALSE para que não seja confirmada a alteração

A função:

function TContatos.ValidarDados: Boolean;
begin
 if Trim(dbeNome.Text) = EmptyStr Then
  begin
   MessageDlg('Informe o nome do contato.', mtWarning, [mbOk], 0);
   dbeNome.SetFocus;
   ValidarDados := False;
  end
 else if Trim(dbeDtNascimento.Text) = EmptyStr Then
  begin
   MessageDlg('Informe a data de nascimento.', mtWarning, [mbOk], 0);
   dbeDtNascimento.SetFocus;
   ValidarDados := False;
  end
 else if Trim(dbeTelefoneFixo.Text) = EmptyStr Then
  begin
   MessageDlg('Informe o telefone fixo.', mtWarning, [mbOk], 0);
   dbeTelefoneFixo.SetFocus;
   ValidarDados := False;
  end
 else if Trim(dbeTelefoneCelular.Text) = EmptyStr Then
  begin
   MessageDlg('Informe o telefone celular.', mtWarning, [mbOk], 0);
   dbeTelefoneCelular.SetFocus;
   ValidarDados := False;
  end
 else if Trim(dbeEmail.Text) = EmptyStr Then
  begin
   MessageDlg('Informe o e-mail do contato.', mtWarning, [mbOk], 0);
   dbeEmail.SetFocus;
   ValidarDados := False;
  end
 else
   ValidarDados := True;
end;

Bom pessoal, acredito que já está bom de código por hoje, não é? :-)

Irei explicar sobre o que acontece com nosso arquivo XML após algumas brincadeiras de Cadastrar, Excluir, Modificar Dados, Salvar... Nosso amigo Delphi possui varias opções para lidar com XML. Ainda estamos no início. No próximo artigo irei concluir a explicação sobre nosso projeto e também mostrar modificações no mesmo para se tirar o máximo da tecnologia XML + Delphi.

Irei atender aos pedidos que recibi por e-mail para a publicação de exemplos utilizando ASP .NET + XML e outros assuntos nos próximos artigos.

Download do Exemplo (Delphi 7)

Todos os artigos de Rafael Smorigo

6 comentários publicados

  • 1. Não funcionou

    Quinta-feira, 02/12/2004, por Aurimar Aparecido da Silva

    Quando eu tento salvar um registro aparece o seguinte erro:
    cdsContatos: Dataset not in edit or insert mode

    Obrigado,

    Aguardo resposta

    Responder comentário
  • 2. Não funciona

    Domingo, 19/12/2004, por Marcell

    Baixei o exemplo , mas toda a vez que tenho gravar aparece uma mensagem de erro !!!
    Como posso resolver isso !

    Responder comentário
  • 3. Resposta comentario

    Quinta-feira, 23/12/2004, por Marcelo Avellar Marqueti

    Aurimar,
    O meu tb não funcionou ..mais tirei esse erro colocando Modulo.cdsContatos.insert;
    para abrir para inserção.
    Até mais
    Marcelo Marqueti

    Responder comentário
  • 4. Não funciona nem por resa

    Domingo, 11/12/2005, por Diego Candido de Souza

    Bom tentei complilar o sistema é ta dando erro muito chatos, espero que vc possa me mandar pelo meu e-mail Obrigada ai

    Responder comentário
  • 5. Com reZa funciona!!!

    Quinta-feira, 26/04/2007, por Paulo Jorge Santos

    "Não funciona nem por resa", disse um colega.
    Que tal tentar com REZA?

    Responder comentário
  • 6. Faça Isso:

    Quarta-feira, 25/06/2008, por Aureo koppe

    Duas Coisas
    1- Coloque esta linha no evento onCreate do Datamodule

    cdsContatos.FileName := ExtractFilePath(ParamStr(0)) + '\Conatos.xml';

    2 -Comente a linha
    Modulo.cdsContatos.Post; // Confirma as modificações no DatSet

    Responder comentário

Poste um comentário


Os textos publicados neste espaço são de responsabilidade única de seus autores (colunistas e leitores) e podem não expressar necessariamente a opinião do iMasters.

Sobre o autor

Rafael Smorigo é analista programador e trabalha no controle do sistemas na LG Electronics.


Indique para um amigo

captcha

TI SHOP Produtos iMasters

  • Lançamento: CD-ROM Treinamento Aplicado de SQL - Lançamento! Treinamento Aplicado de SQL - Aprenda a trabalhar com SQL com bancos de dados Oracle e SQL Server. São mais de 100 tópicos explicados por Mauro Pichilliani, um articulistas mais lidos do iMasters. Aproveite! Apenas R$ 69,90 no TI SHOP.
  • Lançamento: Livro iMasters "O Encontro de 2 Mundos"- Este livro conta com 56 crônicas de profissionais mais admirados e influentes do mercado brasileiro de Internet. Aproveite o preço especial para leitores do iMasters. Apenas R$ 40,00 e envio imediato!
  • DVD Curso Completo de Photoshop - Do conceito à finalização Lançamento! Curso Completo de Photoshop, em DVD, com mais de 230 aulas dividas em 4 módulos: conceito, básico, avançado e finalização. Apenas R$ 69,50 no TI SHOP - Frete com 50% de desconto
  • DVD Javascript Starter - Curso Completo Com mais de 9 horas de vídeo-aulas, é um curso completo sobre Javascript. Ideal para quem deseja aprender a linguagem. Apenas R$ 64,90 no TI SHOP - Frete com 50% de desconto!

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.