Desenvolvimento Multicamadas em Csharp (C#(csharp)) - Parte 5 - Exemplo prático [Classes Auxiliares]

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (10)  (0)

Nesse artigo vamos criar a lógica de negócios e a respectiva camada de apresentação para as informações auxiliares da apólice. Nessa ordem: Dano, Tipo de Sinistro, e Modelos de Carros.

v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} st1\:*{behavior:url(#ieooui) }

Desenvolvendo uma aplicação Multicamadas para Windows em C#

Parte 5)

 

Introdução

 
Este artigo é o quinto de uma série de sete artigos que apresentam um exemplo prático e simples abordando o desenvolvimento em camadas em C#, sabemos que a programação orientada a objetos (POO) possibilita uma abordagem simples para a utilização de dados usando objetos.
 

Revisão

 
No primeiro artigo foi apresentado um cenário para o desenvolvimento da aplicação e criado o Banco de Dados com as respectivas tabelas e o mapeamento Entidade Relacionamento entre elas.
 
No segundo artigo dessa série foi apresentada a classe da camada “2 – Camada Intermediaria” que representa a lógica do controlador (persistir dados), classe essa que fez a interface entre a lógica de negócio e os dados no banco de dados.
 
No terceiro artigo foi apresentada a classe clnClientes.cs que possui as regras de negócios do Sistema de Controle de Apólices de Seguro proposto desde o primeiro artigo.
 
No quarto foi apresentado a camada de apresentação, onde foram criados os formulários para cadastro de dados de clientes e o formulário de pesquisa genérico que será utilizado em toda a aplicação.
 
Nesse quinto artigo estudaremos mais sobre o Projeto de Apólice de Seguros, de forma geral.
 

Iniciando o Estudo:

 
Observe a Figura 1 - Diagrama ER Numerado.

 Figura 1 - Diagrama ER Numerado
 
A tabela de apólices é sem dúvida a mais importante do Sistema e para que possa ser feito o cadastro de uma nova apólice inicialmente temos que possuir dados nas tabelas de clientes (tbCliente) [não numerada pois nos artigos anteriores implementamos a funcionalidade para a mesma] temos que ter os dados já cadastrados na tabela de modelo de carros (tbModelo) [6] e a partir da apólice cadastrada gerar as parcelas [5] para o pagamento por parte do cliente.
Já em relação aos sinistros ocorridos [2] para que possa ser cadastrado, inicialmente temos que ter também a apólice cadastrada [1] e previamente cadastrados os tipos de danos que podem ocorrer [3]  e os tipos de sinistros já cadastrados.
 
Nesse artigo vamos criar a lógica de negócios e a respectiva camada de apresentação para as informações auxiliares da apólice. Nessa ordem: Dano, Tipo de Sinistro, e Modelos de Carros.
 

Mão na Massa:

 
1) Com o aplicativo aberto adicione três novas classes chamadas respectivamente: clnDanos.cs, clnTipos.cs, clnModelos.cs, conforme figura:


Figura 2 - Outras Classes

2) Agora adicione na Pasta [Camada Apresentacao] três novos formulários com os nomes respectivamente: FrmDanos.cs, FrmTipos.cs e FrmModelos.cs.


Figura 3 - Outros Formulários

Vamos montar a interface com o usuário nesses três formulários, para tanto acrescente os controles e modifique os nomes conforme solicitado:
 
3) Alterne para o formulário FrmDados e crie essa interface, dê o nome para os controles em azul.

Figura 4 - FrmDanos.cs

Obs: Como boa prática utilize os mesmo padrão de nomes para os botões de comando.
 
4) Alterne para o formulário FrmTipos e crie essa interface, dê o nome para os controles em azul.

<!--[if !vml]-->
Figura 5 - FrmTipos.cs

5) Alterne para o formulário FrmModelos e crie essa interface, dê o nome para os controles em azul.


Figura 6 – FrmModelos

