using Exferia_Aplicacion.General;
using Exferia_Aplicacion.Visualizacion;
using Exferia_Controles;
using Exferia_EntityFramework;
using Exferia_Formularios;
using Exferia_General._3_Vistas.Controladoras;
using Exferia_General._3_Vistas.ListadosSeleccion;
using Exferia_General.General;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using static Exferia_Aplicacion.General.Enumerados;

namespace Exferia_General._3_Vistas
{
    public partial class P_Empresa_CompartirDatos : Exferia_Formularios.P_Base_Mantenimientos
    {
        #region Variales Generales
        private P_Empresas_CompartirDatos_Controladora g_obj_controladora;

        private bool g_bol_ConstructorPantalla_Terminado_Correctamente = true;

        public INTERNO_OpcionesDetalle_Modelo g_mdl_INTERNO_OpcionesDetalle_Modelo = null;
        public List<INTERNO_Permisos_Modelo> g_lst_INTERNO_Permisos_Modelo = null;
        #endregion

        #region Objetos en Pantalla
        //Exferia_Label
        internal Exferia_Label Exferia_Label_Fichero_Add { get{ return ex_lbl_P_Empresa_CompartirDatos_Add;  } }
        internal Exferia_Label Exferia_Label_1_Seleccion_EmpresaPrincipal { get{ return ex_lbl_P_Empresa_CompartirDatos_1_Seleccion; } }
        internal Exferia_Label Exferia_Label_2_Seleccion_Empresas_Comparten { get{ return ex_lbl_P_Empresa_CompartirDatos_2_Seleccion; } }
        internal Exferia_Label Exferia_Label_3_Ficheros_A_Compartir { get{ return ex_lbl_P_Empresa_CompartirDatos_3_Ficheros; } }
        internal Exferia_Label Exferia_Label_Ficheros_Compartidos_Con_EmpresaPrincipal { get{ return ex_lbl_P_Empresa_CompartirDatos_Ficheros_Compartidos; } }

        //Exferia_DaraGridView
        internal Exferia_DataGridView Exferia_DataGridView_1_Seleccion_EmpresaPrincipal { get{ return ex_dgv_P_Empresa_CompartirDatos_1_Seleccion_EmpresaPrincipal; } }
        internal Exferia_DataGridView Exferia_DataGridView_2_Seleccion_Empresas_comparten { get{ return ex_dgv_P_Empresa_CompartirDatos_2_Seleccion_Empresas_Comparten; } }
        internal Exferia_DataGridView Exferia_DataGridView_3_Ficheros_A_Compartir { get{ return ex_dgv_P_Empresa_CompartirDatos_3_Ficheros_Compartir; } }

        //Exferia_TabControl
        internal Exferia_TabControl Exferia_TabControl_Principal { get{ return ex_tbc_P_Empresa_CompartirDatos; } }
        #endregion

