// SUB NEW
        //------------------------------------------------------------------------------------------------------------
        public frmCampanha(objCampanha obj)
        {
            InitializeComponent();

            _campanha       = obj;
            bind.DataSource = _campanha;
            BindingCreator();
            _IDSetor = _campanha.IDSetor;

            _campanha.PropertyChanged += RegistroAlterado;

            if (_campanha.IDCampanha == null)
            {
                Sit = EnumFlagEstado.NovoRegistro;
            }
            else
            {
                Sit = EnumFlagEstado.RegistroSalvo;
            }

            AtivoButtonImage();
            HandlerKeyDownControl(this);
            txtCampanha.Validating += (a, b) => PrimeiraLetraMaiuscula(txtCampanha);
            GetSaldo();
        }
        private void dgvListagem_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                Control c = (Control)sender;
                DataGridView.HitTestInfo hit = dgvListagem.HitTest(e.X, e.Y);
                dgvListagem.ClearSelection();

                //---VERIFICAÇÕES NECESSARIAS
                if (hit.Type != DataGridViewHitTestType.Cell)
                {
                    return;
                }

                // seleciona o ROW
                dgvListagem.Rows[hit.RowIndex].Cells[0].Selected = true;
                dgvListagem.Rows[hit.RowIndex].Selected          = true;

                // mostra o MENU ativar e desativar
                objCampanha Campanha = (objCampanha)dgvListagem.Rows[hit.RowIndex].DataBoundItem;

                if (Campanha.Ativa == true)
                {
                    mnuConcluir.Text = "Concluir/Finalizar Campanha";
                }
                else
                {
                    mnuConcluir.Text = "Reativar Campanha";
                }

                // revela menu
                MenuListagem.Show(c.PointToScreen(e.Location));
            }
        }
        // UPDATE
        //------------------------------------------------------------------------------------------------------------
        public bool UpdateCampanha(objCampanha campanha)
        {
            try
            {
                AcessoDados db = new AcessoDados();

                //--- clear Params
                db.LimparParametros();

                //--- define Params
                db.AdicionarParametros("@IDCampanha", campanha.IDCampanha);
                db.AdicionarParametros("@Campanha", campanha.Campanha);
                db.AdicionarParametros("@IDSetor", campanha.IDSetor);
                db.AdicionarParametros("@CampanhaSaldo", campanha.CampanhaSaldo);
                db.AdicionarParametros("@ObjetivoValor", campanha.ObjetivoValor);
                db.AdicionarParametros("@InicioData", campanha.InicioData);
                db.AdicionarParametros("@ConclusaoData", campanha.ConclusaoData);
                db.AdicionarParametros("@Ativa", campanha.Ativa);

                //--- convert null parameters
                db.ConvertNullParams();

                //--- create query
                string query = db.CreateUpdateSQL("tblCampanha", "IDCampanha");

                //--- update
                db.ExecutarManipulacao(CommandType.Text, query);
                return(true);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        // EDITAR CONTA ESCOLHIDA
        //------------------------------------------------------------------------------------------------------------
        private void btnEditar_Click(object sender, EventArgs e)
        {
            //--- check selected item
            if (dgvListagem.SelectedRows.Count == 0)
            {
                AbrirDialog("Favor selecionar um registro para Editar...",
                            "Selecionar Registro", DialogType.OK, DialogIcon.Information);
                return;
            }

            //--- get Selected item
            objCampanha item = (objCampanha)dgvListagem.SelectedRows[0].DataBoundItem;

            //--- open edit form
            if (_formOrigem == null)
            {
                frmCampanha frm = new frmCampanha(item);
                frm.MdiParent = Application.OpenForms.OfType <frmPrincipal>().FirstOrDefault();
                DesativaMenuPrincipal();
                Close();
                frm.Show();
            }
            else
            {
                propEscolha  = item;
                DialogResult = DialogResult.Yes;
            }
        }
        // INSERT
        //------------------------------------------------------------------------------------------------------------
        public int InsertCampanha(objCampanha campanha)
        {
            try
            {
                AcessoDados db = new AcessoDados();

                //--- clear Params
                db.LimparParametros();

                //--- define Params
                db.AdicionarParametros("@Campanha", campanha.Campanha);
                db.AdicionarParametros("@IDSetor", campanha.IDSetor);
                db.AdicionarParametros("@CampanhaSaldo", campanha.CampanhaSaldo);
                db.AdicionarParametros("@ObjetivoValor", campanha.ObjetivoValor);
                db.AdicionarParametros("@InicioData", campanha.InicioData);
                db.AdicionarParametros("@Ativa", campanha.Ativa);

                //--- convert null parameters
                db.ConvertNullParams();

                //--- create query
                string query = db.CreateInsertSQL("tblCampanha");

                //--- insert
                return((int)db.ExecutarInsertAndGetID(query));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
 // FIND AND SELECT IN LIST PROVIDED DEFAULT ID : ON OPEN
 //------------------------------------------------------------------------------------------------------------
 private void FindSelectDefautID(int?DefaultID)
 {
     if (DefaultID != null)
     {
         foreach (BetterListViewItem item in lstItens)
         {
             if (Convert.ToInt32(item.Text) == DefaultID)
             {
                 item.Selected = true;
                 propEscolha   = GetSelectedItem();
             }
             else
             {
                 item.Selected = false;
             }
         }
     }
     else
     {
         if (lstItens.Items.Count > 0)
         {
             lstItens.Items[0].Selected = true;
         }
     }
 }
        private void AtivarDesativar_Campanha_Click(object sender, EventArgs e)
        {
            //--- verifica se existe alguma cell
            if (dgvListagem.SelectedRows.Count == 0)
            {
                return;
            }

            //--- Verifica o item
            objCampanha camp = (objCampanha)dgvListagem.SelectedRows[0].DataBoundItem;

            //---pergunta ao usuário
            var reponse = AbrirDialog($"Deseja realmente {(camp.Ativa ? "CONCLUIR | FINALIZAR" : "REATIVAR")} essa Campanha?\n" +
                                      camp.Campanha.ToUpper(), (camp.Ativa ? "CONCLUIR " : "REATIVAR"),
                                      DialogType.SIM_NAO, DialogIcon.Question);

            if (reponse == DialogResult.No)
            {
                return;
            }

            //--- altera o valor
            if (camp.Ativa)
            {
                camp.Ativa         = false;
                camp.ConclusaoData = DateTime.Today;
            }
            else
            {
                camp.Ativa         = true;
                camp.ConclusaoData = null;
            }

            //--- Salvar o Registro
            try
            {
                // --- Ampulheta ON
                Cursor.Current = Cursors.WaitCursor;

                cBLL.UpdateCampanha(camp);

                //--- obter listagem
                ObterDados(sender, e);
            }
            catch (Exception ex)
            {
                AbrirDialog("Uma exceção ocorreu ao Alterar Campanha..." + "\n" +
                            ex.Message, "Exceção", DialogType.OK, DialogIcon.Exclamation);
            }
            finally
            {
                // --- Ampulheta OFF
                Cursor.Current = Cursors.Default;
            }
        }
        // INSERIR NOVO REGISTRO
        //------------------------------------------------------------------------------------------------------------
        private void btnNovo_Click(object sender, EventArgs e)
        {
            if (Sit != EnumFlagEstado.RegistroSalvo)
            {
                return;
            }

            _campanha = new objCampanha(null);
            Sit       = EnumFlagEstado.NovoRegistro;
            AtivoButtonImage();
            bind.DataSource = _campanha;
            txtCampanha.Focus();
            GetSaldo();
        }
 // CONTROL IMAGES OF LIST DATAGRID
 //------------------------------------------------------------------------------------------------------------
 private void dgvListagem_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
 {
     if (e.ColumnIndex == clnImage.Index)
     {
         objCampanha item = (objCampanha)dgvListagem.Rows[e.RowIndex].DataBoundItem;
         if (item.Ativa)
         {
             e.Value = ImgAtivo;
         }
         else
         {
             e.Value = ImgInativo;
         }
     }
 }
        // CONVERT ROW IN CLASS
        //------------------------------------------------------------------------------------------------------------
        public objCampanha ConvertRowInClass(DataRow row)
        {
            objCampanha campanha = new objCampanha((int)row["IDCampanha"])
            {
                Campanha      = (string)row["Campanha"],
                IDSetor       = row["IDSetor"] == DBNull.Value ? null : (int?)row["IDSetor"],
                Setor         = row["Setor"] == DBNull.Value ? "" : (string)row["Setor"],
                CampanhaSaldo = row["CampanhaSaldo"] == DBNull.Value ? 0 : (decimal)row["CampanhaSaldo"],
                InicioData    = row["InicioData"] == DBNull.Value ? DateTime.Today : (DateTime)row["InicioData"],
                ConclusaoData = row["ConclusaoData"] == DBNull.Value ? null : (DateTime?)row["ConclusaoData"],
                Ativa         = (bool)row["Ativa"],
                ObjetivoValor = (decimal)row["ObjetivoValor"],
            };

            return(campanha);
        }
        private void btnEscolher_Click(object sender, EventArgs e)
        {
            objCampanha item = GetSelectedItem();

            //--- check selected item
            if (item == null)
            {
                AbrirDialog("Favor selecionar um registro para Editar...",
                            "Selecionar Registro", DialogType.OK, DialogIcon.Information);
                return;
            }

            //--- open edit form
            propEscolha  = item;
            DialogResult = DialogResult.OK;
        }
        private void mnuRecalcularSaldo_Click(object sender, EventArgs e)
        {
            //--- verifica se existe alguma cell
            if (dgvListagem.SelectedRows.Count == 0)
            {
                return;
            }

            //--- Verifica o item
            objCampanha camp = (objCampanha)dgvListagem.SelectedRows[0].DataBoundItem;

            try
            {
                // --- Ampulheta ON
                Cursor.Current = Cursors.WaitCursor;

                decimal SaldoAtual = cBLL.GetCampanhaSaldo((int)camp.IDCampanha);

                if (SaldoAtual != camp.CampanhaSaldo)
                {
                    camp.CampanhaSaldo = cBLL.GetCampanhaSaldo((int)camp.IDCampanha);
                    cBLL.UpdateCampanha(camp);
                    AbrirDialog("O Saldo Atual da Campanha foi alterado...", "Saldo Atual");
                }
            }
            catch (Exception ex)
            {
                AbrirDialog("Uma exceção ocorreu ao Obter o Saldo da Campanha..." + "\n" +
                            ex.Message, "Exceção", DialogType.OK, DialogIcon.Exclamation);
            }
            finally
            {
                // --- Ampulheta OFF
                Cursor.Current = Cursors.Default;
            }
        }