Lógica de Negócios das classes criadas

 
Como a lógica é idêntica a apresentada nos artigos anteriores. Aqui será apresentado apenas o código de cada classe. Acredita-se ser desnecessário o detalhamento, pois é considerado que o leitor tenha feito a aplicação até o presente.
 
Abaixo classe: clnDados até com as declaração dos namespaces.
 
Copie e cole o código. Mas não deixe de analisá-lo novamente.
 
 
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
namespace Seguros_OO.Camada_Intermediaria.Logica_Negocios
{
    class clnDanos
    {
        //1 - Campos privados a classe
        private int idDano;
        private string descDano;
        //2 - propriedades, acesso aos campos privados
        public int IdDano
        {
            get { return idDano; }
            set { idDano = value; }
        }
        public string DescDano
        {
            get { return descDano; }
            set { descDano = value; }
        }
        //3 - métodos da classe de Negócios (clnDanos.cs)
        //3.1 Buscar dados de danos cujo codigo foi especificado
        public void Buscar()
        {
            string csql;
            csql = "Select * From tbDano where idDano=" + IdDano;
            DataSet ds;
            clsDados seguros = new clsDados();
            ds = seguros.RetornarDataSet(csql);
            if (ds.Tables[0].Rows.Count > 0)
            {
                Array dados = ds.Tables[0].Rows[0].ItemArray;
                idDano = Convert.ToInt16(dados.GetValue(0));
                descDano  = Convert.ToString(dados.GetValue(1));
            }
        }
        //3.2 Buscar o próximo Id Numerico para
        //inclusao de um novo tipo de dano.
        public int BuscarId()
        {
            string csql;
            csql = "Select Top 1 (idDano) From tbDano order by idDano desc";
            int IdBuscado;
            clsDados seguros = new clsDados();
            IdBuscado = seguros.RetornarIdNumerico(csql);
            return IdBuscado;
        }
        //3.3 Método para incluir um novo tipo de dano no
        //Banco de dados
        public void Gravar()
        {
            StringBuilder csql = new StringBuilder();
            csql.Append("Insert into tbDano");
            csql.Append("(");
            csql.Append("idDano,");
            csql.Append("descDano) Values(");
            csql.Append(idDano);
            csql.Append(",'" + descDano + "')");
            clsDados seguros = new clsDados();
            seguros.ExecutarComando(csql.ToString());
        }
        //3.4 Método para atualizar (alterar um registro)
        public void Atualizar()
        {
            StringBuilder csql = new StringBuilder();
            csql.Append("Update tbDano ");
            csql.Append("set idDano=");
            csql.Append(idDano);
            csql.Append(", descDano='");
            csql.Append(descDano);
            csql.Append("' where idDano=");
            csql.Append(IdDano);
            clsDados seguros = new clsDados();
            seguros.ExecutarComando(csql.ToString());
        }
        //3.5 Método para excluir um dano do
        //Banco de dados
        public void Excluir()
        {
            StringBuilder csql = new StringBuilder();
            csql.Append("Delete From tbDano ");
            csql.Append(" where idDano=");
            csql.Append(IdDano);
            clsDados seguros = new clsDados();
            seguros.ExecutarComando(csql.ToString());
        }
        //3.6 Método Buscar todos os Danos
        public DataSet BuscarTodos()
        {
            string csql;
            csql = "Select * From tbDano order by descDano";
            DataSet ds;
           clsDados seguros = new clsDados();
           ds = seguros.RetornarDataSet(csql);
           return ds;
         }
     }
}
 
 
Abaixo classe: clnTipos
 
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
 
namespace Seguros_OO.Camada_Intermediaria.Logica_Negocios
{
    class clnTipos
    {
        //1 - Campos privados a classe
        private int idTipo;
        private string descTipo;
 
        //2 - propriedades, acesso aos campos privados
        public int IdTipo
        {
            get { return idTipo; }
            set { idTipo = value; }
        }
        public string DescTipo
        {
            get { return descTipo; }
            set { descTipo = value; }
        }
 