        #region Constructor
        public P_Empresa_CompartirDatos(INTERNO_ValoresGenerales_Modelo _mdl_INTERNO_ValoresGenerales_Modelo, DateTime _dtt_FechaTrabajo , INTERNO_OpcionesDetalle_Modelo _mdl_INTERNO_OpcionesDetalle_Modelo)
        {
            InitializeComponent();

            try
            {
                Repintar.Empezar(this);

                g_mdl_INTERNO_OpcionesDetalle_Modelo = _mdl_INTERNO_OpcionesDetalle_Modelo;

                g_obj_controladora = new P_Empresas_CompartirDatos_Controladora(this);

                //Titulo de la Pantalla
                P_Base_TituloPantalla = g_mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento;

                //Buscar los Permisos
                g_lst_INTERNO_Permisos_Modelo = Datos_Generales.Permisos_Buscar(g_mdl_INTERNO_OpcionesDetalle_Modelo.opcion);

                //Poner los botones que no se pueden poner bloqueados o de solo lectura
                ex_btn_P_Empresa_CompartirDatos_Add.Exferia_Button_Bloqueable = false;
                ex_btn_P_Empresa_CompartirDatos_Grabar.Exferia_Button_Bloqueable = false;

                //Empresa seleccionada y fecha de trabajo ....................................................
                P_Base_ValoresGenerales = _mdl_INTERNO_ValoresGenerales_Modelo;
                P_Base_FechaTrabajo = _dtt_FechaTrabajo;
                // Label con Empresa Seleccionada 
                if (P_Base_ValoresGenerales != null)
                {
                    try
                    {
                        P_Base_Mantenimientos_InformacionEmpresaSeleccionada = P_Base_ValoresGenerales.str_Empresa_Descripcion + " - " +
                                                                "(" + P_Base_FechaTrabajo.ToString("dd/MM/yyyy") + ")";
                    }
                    catch (Exception ex)
                    {
                        //No se muestra mensaje pero se guarda en el log
                        Control_Errores.Errores_Log(ex.Message, ex, nameof(P_Permisos) + "/" + nameof(P_Permisos));
                    }
                }
                //....................................................................................................

                //Bloquear pantalla hasta que termine la carga por defecto .....
                Enabled = false;
                //.............................................................
            }
            catch (Control_Errores)
            {
                g_bol_ConstructorPantalla_Terminado_Correctamente = false;
            }
            catch (Exception ex)
            {
                g_bol_ConstructorPantalla_Terminado_Correctamente = false;

                //No se muestra mensaje pero se guarda en el log
                Control_Errores.Errores_Log(ex.Message, ex, nameof(P_Empresa_CompartirDatos) + "/" + nameof(P_Empresa_CompartirDatos));
            }
            finally
            {
                //Bloquear pantalla hasta que termine la carga por defecto .....
                Enabled = true;
                //.............................................................
            }
        }
        #endregion

        #region Inicio de Pantalla
        private void P_Empresa_CompartirDatos_Shown(object sender, EventArgs e)
        {
            try
            {
                Organizar_Pantalla();

                if (g_bol_ConstructorPantalla_Terminado_Correctamente)
                {
                    g_obj_controladora.RecargarDatos();
                }
                else
                {
                    Mensajes.MostrarMensaje(Mensajes.G_STR_MENSAJES_GENERAL_ERROR_CARGARDATOSPANTALLA());
                    Salir_P_Base();
                }
            }
            catch (Control_Errores)
            {
                Mensajes.MostrarMensaje(Mensajes.G_STR_MENSAJES_GENERAL_ERROR_CARGARDATOSPANTALLA());
                Salir_P_Base();
            }
            catch (Exception ex)
            {
                //No se muestra mensaje pero se guarda en el log
                Control_Errores.Errores_Log(ex.Message, ex, nameof(P_Empresa_CompartirDatos) + "/" + nameof(P_Empresa_CompartirDatos_Shown));

                Mensajes.MostrarMensaje(Mensajes.G_STR_MENSAJES_GENERAL_ERROR_CARGARDATOSPANTALLA());
                Salir_P_Base();
            }
        }
        #endregion

