terça-feira, 27 de setembro de 2011

Sistema de Contato em Três Camadas C# - Parte III de III

Camada de Apresentação

Renomeie o formulário form1.cs para frmContato.cs
Na propriedade do formulário modifique os seguintes:
Nome
Valor
O que é?
Name
frmContato
Nome do Formulário
BackColor
White
Plano de Fundo
Icon
Escolha o ícone com extensão .icon
Ícone
Size
509; 733
Tamanho do Formulário
StartPosition
CenterScreen
Posição inicia
Text
Contatos
Titulo




No topo do formulario, adicione o componente Panel, uma PictureBox e uma label, conforme a imagem a seguir:


Adicione uma groupBox e os componentes a seguir conforme a imagem: utilize label, textbox e uma maskTextBox.




os nomes dos controles são:
textBox1 = txtCodigo
textBox2 = txtNome
textBox3 = txtEndereco
maskedTextBox1 = mkTelefone

Adicione outra groupbox e os controles a seguir conforme a imagem:


button1 = btnNovo
button2 = btnSalvar
button3 = btnAtualizar
button4 = btnExcluir

Adicione outra groupbox com os controles a seguir

combobox1 = cbmFiltro
maskedTextBox1 = mkPesquisar.
Na propriedade Items adicione os seguintes textos:
Código
Nome
Telefone
e no botão pesquisar = btnPesquisar
Adicione a ultima groupbox e dentro dela insira uma DataGridView. Recendo o nome dgvContato


vá para o código do formulário (F7)
insira o código a seguir:
Chamar a classe RegraNegocio
RegraNegocio negocio = new RegraNegocio();

Habilitar os controles
  private void habilitarControles()
        {
            txtNome.Enabled = true;
            txtEndereco.Enabled = true;
            mkTelefone.Enabled = true;
        }


Limpar os Campos
 
  private void LimparCampo()
        {
            foreach (Control cont in this.Controls)
            {
                if (cont is GroupBox)
                {
                    for (int i = 0; i < cont.Controls.Count; i++)
                    {
                        if (cont.Controls[i] is TextBox)
                            (cont.Controls[i] as TextBox).Text = "";
                        if (cont.Controls[i] is ComboBox)
                            (cont.Controls[i] as ComboBox).SelectedIndex = -1;
                        if (cont.Controls[i] is MaskedTextBox)
                            (cont.Controls[i] as MaskedTextBox).Text = "";
                    }
                }
            }
        }
No evento load do formulário insira o código a seguir
  private void frmContato_Load(object sender, EventArgs e)
        {
            btnNovo.Enabled = true;
            negocio.PreencherDataGrid(dgvContato);
        }
Clique no botão novo e insira o código a seguir:
    private void btnNovo_Click(object sender, EventArgs e)
        {
          
            habilitarControles();
            btnNovo.Enabled = false;
            btnAtualizar.Enabled = false;
            btnExcluir.Enabled = false;
            if (txtNome.Text != null)
            {
                txtNome.Focus();
                btnSalvar.Enabled = true;
            }
            LimparCampo();
        }
Clique no botão Salvar e insira o código a seguir:
private void btnSalvar_Click(object sender, EventArgs e)
        {
          
            if (txtNome.Text != "")
            {
                RegraNegocio cln = new RegraNegocio();
                cln.Nome = this.txtNome.Text;
                cln.Endereco = this.txtEndereco.Text;
                cln.Telefone = this.mkTelefone.Text;
                cln.InserirContato();
                negocio.PreencherDataGrid(dgvContato);
                btnSalvar.Enabled = false;
                btnAtualizar.Enabled = true;
                btnExcluir.Enabled = true;
                MessageBox.Show("Contato cadastrado com sucesso",
                    "Sucesso",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Information);
            }
            else
            {
                txtNome.Focus();
                btnNovo.Enabled = false;
                MessageBox.Show("Adicione um nome de Usuário",
                    "Atenção",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Information);
            }
        }