        //3 - métodos da classe de Negócios (clnTipos.cs)
 
        //3.1 Buscar dados de tipos cujo codigo foi especificado
        public void Buscar()
        {
            string csql;
            csql = "Select * From tbTipo where idTipo=" + IdTipo;
            DataSet ds;
            clsDados seguros = new clsDados();
            ds = seguros.RetornarDataSet(csql);
            if (ds.Tables[0].Rows.Count > 0)
            {
                Array dados = ds.Tables[0].Rows[0].ItemArray;
                idTipo = Convert.ToInt16(dados.GetValue(0));
                descTipo = Convert.ToString(dados.GetValue(1));
            }
        }
 
        //3.2 Buscar o próximo Id Numerico para
        //inclusao de um novo tipo.
        public int BuscarId()
        {
            string csql;
            csql = "Select Top 1 (idTipo) From tbTipo order by idTipo desc";
            int IdBuscado;
            clsDados seguros = new clsDados();
            IdBuscado = seguros.RetornarIdNumerico(csql);
            return IdBuscado;
        }
 
        //3.3 Método para incluir um novo tipo no
        //Banco de dados
        public void Gravar()
        {
            StringBuilder csql = new StringBuilder();
            csql.Append("Insert into tbTipo");
            csql.Append("(");
            csql.Append("idTipo,");
            csql.Append("descTipo) Values(");
            csql.Append(idTipo);
            csql.Append(",'" + descTipo + "')");
            clsDados seguros = new clsDados();
            seguros.ExecutarComando(csql.ToString());
        }
 
        //3.4 Método para atualizar (alterar um registro)
        public void Atualizar()
        {
            StringBuilder csql = new StringBuilder();
            csql.Append("Update tbTipo ");
            csql.Append("set idTipo=");
            csql.Append(idTipo);
            csql.Append(", descTipo='");
            csql.Append(descTipo);
            csql.Append("' where idTipo=");
            csql.Append(idTipo);
            clsDados seguros = new clsDados();
            seguros.ExecutarComando(csql.ToString());
        }
 
        //3.5 Método para excluir um tipo do
        //Banco de dados
        public void Excluir()
        {
            StringBuilder csql = new StringBuilder();
            csql.Append("Delete From tbTipo ");
            csql.Append(" where idTipo=");
            csql.Append(idTipo);
            clsDados seguros = new clsDados();
            seguros.ExecutarComando(csql.ToString());
        }
      //3.6 Método Buscar todos os Tipos
      public DataSet BuscarTodos()
     {
            string csql;
            csql = "Select * From tbTipo order by descTipo";
            DataSet ds;
           clsDados seguros = new clsDados();
           ds = seguros.RetornarDataSet(csql);
           return ds;
      }
    }
}
 
 
Abaixo classe: clnModelos
 
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
 
namespace Seguros_OO.Camada_Intermediaria.Logica_Negocios
{
    class clnModelos
    {
        //1 - Campos privados a classe
        private int idModelo;
        private string descModelo;
        private string descMarca;
 
        //2 - propriedades, acesso aos campos privados
        public int IdModelo
        {
            get { return idModelo; }
            set { idModelo = value; }
        }
        public string DescModelo
        {
            get { return descModelo; }
            set { descModelo = value; }
        }
        public string DescMarca
        {
            get { return descMarca; }
            set { descMarca = value; }
        }
 
        //3 - métodos da classe de Negócios (clnModelos.cs)
        //3.1 Buscar dados de Modelos cujo codigo foi especificado
        public void Buscar()
        {
            string csql;
            csql = "Select * From tbModelo where idModelo=" + IdModelo;
            DataSet ds;
            clsDados seguros = new clsDados();
            ds = seguros.RetornarDataSet(csql);
            if (ds.Tables[0].Rows.Count > 0)
            {
                Array dados = ds.Tables[0].Rows[0].ItemArray;
                idModelo = Convert.ToInt16(dados.GetValue(0));
                descModelo = Convert.ToString(dados.GetValue(1));
                descMarca = Convert.ToString(dados.GetValue(2));
            }
        }
 
