//=============================================================================================================
        private void btExcluir_Click(object sender, EventArgs e) // https://youtu.be/U_JhTWIVRro?list=PLfvOpw8k80Wqj1a66Qsjh8jj4hlkzKSjA
        {
            //tem que excluir os itens relacionados em todas as tabelas em um sequencia logica:
            //tem que excluir na sequencia inversa em que se gravou a compra

            //-----------------------------------------------------------------------------------------------------------------------
            //CONEXAO:
            //-----------------------------------------------------------------------------------------------------------------------
            DALConexao cx = new DALConexao(DadosDaConexao.StringDeConexao); //Recebe a string da conexão da classe DadosDaConexão

            try                                                             //CONEXAO:
            {
                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                //CONEXAO: INCIAR TRANSAÇÃO
                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                cx.Conectar();         //CONECTAR NO BANCO - para poder usar a transação, tem que ser usado aénas uma conexao, antes cada tabela teinha seu conetar
                cx.IniciarTransacao(); //inicia transação no banco SQL - Feito para acoes que envolvem mais de uma tabela https://youtu.be/fA_T1ywEXqw

                //Validar, excluir compra se ja tiver sido efetuado alguma pagamento:
                try
                {
                    DialogResult d = MessageBox.Show("Deseja excluir o registro?", "Aviso", MessageBoxButtons.YesNo);//confirmar antes de excluir
                    //caso responder sim...
                    if (d.ToString() == "Yes")
                    {
                        //pega o codigo da compra:
                        int CodigoCompra = Convert.ToInt32(txtComCod.Text);

                        //criar objetos BLL:
                        BLLParcelasCompra bllPar  = new BLLParcelasCompra(cx);
                        BLLItensCompra    bllITen = new BLLItensCompra(cx);
                        BLLCompra         bllCP   = new BLLCompra(cx); //passa a string de conexao

                        //verificar se tem parcelas pagas:
                        int Qtde = bllCP.QuantidadeParcePagas(CodigoCompra);

                        if (Qtde > 0)                                                                                                                                      //se tiver parcelas pagas
                        {
                            DialogResult g = MessageBox.Show("Esta Compra possui Parcelas Pagas Deseja! \n Deseja excluir o registro?", "Aviso", MessageBoxButtons.YesNo); //confirmar antes de excluir
                            //caso responder sim...
                            if (g.ToString() == "No")
                            {
                                //cancela esta ação:
                                cx.TerminarTransacao(); //Efetua um comit, confirmar as alterações no banco
                                cx.Desconectar();       //desconetar do banco
                                return;
                            }
                        }

                        //---------------------------------------------------------------------------------------------------------------------------
                        //03 - Excluir as parcelas da compra:
                        //---------------------------------------------------------------------------------------------------------------------------
                        bllPar.ExcluirTodasAsParcelas(CodigoCompra);

                        //---------------------------------------------------------------------------------------------------------------------------
                        //02 - Excluir itens da compra:
                        //---------------------------------------------------------------------------------------------------------------------------
                        bllITen.ExcluirTodosOsItens(CodigoCompra);

                        //---------------------------------------------------------------------------------------------------------------------------
                        //01 - Excluir compra:
                        //---------------------------------------------------------------------------------------------------------------------------
                        bllCP.Excluir(Convert.ToInt32(txtComCod.Text));//retorna erro se este codigo ja estiver sendo utilizado como chave em outra tabela

                        //Mensagem de sucesso:
                        MessageBox.Show("Cadastro excluido com sucesso!");
                    }
                }
                catch // sem o Exception, qualquer tipo de erro
                {
                    MessageBox.Show("Impossível excluir o registro. \n O registro esta sendo utilizado em outro local.");
                    this.alteraBotoes(3);
                    cx.CancelarTransacao(); //caso de erro desfaz todas as ações
                    cx.Desconectar();       //desconetar do banco
                }

                this.LimpaTela();
                this.alteraBotoes(1);

                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                //CONEXAO: TERMINAR TRANSAÇÃO
                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                //so vai gravar, se for nas tres tabelas
                cx.TerminarTransacao();                                                //Efetua um comit, confirmar as alterações no banco
                cx.Desconectar();                                                      //desconetar do banco
            }
            catch (Exception erro)                                                     // caso der algum erro...(não limpa a tela)
            {
                MessageBox.Show("Erro ao gravar dados da Compra : \n" + erro.Message); //retorna mensagem do sistema, melhorar mensagem para o usuario
                cx.CancelarTransacao();                                                //caso de erro desfaz todas as ações
                cx.Desconectar();                                                      //desconetar do banco
            }
        }
        //=============================================================================================================
        private void btAlterar_Click(object sender, EventArgs e) //https://youtu.be/NRKmeODwsB4?list=PLfvOpw8k80Wqj1a66Qsjh8jj4hlkzKSjA&t=277
        {
            //-----------------------------------------------------------------------------------------------------------------------
            //CONEXAO:
            //-----------------------------------------------------------------------------------------------------------------------
            DALConexao cx = new DALConexao(DadosDaConexao.StringDeConexao); //Recebe a string da conexão da classe DadosDaConexão

            try                                                             //CONEXAO:
            {
                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                //CONEXAO: INCIAR TRANSAÇÃO
                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                cx.Conectar();         //CONECTAR NO BANCO - para poder usar a transação, tem que ser usado aénas uma conexao, antes cada tabela teinha seu conetar
                cx.IniciarTransacao(); //inicia transação no banco SQL - Feito para acoes que envolvem mais de uma tabela https://youtu.be/fA_T1ywEXqw

                //nao deixar alterar compra se ja tiver sido efetuado alguma pagamento:
                try
                {
                    //pega o codigo da compra:
                    int CodigoCompra = Convert.ToInt32(txtComCod.Text);

                    //criar objetos BLL:
                    BLLCompra bllCP = new BLLCompra(cx); //passa a string de conexao

                    //Validar se tem parcelas pagas:
                    int Qtde = bllCP.QuantidadeParcePagas(CodigoCompra);
                    //se tiver parcelas pagas
                    if (Qtde > 0)
                    {
                        DialogResult g = MessageBox.Show("Esta Compra possui Parcelas Pagas! \n Deseja alterar o registro?", "Aviso", MessageBoxButtons.YesNo);//confirmar antes de excluir
                        //caso responder sim...
                        if (g.ToString() == "No")
                        {
                            cx.TerminarTransacao(); //Efetua um comit, confirmar as alterações no banco
                            cx.Desconectar();       //desconetar do banco
                            return;
                        }
                    }
                }
                catch // sem o Exception, qualquer tipo de erro
                {
                    MessageBox.Show("Impossível excluir o registro. \n O registro esta sendo utilizado em outro local.");
                    this.alteraBotoes(3);
                }

                //Liberar alterar
                this.operacao = "alterar";
                this.alteraBotoes(2);

                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                //CONEXAO: TERMINAR TRANSAÇÃO
                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                //so vai gravar, se for nas tres tabelas
                cx.TerminarTransacao();                                                //Efetua um comit, confirmar as alterações no banco
                cx.Desconectar();                                                      //desconetar do banco
            }
            catch (Exception erro)                                                     // caso der algum erro...(não limpa a tela)
            {
                MessageBox.Show("Erro ao gravar dados da Compra : \n" + erro.Message); //retorna mensagem do sistema, melhorar mensagem para o usuario
                cx.CancelarTransacao();                                                //caso de erro desfaz todas as ações
                cx.Desconectar();                                                      //desconetar do banco
            }
        }