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 SubCó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;
}
}
}