        //3.2 Buscar o próximo Id Numerico para
        //inclusao de um novo modelo.
        public int BuscarId()
        {
            string csql;
            csql = "Select Top 1 (idModelo) From tbModelo order by idModelo desc";
            int IdBuscado;
            clsDados seguros = new clsDados();
            IdBuscado = seguros.RetornarIdNumerico(csql);
            return IdBuscado;
        }
 
        //3.3 Método para incluir um novo modelo no
        //Banco de dados
        public void Gravar()
        {
            StringBuilder csql = new StringBuilder();
            csql.Append("Insert into tbModelo");
            csql.Append("(");
            csql.Append("idModelo,");
            csql.Append("descModelo,");
            csql.Append("descMarca) Values(");
            csql.Append(idModelo);
            csql.Append(",'" + descModelo + "'");
            csql.Append(",'" + descMarca + "')");
            clsDados seguros = new clsDados();
            seguros.ExecutarComando(csql.ToString());
        }
 
        //3.4 Método para atualizar (alterar um registro)
        public void Atualizar()
        {
            StringBuilder csql = new StringBuilder();
            csql.Append("Update tbModelo ");
            csql.Append("set idModelo=");
            csql.Append(idModelo);
            csql.Append(", descModelo='");
            csql.Append(descModelo);
            csql.Append("', descMarca='");
            csql.Append(descMarca);
            csql.Append("' where idModelo=");
            csql.Append(idModelo);
            clsDados seguros = new clsDados();
            seguros.ExecutarComando(csql.ToString());
        }
 
        //3.5 Método para excluir um dano do
        //Banco de dados
        public void Excluir()
        {
            StringBuilder csql = new StringBuilder();
            csql.Append("Delete From tbModelo ");
            csql.Append(" where idModelo=");
            csql.Append(idModelo);
            clsDados seguros = new clsDados();
            seguros.ExecutarComando(csql.ToString());
        }
 
    }
}
 
 

Camada de Apresentação

 
Bom. Vamos agora a camada de apresentação. Seria interessante, você copiar os código para dentro de cada evento (um a um) ou se copiar o código do formulário não se esqueça de instanciar os eventos na inicialização do formulário. Siga minha dica depois confira com o código aqui colocado.
 

Formulário: FrmDanos

 
Abaixo código completo com todos os eventos e métodos declarados:
 
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Seguros_OO.Camada_Intermediaria.Logica_Negocios;
 
namespace Seguros_OO.Camada_Apresentacao
{
    public partial class FrmDanos : Form
    {
        public FrmDanos()
        {
            InitializeComponent();
        }
 
        //Método público para limpar caixas de texto
        public void LimparTxt(Control controles)
        {
            foreach (Control ctl in controles.Controls)
            {
                if (ctl is TextBox) ctl.Text = "";
            }
        }
 
        private void btnIncluir_Click(object sender, EventArgs e)
        {
            try
            {
                clnDanos dano = new clnDanos();
                //Dispara o método para buscar o IdDano
                dano.IdDano = dano.BuscarId();
                dano.DescDano = txtdescDano.Text;
                dano.Gravar();
                string mensagem = "Registro Dano: " +
                    dano.IdDano + "\nDescrição: " + dano.DescDano +
                    "\nGravado com sucesso";
                MessageBox.Show(mensagem, "Sucesso",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Information);
                LimparTxt(groupBox1);
                btnIncluir.Enabled = false;
                btnCancelar.Enabled = false;
                txtidDano.Enabled = true;
                txtidDano.Focus();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Aconteu o erro: " + ex.Message, "Erro");
            }
 
        }
 