        #region Botones y metodos
        private void ex_btn_P_Empresa_CompartirDatos_Add_click(object sender, EventArgs e)
        {
            bool bol_TodoCorrecto = true;

            //Ver si hay una Empresa Principal marcada
            if (ex_dgv_P_Empresa_CompartirDatos_1_Seleccion_EmpresaPrincipal.SelectedRows == null || 
                ex_dgv_P_Empresa_CompartirDatos_1_Seleccion_EmpresaPrincipal.SelectedRows.Count ==0)
            {
                Mensajes.MostrarMensaje("Debe seleccionar una Empresa Principal");
                bol_TodoCorrecto = false;
            }
            else if (ex_dgv_P_Empresa_CompartirDatos_2_Seleccion_Empresas_Comparten.SelectedRows == null ||//Ver si hay una Empresa para compartir marcada
                ex_dgv_P_Empresa_CompartirDatos_2_Seleccion_Empresas_Comparten.SelectedRows.Count == 0)
            {
                Mensajes.MostrarMensaje("Debe seleccionar una Empresa para compartir");
                bol_TodoCorrecto = false;
            }
            else if (ex_dgv_P_Empresa_CompartirDatos_3_Ficheros_Compartir.SelectedRows == null ||//Ver si hay Ficheros marcados
                ex_dgv_P_Empresa_CompartirDatos_3_Ficheros_Compartir.SelectedRows.Count == 0)
            {
                Mensajes.MostrarMensaje("Debe seleccionar un Fichero a compartir");
                bol_TodoCorrecto = false;
            }

            if (bol_TodoCorrecto)
            {
                //Obtener el idEmpresa Prioncipal
                long lng_idEmpresa_Seleccionada = long.Parse(ex_dgv_P_Empresa_CompartirDatos_1_Seleccion_EmpresaPrincipal.SelectedRows[0].Cells[0].Value.ToString());

                long lng_idEmpresa_A_Compartir = -1;
                GEN_Empresas_CompartirDatos mdl_GEN_Empresas_CompartirDatos = null;
                foreach (DataGridViewRow dgvr_Ficheros_Seleccionados in ex_dgv_P_Empresa_CompartirDatos_3_Ficheros_Compartir.SelectedRows)
                {
                    lng_idEmpresa_A_Compartir = long.Parse(ex_dgv_P_Empresa_CompartirDatos_2_Seleccion_Empresas_Comparten.SelectedRows[0].Cells[0].Value.ToString());
                    //Comprobar para el fichero actual existe la empresa relacionada como principal
                    mdl_GEN_Empresas_CompartirDatos = g_obj_controladora.g_lst_GEN_Empresas_CompartirDatos.Where(m => m.tabla.Equals(ex_dgv_P_Empresa_CompartirDatos_3_Ficheros_Compartir.Rows[dgvr_Ficheros_Seleccionados.Index].Cells[1].Value.ToString()) && m.idEmpresa1.Equals(lng_idEmpresa_A_Compartir)).FirstOrDefault();
                    if (mdl_GEN_Empresas_CompartirDatos == null)
                    {
                        //Comprobar para el fichero actual existe la empresa relacionada como relacionada
                        mdl_GEN_Empresas_CompartirDatos = g_obj_controladora.g_lst_GEN_Empresas_CompartirDatos.Where(m => m.tabla.Equals(ex_dgv_P_Empresa_CompartirDatos_3_Ficheros_Compartir.Rows[dgvr_Ficheros_Seleccionados.Index].Cells[1].Value.ToString()) && m.idEmpresa2.Equals(lng_idEmpresa_A_Compartir)).FirstOrDefault();
                        if (mdl_GEN_Empresas_CompartirDatos == null)
                        {
                            mdl_GEN_Empresas_CompartirDatos = new GEN_Empresas_CompartirDatos();
                            mdl_GEN_Empresas_CompartirDatos.id = -1;
                            mdl_GEN_Empresas_CompartirDatos.idEmpresa1 = lng_idEmpresa_Seleccionada;
                            mdl_GEN_Empresas_CompartirDatos.idEmpresa2 = lng_idEmpresa_A_Compartir;
                            mdl_GEN_Empresas_CompartirDatos.tabla = ex_dgv_P_Empresa_CompartirDatos_3_Ficheros_Compartir.Rows[dgvr_Ficheros_Seleccionados.Index].Cells[1].Value.ToString();

                            //Añadir al Listado
                            g_obj_controladora.g_lst_GEN_Empresas_CompartirDatos.Add(mdl_GEN_Empresas_CompartirDatos);
                        }
                    }
                }

                //Quitar la seleccion de los DataGridView
                ex_dgv_P_Empresa_CompartirDatos_2_Seleccion_Empresas_Comparten.ClearSelection();
                ex_dgv_P_Empresa_CompartirDatos_3_Ficheros_Compartir.ClearSelection();

                //Quitar tabs
                ex_tbc_P_Empresa_CompartirDatos.TabPages.Clear();

                Empresa_Principal_Seleccionada();
            }
        }

