En este ejemplo veremos como, partiendo de un determinado panel, dividir el espacio en dos para asignar el control original en el nuevo que crearemos.
Esto es especialmente útil si, por ejemplo, necesitamos añadir un filtro a un grid ya existente o añadir algún tipo de sumatorio o control.
Código VB6:
Para el siguiente ejemplo se parte que existe un panel llamado "PanelOriginal" y un grid dentro con el nombre de "GridOriginal". Creará un panel nuevo con dos botones (Bot1 y Bot2) y colocará "GridOriginal" en la parte de abajo.
Si deseamos dividir el split en vertical en lugar de horizontal deberemos usar el código "2" en la adición del mismo (en el Panes.Add), pudiendo tomar cada uno de los siguientes valores:
lSplit.Panes.Add lSplit.Panes(0).Name, 0 ' Top - Creará el nuevo panel en la parte de arriba lSplit.Panes.Add lSplit.Panes(0).Name, 1 ' Bottom - Creará el nuevo panel en la parte de abajo lSplit.Panes.Add lSplit.Panes(0).Name, 2 ' Left - Creará el nuevo panel en la parte de la izquierda lSplit.Panes.Add lSplit.Panes(0).Name, 3 ' Right - Creará el nuevo panel en la parte de la derecha
Sub Show() gForm.Controls("GridOriginal").ActivarScripts = True ' Recuperamos el panel original que contiene el grid Set lPnl = gForm.Controls("PanelOriginal") ' Creamos un splitter en el panel original Set lSplit = gForm.Controls.Add("SSSplitter.SSSplitter.4","Pers_Splitter", lPnl) With lSplit .AutoSize = 1 ''''''''Fill container .Borderstyle = 1 ''''''''None .SplitterResizeStyle = 1 '''''''' proportional .SplitterBarAppearance = 1 '''''''' Borderless .visible = True End With ' Creamos dos paneles nuevos Set Panel1 = gForm.Controls.Add("AhoraOCX.CntPanel", "Pers_Panel1") Panel1.Visible = True Set Panel2 = gForm.Controls.Add("AhoraOCX.CntPanel", "Pers_Panel2") Panel2.Visible = True ' Creamos dos botones en uno de los paneles nuevos Set lBot1 = gForm.Controls.Add("AhoraOCX.cntBotonera", "Pers_Bot1",Panel1) With lBot1 .ActivarScripts = True .SeguridadObjeto = 0 .BotonesMantenimiento = 0 .Visible = True .BotonAdd "","Pers_Bot1_A","",0,False,465 .HabilitaBotones End With Set lBot2 = gForm.Controls.Add("AhoraOCX.cntBotonera", "Pers_Bot2",Panel1) With lBot2 .ActivarScripts = True .SeguridadObjeto = 0 .BotonesMantenimiento = 0 .Visible = True .BotonAdd "","Pers_Bot2_A","",0,False,466 .Top = lBot1.Top + lBot1.height .HabilitaBotones End With ' Asignamos el grid original en el segundo panel que hemos creado Set gForm.Controls("GridOriginal").Container = Panel2 ' Añadimos un panel nuevo lSplit.Panes.Add lSplit.Panes(0).Name, 0 ' Por último asignamos los paneles a las diferentes ventanas del splitter lSplit.Panes(0).Control = Panel1 lSplit.Panes(1).Control = Panel2 End Sub
Código C#:
Para el siguiente ejemplo se parte que existe un panel llamado "panMain" y un grid dentro con el nombre de "GridOriginal". Creará un panel nuevo con dos botones (Bot1 y Bot2) y colocará "GridOriginal" en la parte de abajo.
using AhoraSistema; using AhoraOCX; using AhoraCore; using static AhoraCore.VBA.Interaction; using System.Windows.Forms; namespace AhoraScriptsPantalla { public class AhoraScripts_Pers_Generico : AhoraOCX.AhoraBaseScript { // Dentro de un frmGenerico añado el siguiente código: public void Show() { ICntPanel panelPadre = (ICntPanel)gForm.Controls["panMain"]; panelPadre.ResizeEnabled = true; panelPadre.ResizeInterior = true; ICntGridUsuario lGrid = (ICntGridUsuario)gForm.Controls.Add("AhoraOCX.CntGridUsuario", "GridOriginal", panelPadre ); lGrid.Caption = "GridOriginal"; ICntPanel lPnl = (ICntPanel)gForm.Controls["panMain"]; ICntSplitter lSplit = (ICntSplitter)gForm.Controls.Add("SSSplitter.SSSplitter.4", "Pers_Splitter", lPnl); lSplit.Visible = true; ICntPanel Panel1 = (ICntPanel)gForm.Controls.Add("AhoraOCX.CntPanel", "Pers_Panel1"); Panel1.Visible = true; ICntPanel Panel2 = (ICntPanel)gForm.Controls.Add("AhoraOCX.CntPanel", "Pers_Panel2"); Panel2.Visible = true; ICntBotonera lBot1 = (ICntBotonera)gForm.Controls.Add("AhoraOCX.CntBotonera", "Pers_Bot1", Panel1); lBot1.ActivarScripts = true; lBot1.SeguridadObjeto = 0; lBot1.BotonesMantenimiento = EBotonesMant.eBotMant_Ninguno; lBot1.Visible = true; lBot1.BotonAdd("", "Pers_Bot1_A", "", ETipo_Menu.eTipo_Menu_Boton, false, 465); lBot1.HabilitaBotones(); ICntBotonera lBot2 = (ICntBotonera)gForm.Controls.Add("AhoraOCX.CntBotonera", "Pers_Bot2", Panel1); lBot2.ActivarScripts = true; lBot2.SeguridadObjeto = 0; lBot2.BotonesMantenimiento = EBotonesMant.eBotMant_Ninguno; lBot2.Visible = true; lBot2.BotonAdd("", "Pers_Bot2_A", "", ETipo_Menu.eTipo_Menu_Boton, false, 466); lBot2.Top = lBot2.Top + lBot2.Height; lBot2.HabilitaBotones(); gForm.Controls["GridOriginal"].Parent = (Control)Panel2; // Rellenamos los paneles del control lSplit directamente sobre el control CntSplitter (lSplit as CntSplitter).Panel1.Control = Panel1; (lSplit as CntSplitter).Panel2.Control = Panel2; (lSplit as Control).Dock = DockStyle.Fill; // SplitterPosition determina la posición inicial del separador en función de la orientación del control. // No usar dentro del evento Initialize y se establece el tamaño incorrectamente lSplit.SplitterPosition = 50; } } }
¿Le ha sido útil este artículo?
¡Qué bien!
Gracias por sus comentarios
¡Sentimos mucho no haber sido de ayuda!
Gracias por sus comentarios
Sus comentarios se han enviado
Agradecemos su esfuerzo e intentaremos corregir el artículo