        private void btnAtualizar_Click(object sender, EventArgs e)
        {
            try
            {
                clnDanos dano = new clnDanos();
                dano.IdDano = int.Parse(txtidDano.Text);
                dano.DescDano = txtdescDano.Text;
                string mensagem = "Registro Dano: " +
                    dano.IdDano + "\nNome: " + dano.DescDano +
                    "\nAlterado com sucesso";
                MessageBox.Show(mensagem, "Sucesso",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Information);
                LimparTxt(groupBox1);
                btnAtualizar.Enabled = false;
                btnCancelar.Enabled = false;
                btnExcluir.Enabled = false;
                txtidDano.Enabled = true;
                txtidDano.Focus();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Aconteu o erro: " + ex.Message, "Erro");
            }
 
 
        }
 
        private void btnExcluir_Click(object sender, EventArgs e)
        {
            string pergunta;
            pergunta = "Deseja excluir o dado: \n" +
                txtidDano.Text + ": " + txtdescDano.Text +
                "  ?";
            int ret = Convert.ToInt16(MessageBox.Show(pergunta, "Atenção",
                MessageBoxButtons.YesNo,
                MessageBoxIcon.Question));
            if (ret == 6)
            {
                clnDanos dano = new clnDanos();
                dano.IdDano = int.Parse(txtidDano.Text);
                dano.DescDano = txtdescDano.Text;
                dano.Excluir();
                string mensagem = "Registro Dano: " +
                    dano.IdDano + "\nDescrição: " + dano.DescDano +
                    "\nExcluído com sucesso";
                MessageBox.Show(mensagem, "Sucesso",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Information);
                LimparTxt(groupBox1);
                btnAtualizar.Enabled = false;
                btnCancelar.Enabled = false;
                btnExcluir.Enabled = false;
                txtidDano.Enabled = true;
                txtidDano.Focus();
            }
            else
            {
                MessageBox.Show("Operação Cancelada",
                    "Cancelada", MessageBoxButtons.OK,
                    MessageBoxIcon.Information);
            }
 
        }
 
        private void btnCancelar_Click(object sender, EventArgs e)
        {
            LimparTxt(groupBox1);
            btnIncluir.Enabled = false;
            btnAtualizar.Enabled = false;
            btnCancelar.Enabled = false;
            btnExcluir.Enabled = false;
            txtidDano.Enabled = true;
            txtidDano.Focus();
        }
 
        private void btnSair_Click(object sender, EventArgs e)
        {
            this.Close();
        }
 
        private void btnProcurar_Click(object sender, EventArgs e)
        {
            FrmPesquisa f = new FrmPesquisa();
            f.Text = "Consulta Tipos de Danos";
            f.Tag = "tbDano"; //nome da tabela (macete)  :)
            f.ShowDialog();
        }
 
        private void txtidDano_Leave(object sender, EventArgs e)
        {
            int vidDano = 0;
            if (txtidDano.Text.Trim() != "")
            {
                vidDano = int.Parse(txtidDano.Text);
            }
            clnDanos dano = new clnDanos();
            dano.IdDano = vidDano;
            dano.Buscar();
            if (dano.DescDano == null)
            {
                //preparando para inclusao
                LimparTxt(groupBox1);
                txtidDano.Text = "";
                txtidDano.Enabled = false;
                btnIncluir.Enabled = true;
                btnCancelar.Enabled = true;
            }
            else
            {
                //preparando para alteracao
                LimparTxt(groupBox1);
                txtidDano.Enabled = false;
                txtidDano.Text = Convert.ToString(dano.IdDano);
                txtdescDano.Text = Convert.ToString(dano.DescDano);
                btnAtualizar.Enabled = true;
                btnCancelar.Enabled = true;
                btnExcluir.Enabled = true;
            }
        }
    }
}
 

Formulário: FrmTipos

 
Abaixo código completo com todos os eventos e métodos declarados:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Seguros_OO.Camada_Intermediaria.Logica_Negocios;
 
