private void registros_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            #region Registros
            if (this.archivo != null)
            {
                SeleccionEntidad  seleccionEntidad;
                SeleccionRegistro seleccionRegistro;
                switch (e.ClickedItem.AccessibleName)
                {
                case "Alta":
                    seleccionEntidad = new SeleccionEntidad(this.archivo);
                    if (seleccionEntidad.ShowDialog().Equals(DialogResult.OK))
                    {
                        AltaRegistro altaRegistro;
                        altaRegistro = new AltaRegistro(this.archivo.buscaEntidad(MetodosAuxiliares.ajustaCadena(seleccionEntidad.Entidad, Constantes.tam)));
                        altaRegistro.obtenLllaves += new AltaRegistro.ObtenLlaves(this.obtenLllavesEntidad);
                        if (altaRegistro.ShowDialog().Equals(DialogResult.OK))
                        {
                            this.archivo.altaRegistro(MetodosAuxiliares.ajustaCadena(seleccionEntidad.Entidad, Constantes.tam),
                                                      this.directorio, altaRegistro.Informacion);
                            this.actualizaTodo();
                        }
                        altaRegistro.Dispose();
                    }
                    seleccionEntidad.Dispose();
                    break;

                case "AltaSQL":
                    AltaRegistroSQL altaRegistroSQL;
                    altaRegistroSQL          = new AltaRegistroSQL(this.directorio);
                    altaRegistroSQL.altaSQL += new AltaRegistroSQL.AltaSQL(this.archivo.altaSQl);
                    altaRegistroSQL.ShowDialog();
                    this.actualizaTodo();
                    altaRegistroSQL.Dispose();
                    break;

                case "Modificar":
                    seleccionEntidad = new SeleccionEntidad(this.archivo);
                    if (seleccionEntidad.ShowDialog().Equals(DialogResult.OK))
                    {
                        Entidad entidad;
                        entidad           = this.archivo.buscaEntidad(MetodosAuxiliares.ajustaCadena(seleccionEntidad.Entidad, Constantes.tam));
                        seleccionRegistro = new SeleccionRegistro(entidad);
                        if (seleccionRegistro.ShowDialog().Equals(DialogResult.OK))
                        {
                            ModificaRegistro modificaRegistro;
                            modificaRegistro = new ModificaRegistro(entidad, seleccionRegistro.ClaveDeBusqueda);
                            modificaRegistro.obtenLllaves += new ModificaRegistro.ObtenLlaves(this.obtenLllavesEntidad);
                            if (modificaRegistro.ShowDialog().Equals(DialogResult.OK))
                            {
                                this.archivo.modificaRegistro(seleccionEntidad.Entidad, seleccionRegistro.ClaveDeBusqueda, modificaRegistro.InfoOriginal, modificaRegistro.Datos, this.directorio);
                                this.actualizaTodo();
                            }
                        }
                        seleccionRegistro.Dispose();
                    }
                    seleccionEntidad.Dispose();
                    break;

                case "Consulta Primario":
                    seleccionEntidad = new SeleccionEntidad(this.archivo);
                    if (seleccionEntidad.ShowDialog().Equals(DialogResult.OK))
                    {
                        ConsultaRegistroPrimario consulta;
                        Entidad entidad;
                        entidad = this.archivo.buscaEntidad(MetodosAuxiliares.ajustaCadena(seleccionEntidad.Entidad, Constantes.tam));
                        if (entidad.Valores.Count > 0)
                        {
                            consulta = new ConsultaRegistroPrimario(entidad);
                            consulta.Show();
                        }
                        else
                        {
                            MessageBox.Show("La entidad seleccionada no contiene registros", "Error");
                        }
                    }
                    break;

                case "Consultas SQL":
                    ConsultasSQL sql;
                    sql = new ConsultasSQL();
                    sql.consultaAtributosSelect      += new ConsultasSQL.ConsultaAtributosSelect(this.archivo.ConsultaAtributosSelect);
                    sql.consultaRegistrosSelectWhere += new ConsultasSQL.ConsultaRegistrosSelectWhere(this.archivo.ConsultaRegistrosSelectWhere);
                    sql.innerJoin += new ConsultasSQL.InnerJoin(this.archivo.InnerJoin);
                    sql.consultaAtributosSelectInnerJoin += new ConsultasSQL.ConsultaAtributosSelectInnerJoin(this.archivo.ConsultaAtributosSelectInnerJoin);
                    sql.consultaRegistrosSelectAnd       += new ConsultasSQL.ConsultaRegistrosSelectAnd(this.archivo.consultaRegistrosInnerJoinAnd);
                    sql.Show();
                    break;

                case "Eliminar":
                    seleccionEntidad = new SeleccionEntidad(this.archivo);
                    if (seleccionEntidad.ShowDialog().Equals(DialogResult.OK))
                    {
                        seleccionRegistro = new SeleccionRegistro(this.archivo.buscaEntidad(MetodosAuxiliares.ajustaCadena(seleccionEntidad.Entidad, Constantes.tam)));
                        if (seleccionRegistro.ShowDialog().Equals(DialogResult.OK))
                        {
                            this.archivo.eliminaRegistro(MetodosAuxiliares.ajustaCadena(seleccionEntidad.Entidad, Constantes.tam),
                                                         seleccionRegistro.ClaveDeBusqueda, this.directorio);
                            this.actualizaTodo();
                        }
                    }
                    seleccionEntidad.Dispose();
                    break;
                }
            }
            else
            {
                MessageBox.Show("Por favor abra una base de datos o cree", "Error");
            }
            #endregion
        }
        private void entidades_Clicked(object sender, ToolStripItemClickedEventArgs e)
        {
            #region Entidades
            if (this.archivo != null)
            {
                switch (e.ClickedItem.AccessibleName)
                {
                case "Alta":
                    #region Alta
                    AltaEntidad altaEntidad = new AltaEntidad(archivo.Nombre);
                    if (altaEntidad.ShowDialog() == DialogResult.OK)
                    {
                        string nombre;
                        nombre = MetodosAuxiliares.ajustaCadena(altaEntidad.Nombre, Constantes.tam);
                        long       dir;
                        FileStream abierto;
                        abierto = new FileStream(archivo.Nombre, FileMode.Append);                                       //abre el archivo en un file stream
                        dir     = (long)abierto.Seek(0, SeekOrigin.End);                                                 //Calcula la direccion final del archivo y lo mete en un long
                        abierto.Close();                                                                                 //Cierra el file Stream
                        archivo.altaEntidad(nombre, dir, -1, -1, -1);                                                    //Da de alta la entidad
                        abierto = new FileStream(this.directorio + "\\" + altaEntidad.Nombre + ".dat", FileMode.Create); //Crea el archivo .dat de la entidad
                        abierto.Close();
                        abierto = new FileStream(this.directorio + "\\" + altaEntidad.Nombre + ".idx", FileMode.Create); //Crea el archivo .idx de la entidad
                        abierto.Close();
                        this.actualizaTodo();                                                                            //Actualiza todos los Data Grid
                    }
                    altaEntidad.Dispose();                                                                               //Eliminamos el objeto
                    #endregion
                    break;

                case "Modificar":
                    if (this.archivo.Entidades.Count > 0)
                    {
                        #region Modificar
                        ModificaEntidad modificaEntidad;
                        modificaEntidad = new ModificaEntidad(this.archivo);
                        if (modificaEntidad.ShowDialog().Equals(DialogResult.OK))
                        {
                            string original;
                            string nuevo;
                            archivo.modificaEntidad(MetodosAuxiliares.ajustaCadena(modificaEntidad.Entidad, Constantes.tam),
                                                    MetodosAuxiliares.ajustaCadena(modificaEntidad.Cambio, Constantes.tam));
                            original = this.directorio + "\\" + modificaEntidad.Entidad + ".dat";
                            nuevo    = this.directorio + "\\" + modificaEntidad.Cambio + ".dat";
                            File.Move(original, nuevo);
                            original = this.directorio + "\\" + modificaEntidad.Entidad + ".idx";
                            nuevo    = this.directorio + "\\" + modificaEntidad.Cambio + ".idx";
                            File.Move(original, nuevo);
                            this.actualizaTodo();
                        }
                        modificaEntidad.Dispose();
                        #endregion
                    }
                    break;

                case "Consulta":
                    if (this.archivo.Entidades.Count > 0)
                    {
                        #region Consulta
                        ConsultaEntidad consultaEntidad;
                        consultaEntidad = new ConsultaEntidad(this.archivo);
                        consultaEntidad.ShowDialog();
                        consultaEntidad.Dispose();
                        #endregion
                    }
                    break;

                case "Eliminar":
                    if (this.archivo.Entidades.Count > 0)
                    {
                        #region Eliminar
                        SeleccionEntidad eliminaEntidad;
                        eliminaEntidad = new SeleccionEntidad(this.archivo);
                        if (eliminaEntidad.ShowDialog().Equals(DialogResult.OK))
                        {
                            string nombreAuxiliar;
                            nombreAuxiliar = this.directorio + "\\" + eliminaEntidad.Entidad;
                            archivo.eliminaEntidad(MetodosAuxiliares.ajustaCadena(eliminaEntidad.Entidad, Constantes.tam), nombreAuxiliar);
                            actualizaTodo();
                        }
                        eliminaEntidad.Dispose();
                        #endregion
                    }
                    break;

                default:
                    MessageBox.Show("Opción incorrecta o no implementada", "Atención");
                    break;
                }
            }
            else
            {
                MessageBox.Show("Por favor abra una base de datos", "Error");
            }
            #endregion
        }