Clique no botão Atualizar e insira o código a seguir:
        private void btnAtualizar_Click(object sender, EventArgs e)
        {
         
            try
            {
                if (txtCodigo.Text != null)
                {
                    negocio.Codigo = int.Parse(txtCodigo.Text);
                    negocio.Nome = txtNome.Text;
                    negocio.Endereco = txtEndereco.Text;
                    negocio.Telefone = mkTelefone.Text;
                    negocio.AtualizarContato();
                    negocio.PreencherDataGrid(dgvContato);
                    MessageBox.Show("Atualizado com sucesso",
                        "Sucesso",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Information);
                }
                else
                {
                    MessageBox.Show("O Campo código é obrigatório",
                        "Atenção",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Information);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Não foi possível atualizar os dados pelo seguinte motivo: " + ex.Message);
            }
       
Clique no botão excluir e insira o código a seguir:
private void btnExcluir_Click(object sender, EventArgs e)
        {
           
            try
            {
                if (txtCodigo.Text != null)
                {
                    negocio.Codigo = int.Parse(txtCodigo.Text);
                    negocio.ExcluirContato();
                    LimparCampo();
                    negocio.PreencherDataGrid(dgvContato);
                    btnExcluir.Enabled = false;
                    btnAtualizar.Enabled = false;
                    MessageBox.Show("Excluido com sucesso",
                        "Sucesso",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Information);
                }
                else
                {
                    MessageBox.Show("O Campo Código é obrigatório",
                        "Atenção",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Information);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Não foi possível excluir os dados pelo seguinte motivo: " + ex.Message);
            }
        }        
Clique no botão pesquisar e insira o código a seguir:
private void btnPesquisar_Click(object sender, EventArgs e)
        {
            if (cbbFiltro.Text == "Código")
            {
                negocio.Codigo = int.Parse(mkPesquisar.Text);
                negocio.ConsultarCodigo(dgvContato);
            }
            if (cbbFiltro.Text == "Nome")
            {
                negocio.Nome = mkPesquisar.Text;
                negocio.ConsultarNome(dgvContato);
            }
            if (cbbFiltro.Text == "Telefone")
            {
                negocio.Telefone = mkPesquisar.Text;
                negocio.ConsultarTelefone(dgvContato);
            }
            if (cbbFiltro.Text == "")
            {
                negocio.PreencherDataGrid(dgvContato);
            }
        }
Clique duas vezes na ComboBox do Filtro de pesquisa e insira o código a seguir:
        private void cbbFiltro_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cbbFiltro.Text == "Telefone")
            {
                mkPesquisar.Mask = "(00)0000-0000";
            }
            else
            {
                mkPesquisar.Clear();
                mkPesquisar.Mask = "";
            }
        }
No evento da DataGridView (no raio) Click insira o código a seguir:
   private void dgvContato_Click(object sender, EventArgs e)
        {
            habilitarControles();
            btnAtualizar.Enabled = true;
            btnExcluir.Enabled = true;
            txtCodigo.Text = dgvContato.CurrentRow.Cells[0].Value.ToString();
            txtNome.Text = dgvContato.CurrentRow.Cells[1].Value.ToString();
            txtEndereco.Text = dgvContato.CurrentRow.Cells[2].Value.ToString();
            mkTelefone.Text = dgvContato.CurrentRow.Cells[3].Value.ToString();
        }

Conclusão

O Conceito de três camadas veio com o objetivo de separar a lógica de negocio da lógica de apresentação e acesso a dados. Com isto o sistema torna-se mais fácil a manutenção e inserção de funções. Este é o primeiro tutorial em três camadas do blog nstutoriais.blogspot.com, e vamos fazer muito mais. Caso tenha alguma dúvida acesse o blog ou adicione no MSN: natanaelsantosdf@hotmail.com ou na nossa página do facebook.  
Tutorial em PDF = Clique aqui Código Fonte do arquivo = Clique aqui
Parte I = Clique aqui
Parte II = Clique aqui
Parte III = Clique aqui

segunda-feira, 26 de setembro de 2011

Sistema de Contato em Três Camadas C# - Parte II de III


Camada de Negócio

Crie uma nova classe chamada RegraNegocio
Vamos criar os campos privados da classe, conforme a seguir:

  private int codigo;
  private string nome;
  private string endereco;
  private string telefone;





Encapsule os campos, para isso clique no nome do campo (código,nome,endereco e telefone) e Ctrl+R + Ctrl+ E e clique em ok. Conforme a imagem


Feito isso vamos chamar a classe Banco para inserir a regra de negócio.
Banco dal = new Banco();

Criar o método para inserir o contato
  public void InserirContato()
        {
            try
            {
                dal.ComandoSQL("INSERT INTO TBCONTATO(nome,endereco,telefone) VALUES('" + Nome + "','" + Endereco + "','" + Telefone + "')");
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }




Criar o método atualizar Contato
public void AtualizarContato()
        {
            try
            {
                dal.ComandoSQL("UPDATE tbContato set nome='" + Nome + "',endereco='" + Endereco + "',telefone= '" + Telefone + "'where codigo= " + Codigo + "");
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }



Criar o método Excluir Contato
        public void ExcluirContato(Codigo)
        {
            try
            {
                dal.ComandoSQL("DELETE FROM tbContato where codigo= " + Codigo + "");
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }


Criar o método Preencher DataGridView
public void PreencherDataGrid(DataGridView dgv)
        {
            dal.Consultar(dgv, "SELECT * FROM tbContato");
        }


Criar o método para Consultar por Código
public void ConsultarCodigo(DataGridView dgv)
        {
            dal.Consultar(dgv, "SELECT * FROM tbContato WHERE codigo=" + Codigo + "");
        }


Criar o método para Consultar por Nome
  public void ConsultarNome(DataGridView dgv)
        {
            dal.Consultar(dgv, "SELECT * FROM tbContato WHERE Nome like '%" + Nome + "%'");
        }


Criar o método para Consultar por Telefone
  public void ConsultarTelefone(DataGridView dgv)
        {
            dal.Consultar(dgv, "SELECT * FROM tbContato WHERE telefone like '%" + Telefone + "%'");
        }



Ok. Finalizamos a camada de Negócio. No Próximo e última parte estaremos desenvolvendo a logica de Apresentação.

Parte I = Clique aqui
Parte II = Clique aqui
Parte III = Clique aqui