namespace Seguros_OO.Camada_Apresentacao
{
    public partial class FrmTipos : Form
    {
        public FrmTipos()
        {
            InitializeComponent();
        }
        //Método público para limpar caixas de texto
        public void LimparTxt(Control controles)
        {
            foreach (Control ctl in controles.Controls)
            {
                if (ctl is TextBox) ctl.Text = "";
            }
        }
 
        private void btnIncluir_Click(object sender, EventArgs e)
        {
            try
            {
                clnTipos tipo = new clnTipos();
                //Dispara o método para buscar o IdTipo
                tipo.IdTipo = tipo.BuscarId();
                tipo.DescTipo = txtdescTipo.Text;
                tipo.Gravar();
                string mensagem = "Registro Tipo: " +
                    tipo.IdTipo + "\nDescrição: " + tipo.DescTipo +
                    "\nGravado com sucesso";
                MessageBox.Show(mensagem, "Sucesso",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Information);
                LimparTxt(groupBox1);
                btnIncluir.Enabled = false;
                btnCancelar.Enabled = false;
                txtidTipo.Enabled = true;
                txtidTipo.Focus();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Aconteu o erro: " + ex.Message, "Erro");
            }
 
        }
 
        private void btnAtualizar_Click(object sender, EventArgs e)
        {
            try
            {
                clnTipos tipo = new clnTipos();
                tipo.IdTipo = int.Parse(txtidTipo.Text);
                tipo.DescTipo = txtdescTipo.Text;
                string mensagem = "Registro Dano: " +
                    tipo.IdTipo + "\nNome: " + tipo.DescTipo +
                    "\nAlterado com sucesso";
                MessageBox.Show(mensagem, "Sucesso",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Information);
                LimparTxt(groupBox1);
                btnAtualizar.Enabled = false;
                btnCancelar.Enabled = false;
                btnExcluir.Enabled = false;
                txtidTipo.Enabled = true;
                txtidTipo.Focus();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Aconteu o erro: " + ex.Message, "Erro");
            }
 
 
        }
 
        private void btnExcluir_Click(object sender, EventArgs e)
        {
            string pergunta;
            pergunta = "Deseja excluir o tipo: \n" +
                txtidTipo.Text + ": " + txtdescTipo.Text +
                "  ?";
            int ret = Convert.ToInt16(MessageBox.Show(pergunta, "Atenção",
                MessageBoxButtons.YesNo,
                MessageBoxIcon.Question));
            if (ret == 6)
            {
                clnTipos tipo = new clnTipos();
                tipo.IdTipo = int.Parse(txtidTipo.Text);
                tipo.DescTipo = txtdescTipo.Text;
                tipo.Excluir();
                string mensagem = "Registro Tipo: " +
                    tipo.IdTipo + "\nDescrição: " + tipo.DescTipo +
                    "\nExcluído com sucesso";
                MessageBox.Show(mensagem, "Sucesso",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Information);
                LimparTxt(groupBox1);
                btnAtualizar.Enabled = false;
                btnCancelar.Enabled = false;
                btnExcluir.Enabled = false;
                txtidTipo.Enabled = true;
                txtidTipo.Focus();
            }
            else
            {
                MessageBox.Show("Operação Cancelada",
                    "Cancelada", MessageBoxButtons.OK,
                    MessageBoxIcon.Information);
            }
 
        }
 
        private void btnCancelar_Click(object sender, EventArgs e)
        {
            LimparTxt(groupBox1);
            btnIncluir.Enabled = false;
            btnAtualizar.Enabled = false;
            btnCancelar.Enabled = false;
            btnExcluir.Enabled = false;
            txtidTipo.Enabled = true;
            txtidTipo.Focus();
        }
 
        private void btnSair_Click(object sender, EventArgs e)
        {
            this.Close();
        }
 