        private Exferia_DataGridView Crear_DataGridView_Ficheros(string _str_NombreFichero,long _lng_IdEmpresa1,long _lng_IdEmpresa2)
        {
            Exferia_DataGridView dgv_Ficheros_Insertados = new Exferia_DataGridView();

            dgv_Ficheros_Insertados.AllowUserToAddRows = false;
            dgv_Ficheros_Insertados.AllowUserToDeleteRows = false;
            dgv_Ficheros_Insertados.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
            dgv_Ficheros_Insertados.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
            dgv_Ficheros_Insertados.EnableHeadersVisualStyles = false;
            dgv_Ficheros_Insertados.Location = new System.Drawing.Point(5, 5);
            dgv_Ficheros_Insertados.Name = "dgv_Tablas_Insertar";
            dgv_Ficheros_Insertados.RowHeadersVisible = false;
            dgv_Ficheros_Insertados.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
            dgv_Ficheros_Insertados.Size = new System.Drawing.Size(ex_tbc_P_Empresa_CompartirDatos.TabPages[_str_NombreFichero].Width - 20, ex_tbc_P_Empresa_CompartirDatos.TabPages[_str_NombreFichero].Height - 20);
            dgv_Ficheros_Insertados.TabIndex = 2;
            dgv_Ficheros_Insertados.Anchor = (AnchorStyles.Bottom | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Left);
            dgv_Ficheros_Insertados.CellMouseDown += new System.Windows.Forms.DataGridViewCellMouseEventHandler(dgv_Ficheros_Insertados_CellMouseDown);

            //Añadir Columnas
            dgv_Ficheros_Insertados.Columns.Add("idEmpresa1", "idEmpresa1");
            dgv_Ficheros_Insertados.Columns["idEmpresa1"].Visible = false;

            dgv_Ficheros_Insertados.Columns.Add("idEmpresa2", "idEmpresa2");
            dgv_Ficheros_Insertados.Columns["idEmpresa2"].Visible = false;

            dgv_Ficheros_Insertados.Columns.Add("nombreFichero_Interno", "nombreFichero_Interno");
            dgv_Ficheros_Insertados.Columns["nombreFichero_Interno"].Visible = false;

            dgv_Ficheros_Insertados.Columns.Add("nombreFichero", "Fichero");
            dgv_Ficheros_Insertados.Columns["nombreFichero"].Width = 300;

            dgv_Ficheros_Insertados.Columns.Add("EmpresaPrincipal", "Empresa Principal");
            dgv_Ficheros_Insertados.Columns["EmpresaPrincipal"].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells;

            DataGridViewButtonColumn dgvbc_Borrar = new DataGridViewButtonColumn();
            dgvbc_Borrar.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None;
            dgvbc_Borrar.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
            dgvbc_Borrar.HeaderText = "";
            dgvbc_Borrar.Name = "Borrar";
            dgvbc_Borrar.Resizable = System.Windows.Forms.DataGridViewTriState.True;
            dgvbc_Borrar.Text = "Borrar";
            dgvbc_Borrar.Width = 55;
            dgv_Ficheros_Insertados.Columns.Add(dgvbc_Borrar);

            //Añadir lineas
            foreach (GEN_Empresas_CompartirDatos mdl_GEN_Empresas_CompartirDatos in g_obj_controladora.g_lst_GEN_Empresas_CompartirDatos.Where(m => (m.idEmpresa1.Equals(_lng_IdEmpresa1) && m.idEmpresa2.Equals(_lng_IdEmpresa2)) || (m.idEmpresa1.Equals(_lng_IdEmpresa2) && m.idEmpresa2.Equals(_lng_IdEmpresa1))).OrderBy(m => m.tabla).ToList())
            {
                dgv_Ficheros_Insertados.Rows.Add(g_obj_controladora.Transformar_Modelo_A_Row_FicherosRealacionados_Empresa(mdl_GEN_Empresas_CompartirDatos, dgv_Ficheros_Insertados));
            }

            return dgv_Ficheros_Insertados;
        }
        private void dgv_Ficheros_Insertados_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.RowIndex > -1)
            {
                //Borrar Linea
                if (e.ColumnIndex == 5)
                {
                    //Preguntar si se desea borrar primero
                    if (Mensajes.MostrarMensaje_Pregunta(Mensajes.G_STR_MENSAJES_GENERAL_PREGUNTA_BORRAR()))
                    {
                        //Borro la linea del datagridview
                        DataGridViewRow row = ((Exferia_DataGridView)sender).Rows[e.RowIndex];
                        if (row != null)
                        {
                            //Borro el Restro del listado de Memoria
                            g_obj_controladora.g_lst_GEN_Empresas_CompartirDatos.Remove(g_obj_controladora.g_lst_GEN_Empresas_CompartirDatos.Where(m => m.tabla.Equals(row.Cells[2].Value.ToString()) &&
                                                                                                                                                                ((m.idEmpresa1.Equals(long.Parse(row.Cells[0].Value.ToString())) && m.idEmpresa2.Equals(long.Parse(row.Cells[1].Value.ToString()))) ||
                                                                                                                                                                (m.idEmpresa1.Equals(long.Parse(row.Cells[1].Value.ToString())) && m.idEmpresa2.Equals(long.Parse(row.Cells[0].Value.ToString()))))).FirstOrDefault());



                            ((Exferia_DataGridView)sender).Rows.Remove(row);
                        }
                    }
                }
            }
        }

        private void ex_btn_P_Empresa_CompartirDatos_Grabar_Click(object sender, EventArgs e)
        {
            Grabar();
        }
        private void Grabar()
        {
            if(Datos_Generales.Permisos_Comprobar(Variables.G_STR_OPCION_GEN_EMPRESA_COMPARTIRDATO, g_lst_INTERNO_Permisos_Modelo, (int)G_ENUM_PERMISOS.Modificar, true))
            {
                g_obj_controladora.GrabarDatos();
            }
        }
        #endregion

        #region DataGridView 1 Empresa Principal
        private void ex_dgv_P_Empresa_CompartirDatos_1_Seleccion_Empresa_Principal_SelectionChanged(object sender, EventArgs e)
        {
            //Quitar la Seleccion del DataGridView ........................................
            ex_dgv_P_Empresa_CompartirDatos_2_Seleccion_Empresas_Comparten.ClearSelection();
            ex_dgv_P_Empresa_CompartirDatos_3_Ficheros_Compartir.ClearSelection();
            //..........................................................................

            //Quitar las tabpages .......................................................
            ex_tbc_P_Empresa_CompartirDatos.TabPages.Clear();
            //...........................................................................

            Empresa_Principal_Seleccionada();
            
        }
        private void Empresa_Principal_Seleccionada()
        {
            if (g_obj_controladora.g_lst_INTERNO_GEN_Empresas_CompartirDatos_Modelo.Count>0)
            {
                if (ex_dgv_P_Empresa_CompartirDatos_1_Seleccion_EmpresaPrincipal.SelectedRows.Count > 0)
                {
                    long lng_idEmpresa_Seleccionada = long.Parse(ex_dgv_P_Empresa_CompartirDatos_1_Seleccion_EmpresaPrincipal.SelectedRows[0].Cells[0].Value.ToString());

                    var var_Coleccion = g_obj_controladora.g_lst_GEN_Empresas_CompartirDatos
                                                            .Where(m => m.idEmpresa1.Equals(lng_idEmpresa_Seleccionada) || m.idEmpresa2.Equals(lng_idEmpresa_Seleccionada))
                                                            .GroupBy(m => new { m.idEmpresa1, m.idEmpresa2 })
                                                            .Select(m => new { m.Key.idEmpresa1, m.Key.idEmpresa2 })
                                                            .ToList();

                    if (var_Coleccion != null)
                    {
                        foreach (var var_registro in var_Coleccion.OrderBy(m=> m.idEmpresa2))
                        {
                            DataGridViewRow obj_DataGridViewRow = null;
                            if (var_registro.idEmpresa1.Equals(lng_idEmpresa_Seleccionada))
                            {
                                obj_DataGridViewRow= ex_dgv_P_Empresa_CompartirDatos_2_Seleccion_Empresas_Comparten.Rows
                                                       .Cast<DataGridViewRow>()
                                                       .Where(r => long.Parse(r.Cells[0].Value.ToString()).Equals(var_registro.idEmpresa2)).FirstOrDefault();
                            }
                            else if (var_registro.idEmpresa2.Equals(lng_idEmpresa_Seleccionada))
                            {
                                obj_DataGridViewRow = ex_dgv_P_Empresa_CompartirDatos_2_Seleccion_Empresas_Comparten.Rows
                                                       .Cast<DataGridViewRow>()
                                                       .Where(r => long.Parse(r.Cells[0].Value.ToString()).Equals(var_registro.idEmpresa1)).FirstOrDefault();
                            }

                            //Encontro la Fila
                            if (obj_DataGridViewRow != null)
                            {
                                //La selecciono
                                ex_dgv_P_Empresa_CompartirDatos_2_Seleccion_Empresas_Comparten.Rows[obj_DataGridViewRow.Index].Selected = true;

                                //Busco el Nombre de la Empresa Realacionada
                                string str_NombreEmpresa = ex_dgv_P_Empresa_CompartirDatos_2_Seleccion_Empresas_Comparten.Rows[obj_DataGridViewRow.Index].Cells[2].Value.ToString();

                                //Añado un Tab
                                ex_tbc_P_Empresa_CompartirDatos.TabPages.Add(str_NombreEmpresa, str_NombreEmpresa);

                                //Añadir al tab Insertado el datagridview de los ficheros relacionados
                                ex_tbc_P_Empresa_CompartirDatos.TabPages[str_NombreEmpresa].Controls.Add(Crear_DataGridView_Ficheros(str_NombreEmpresa, var_registro.idEmpresa1, var_registro.idEmpresa2));
                            }
                        }
                    }
                }
            }
        }
        #endregion

        #region Datagridview 2 Empresa Comparten
        private void ex_dgv_P_Empresa_CompartirDatos_2_Seleccion_Empresas_Comparten_SelectionChenged(object sender, EventArgs e)
        {
            if (ex_dgv_P_Empresa_CompartirDatos_1_Seleccion_EmpresaPrincipal.SelectedRows.Count > 0)
            {
                long lng_idEmpresa_Seleccionada = long.Parse(ex_dgv_P_Empresa_CompartirDatos_1_Seleccion_EmpresaPrincipal.SelectedRows[0].Cells[0].Value.ToString());

                if (ex_dgv_P_Empresa_CompartirDatos_2_Seleccion_Empresas_Comparten.CurrentCell != null && long.Parse(ex_dgv_P_Empresa_CompartirDatos_2_Seleccion_Empresas_Comparten.Rows[ex_dgv_P_Empresa_CompartirDatos_2_Seleccion_Empresas_Comparten.CurrentCell.RowIndex].Cells[0].Value.ToString()) == lng_idEmpresa_Seleccionada)
                {
                    ex_dgv_P_Empresa_CompartirDatos_2_Seleccion_Empresas_Comparten.CurrentCell = null;
                }
            }
        }
        #endregion

        #region Teclas de acceso rapido

        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            // Salir sin Seleccionar
            if (keyData == Keys.F10)
            {
                Salir_P_Base();
                return true;
            }
            // Grabar
            else if (keyData == Keys.F2)
            {
                Grabar();
                return true;
            }       
            return base.ProcessCmdKey(ref msg, keyData);
        }

        #endregion

        //Organiza los controles cuando se cambia el tamaño de la pantalla  ################
        private void P_Empresa_CompartirDatos_SizeChanged(object sender, EventArgs e)
        {
            Organizar_Pantalla();
        }

        private void Organizar_Pantalla()
        {
            int int_Margenes = 25;
            int int_Ancho_EntreGrid = 80;
            int int_Ancho_DataGridViews = (((this.Width - int_Ancho_EntreGrid) - (int_Margenes * 2)) - 10) / 3;
            int int_Posicion_Y_Botones = (this.Height / 3);

            ex_dgv_P_Empresa_CompartirDatos_1_Seleccion_EmpresaPrincipal.Location = new Point(int_Margenes, ex_dgv_P_Empresa_CompartirDatos_1_Seleccion_EmpresaPrincipal.Location.Y);
            ex_dgv_P_Empresa_CompartirDatos_1_Seleccion_EmpresaPrincipal.Size = new Size(int_Ancho_DataGridViews + 65, ex_dgv_P_Empresa_CompartirDatos_1_Seleccion_EmpresaPrincipal.Size.Height);
            ex_lbl_P_Empresa_CompartirDatos_1_Seleccion.Location = new Point(int_Margenes, ex_dgv_P_Empresa_CompartirDatos_1_Seleccion_EmpresaPrincipal.Location.Y - 17);

            ex_dgv_P_Empresa_CompartirDatos_2_Seleccion_Empresas_Comparten.Location = new Point(ex_dgv_P_Empresa_CompartirDatos_1_Seleccion_EmpresaPrincipal.Location.X + ex_dgv_P_Empresa_CompartirDatos_1_Seleccion_EmpresaPrincipal.Width + 10, ex_dgv_P_Empresa_CompartirDatos_2_Seleccion_Empresas_Comparten.Location.Y);
            ex_dgv_P_Empresa_CompartirDatos_2_Seleccion_Empresas_Comparten.Size = new Size(int_Ancho_DataGridViews + 65, ex_dgv_P_Empresa_CompartirDatos_1_Seleccion_EmpresaPrincipal.Size.Height);
            ex_lbl_P_Empresa_CompartirDatos_2_Seleccion.Location = new Point(ex_dgv_P_Empresa_CompartirDatos_1_Seleccion_EmpresaPrincipal.Location.X + ex_dgv_P_Empresa_CompartirDatos_1_Seleccion_EmpresaPrincipal.Width + 10, ex_dgv_P_Empresa_CompartirDatos_2_Seleccion_Empresas_Comparten.Location.Y - 17);

            ex_dgv_P_Empresa_CompartirDatos_3_Ficheros_Compartir.Location = new Point(ex_dgv_P_Empresa_CompartirDatos_2_Seleccion_Empresas_Comparten.Location.X + ex_dgv_P_Empresa_CompartirDatos_2_Seleccion_Empresas_Comparten.Width + 10, ex_dgv_P_Empresa_CompartirDatos_3_Ficheros_Compartir.Location.Y);
            ex_dgv_P_Empresa_CompartirDatos_3_Ficheros_Compartir.Size = new Size(int_Ancho_DataGridViews - 85, ex_dgv_P_Empresa_CompartirDatos_1_Seleccion_EmpresaPrincipal.Size.Height);
            ex_lbl_P_Empresa_CompartirDatos_3_Ficheros.Location = new Point(ex_dgv_P_Empresa_CompartirDatos_2_Seleccion_Empresas_Comparten.Location.X + ex_dgv_P_Empresa_CompartirDatos_2_Seleccion_Empresas_Comparten.Width + 10, ex_dgv_P_Empresa_CompartirDatos_3_Ficheros_Compartir.Location.Y - 17);

            ex_lbl_P_Empresa_CompartirDatos_Ficheros_Compartidos.Location = new Point(int_Margenes, ex_tbc_P_Empresa_CompartirDatos.Location.Y - 17);
        }
        // #################################################################################
    }
}
