private void iniciarComponentesGrafica(IPropiedadesGrafica funcion)
        {
            if (grafica != null)
            {
                //guardarGrafica();
                //remuevo los componentes anteriores antes de instanciar los nuevos.
                quitarComponentes();
            }

            grafica = new Grafica(funcion);
            grafica.setTitulo();
            chkEntrada.Checked = grafica.verEntrada;
            chkReferencias.Checked = grafica.chkGrReferencias;
            chkTpoAsentamiento.Checked = grafica.chkGrTpoAsentamiento;
            txtTitulo.Text = grafica.titulo;

            //Asigno los textos de los checkBoton
            if (grafica.funcion.Botones[0] != "")
            {
                chkReferencias.Text = grafica.funcion.Botones[0];
                chkReferencias.Visible = true;
            }
            else
            {
                chkReferencias.Visible = false;
            }

            if (grafica.funcion.Botones[1] != "")
            {
                chkTpoAsentamiento.Text = grafica.funcion.Botones[1];
                chkTpoAsentamiento.Visible = true;
            }
            else
            {
                chkTpoAsentamiento.Visible = false;
            }
        }
        private void cambiaGrafica()
        {
            String graficaSelect = (string)lstArchivos.SelectedItem;
            //grafica.dataGrid
            persRespuestas.getGrafica(graficaSelect, grafica.dataGrid);
            grafica.graficar();

            //-----
            grafica.dataGrid.Click += new EventHandler(grafica_dataGrid_Click);
            grafica.dataGrid.ClearSelection();
            //----
            guardarGrafica();
            foreach (Grafica g in listaGraficas)
            {
                if (graficaSelect == g.getNombre())
                {
                    quitarComponentes();
                    grafica = g;
                    agregarComponentes();
                    chkEntrada.Checked = grafica.verEntrada;
                    chkReferencias.Checked = grafica.chkGrReferencias;
                    chkTpoAsentamiento.Checked = grafica.chkGrTpoAsentamiento;
                    txtTitulo.Text = grafica.titulo;
                    lstArchivos.ClearSelected();

                    //Asigno los textos de los checkBoton
                    if (grafica.funcion.Botones[0] != "")
                    {
                        chkReferencias.Text = grafica.funcion.Botones[0];
                        chkReferencias.Visible = true;
                    }
                    else
                    {
                        chkReferencias.Visible = false;
                    }

                    if (grafica.funcion.Botones[1] != "")
                    {
                        chkTpoAsentamiento.Text = grafica.funcion.Botones[1];
                        chkTpoAsentamiento.Visible = true;
                    }
                    else
                    {
                        chkTpoAsentamiento.Visible = false;
                    }
                }
            }

            this.btnGuardar.Enabled = true;
        }
        private void eliminarGrafica()
        {
            if (grafica != null)
            {
                listaGraficas.Remove(grafica);
                txtTitulo.Text = "";
                chkReferencias.Hide();
                chkTpoAsentamiento.Hide();
                grafica.hideFrmMedidas();

                //Desactivo las opciones no permitidas
                guardarToolStripMenuItem.Enabled = false;
                eliminarToolStripMenuItem.Enabled = false;

            }
            quitarComponentes();
            //lstArchivos.DataSource = null;
            //lstArchivos.DataSource = generarLista();
            grafica = null;
        }
        /// <summary>
        /// Inserta una nueva grafica en la tabla actual para luego guardarla
        /// </summary>
        /// <param name="g">la clase grafica que está siendo utilizada actualmente</param>
        public void nuevaGrafica(Grafica g)
        {
            bool noDatos = false;
            int cont = 0, tipoInt=-1;
            for (int i=0; i < this.datosGrafica.Rows.Count; i++)
                this.datosGrafica.Rows[i].Delete();
            this.datosGrafica.AcceptChanges();
            foreach (DataGridViewRow dgvr in g.dataGrid.Rows)
            {
                cont = 1;
                noDatos = false;
                do
                {
                    //revisar si hay alguna celda vacía  || (dgvr.Cells[cont].Value == null)
                    if (dgvr.Cells[cont].Value == null)
                    {
                        noDatos = true;
                    }
                    cont++;
                } while (cont < dgvr.Cells.Count);

                //si no hay celdas vacías
                if (!noDatos)
                {
                    //cambiar , por . para no tener problemas al guardar en la DB ya que sino la "," no la toma como tal
                    //y guarda el número como si no tuviese decimales
                    for (int i = 1; i < dgvr.Cells.Count;i++ )
                    {
                        try
                        {
                            dgvr.Cells[i].Value = Double.Parse(dgvr.Cells[i].Value.ToString().Replace(",", "."));
                        }
                        catch (FormatException e) { }
                    }

                    DataRow fila = this.datosGrafica.NewRow();
                    //agregar los datos a la fila
                    try
                    {
                        switch (tipo)
                        {
                            case ("Escalon1"):
                                tipoInt = 1;
                                break;
                            case ("Impulso1"):
                                tipoInt = 2;
                                break;
                            case ("Senoidal1"):
                                tipoInt = 3;
                                break;
                            case ("Rampa1"):
                                tipoInt = 4;
                                break;
                            case ("Escalon2"):
                                tipoInt = 5;
                                break;
                            case ("Impulso2"):
                                tipoInt = 6;
                                break;
                            case ("Senoidal2"):
                                tipoInt = 7;
                                break;
                        }
                        fila["tipo"] = tipoInt;
                        fila["titulo"] = g.getNombre();

                        //parámetros
                        if (!((tipo == "Senoidal1") || (tipo == "Senoidal2")))
                        {
                            //Si no son senoidales
                            fila["amplitud"] = dgvr.Cells[1].Value;
                            fila["cteTiempo"] = dgvr.Cells[2].Value;
                        }
                        else
                        {
                            //si son senoidales
                            fila["valorBase"] = dgvr.Cells[1].Value;
                            fila["amplitud"] = dgvr.Cells[2].Value;
                            fila["frecuencia"] = dgvr.Cells[3].Value;
                            fila["cteTiempo"] = dgvr.Cells[4].Value;
                            if (tipo == "Senoidal2") fila["coefAmort"] = dgvr.Cells[5].Value;
                        }

                        //si son entradas escalón o impulso de 2º orden se agrega el coeficiente de Amortiguaicón y el tiempo de asentamiento
                        if ((tipo == "Escalon2") || (tipo == "Impulso2"))
                        {
                            fila["coefAmort"] = dgvr.Cells[3].Value;
                            fila["tiempoAsent"] = dgvr.Cells[4].Value;
                        }
                        fila["id_respuesta"] = ultimoIdRespTransiente;

                        this.datosGrafica.Rows.Add(fila);
                    }
                    catch (Exception e) { }
                }
                else
                {
                    //si hay celdas vacías doy por terminado el for
                    break;
                }
            }
        }