        private void btnProcurar_Click(object sender, EventArgs e)
        {
            FrmPesquisa f = new FrmPesquisa();
            f.Text = "Consulta de Tipos de Sinistros";
            f.Tag = "tbTipo"; //nome da tabela (macete)  :)
            f.ShowDialog();
        }
 
        private void txtidTipo_Leave(object sender, EventArgs e)
        {
            int vidtipo = 0;
            if (txtidTipo.Text.Trim() != "")
            {
                vidtipo = int.Parse(txtidTipo.Text);
            }
            clnTipos tipo = new clnTipos();
            tipo.IdTipo = vidtipo;
            tipo.Buscar();
            if (tipo.DescTipo == null)
            {
                //preparando para inclusao
                LimparTxt(groupBox1);
                txtidTipo.Text = "";
                txtidTipo.Enabled = false;
                btnIncluir.Enabled = true;
                btnCancelar.Enabled = true;
            }
            else
            {
                //preparando para alteracao
                LimparTxt(groupBox1);
                txtidTipo.Enabled = false;
                txtidTipo.Text = Convert.ToString(tipo.IdTipo);
                txtdescTipo.Text = Convert.ToString(tipo.DescTipo);
                btnAtualizar.Enabled = true;
                btnCancelar.Enabled = true;
                btnExcluir.Enabled = true;
            }
 
        }
     }
}
 

Formulário: FrmModelos

 
Abaixo código completo com todos os eventos e métodos declarados:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Seguros_OO.Camada_Intermediaria.Logica_Negocios;
 
namespace Seguros_OO.Camada_Apresentacao
{
    public partial class FrmModelos : Form
    {
        public FrmModelos()
        {
            InitializeComponent();
        }
        //Método público para limpar caixas de texto
        public void LimparTxt(Control controles)
        {
            foreach (Control ctl in controles.Controls)
            {
                if (ctl is TextBox) ctl.Text = "";
            }
        }
        private void txtidModelo_Leave(object sender, EventArgs e)
        {
            int vidmodelo = 0;
            if (txtidModelo.Text.Trim() != "")
            {
                vidmodelo = int.Parse(txtidModelo.Text);
            }
            clnModelos modelo= new clnModelos();
            modelo.IdModelo = vidmodelo;
            modelo.Buscar();
            if (modelo.DescModelo == null)
            {
                //preparando para inclusao
                LimparTxt(groupBox1);
                txtidModelo.Text = "";
                txtidModelo.Enabled = false;
                btnIncluir.Enabled = true;
                btnCancelar.Enabled = true;
            }
            else
            {
                //preparando para alteracao
                LimparTxt(groupBox1);
                txtidModelo.Enabled = false;
                txtidModelo.Text = Convert.ToString(modelo.IdModelo);
                txtdescModelo.Text = Convert.ToString(modelo.DescModelo);
                txtdescMarca.Text = Convert.ToString(modelo.DescMarca);
                btnAtualizar.Enabled = true;
                btnCancelar.Enabled = true;
                btnExcluir.Enabled = true;
            }
 
        }
 
        private void btnIncluir_Click(object sender, EventArgs e)
        {
            try
            {
                clnModelos modelo = new clnModelos();
                //Dispara o método para buscar o idModelo
                modelo.IdModelo = modelo.BuscarId();
                modelo.DescModelo = txtdescModelo.Text;
                modelo.DescMarca = txtdescMarca.Text;
                modelo.Gravar();
                string mensagem = "Registro Modelo: " +
                    modelo.IdModelo + "\nDescrição: " + modelo.DescModelo +
                    "\nGravado com sucesso";
                MessageBox.Show(mensagem, "Sucesso",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Information);
                LimparTxt(groupBox1);
                btnIncluir.Enabled = false;
                btnCancelar.Enabled = false;
                txtidModelo.Enabled = true;
                txtidModelo.Focus();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Aconteu o erro: " + ex.Message, "Erro");
            }
 
        }
 
        private void btnAtualizar_Click(object sender, EventArgs e)
        {
            try
            {
                clnModelos modelo = new clnModelos();
                modelo.IdModelo = int.Parse(txtidModelo.Text);
                modelo.DescModelo=  txtdescModelo.Text;
                modelo.DescMarca = txtdescMarca.Text;
                modelo.Atualizar();
                string mensagem = "Registro Modelo: " +
                    modelo.IdModelo + "\nNome: " + modelo.DescModelo +
                    "\nAlterado com sucesso";
                MessageBox.Show(mensagem, "Sucesso",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Information);
                LimparTxt(groupBox1);
                btnAtualizar.Enabled = false;
                btnCancelar.Enabled = false;
                btnExcluir.Enabled = false;
                txtidModelo.Enabled = true;
                txtidModelo.Focus();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Aconteu o erro: " + ex.Message, "Erro");
            }
        }
 
        private void btnExcluir_Click(object sender, EventArgs e)
        {
            try
            {
                string pergunta;
                pergunta = "Deseja excluir o modelo: \n" +
                    txtidModelo.Text + ": " + txtdescModelo.Text +
                    "  ?";
                int ret = Convert.ToInt16(MessageBox.Show(pergunta, "Atenção",
                    MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question));
                if (ret == 6)
                {
                    clnModelos modelo = new clnModelos();
                    modelo.IdModelo = int.Parse(txtidModelo.Text);
                    modelo.DescModelo = txtdescModelo.Text;
                    modelo.Excluir();
                    string mensagem = "Registro Dano: " +
                        modelo.IdModelo + "\nDescrição: " + modelo.DescModelo +
                        "\nExcluído com sucesso";
                    MessageBox.Show(mensagem, "Sucesso",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Information);
                    LimparTxt(groupBox1);
                    btnAtualizar.Enabled = false;
                    btnCancelar.Enabled = false;
                    btnExcluir.Enabled = false;
                    txtidModelo.Enabled = true;
                    txtidModelo.Focus();
                }
                else
                {
                    MessageBox.Show("Operação Cancelada",
                        "Cancelada", MessageBoxButtons.OK,
                        MessageBoxIcon.Information);
                }
            }
            catch(Exception ex)
            {
                    MessageBox.Show("Não foi possível excluir, aconteceu " +
                    " o seguinte erro: "+ ex.Message.ToString());
            }
         }
      
        private void btnCancelar_Click(object sender, EventArgs e)
        {
            LimparTxt(groupBox1);
            btnIncluir.Enabled = false;
            btnAtualizar.Enabled = false;
            btnCancelar.Enabled = false;
            btnExcluir.Enabled = false;
            txtidModelo.Enabled = true;
            txtidModelo.Focus();
        }
 
        private void btnProcurar_Click(object sender, EventArgs e)
        {
            FrmPesquisa f = new FrmPesquisa();
            f.Text = "Consulta Tipos de Danos";
            f.Tag = "tbModelo"; //nome da tabela (macete)  :)
            f.ShowDialog();
        }
 
        private void btnSair_Click(object sender, EventArgs e)
        {
            this.Close();
        }
 
    }
}
 

Conclusão

 
Como vimos. A tabela de apólices é considerada a mais importante do Sistema e para que possa ser feito o cadastro de uma nova apólice, precisamos de alguns dados auxiliares. Estes dados poderão ser cadastrados a partir das classes que representam a lógica de negócios e a respectiva camada de apresentação criadas durante este artigo. Respectivamente: Dano, Tipo de Sinistro, e Modelos de Carros.
 
Gostaria de lembrar a todos que faltam apenas dois artigos, e ao final colocarei disponível o código, para que possíveis erros cometidos durante as partes mão na massa não venham a prejudicá-lo.
 
:-)
 
Um grande abraço. Semana que vem posto o sexto artigo.
 
Marcos Roberto de Moraes [Maromo]
Administrador de Sistema de Informação
 
 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?