You are on page 1of 22

Control Tabstrip – Referencia

- Descripción
Un control TabStrip es como los separadores de un cuaderno o las etiquetas de un
grupo de carpetas de archivo.
Mediante este se pueden definir varias páginas para la misma área de una ventana o
cuadro de diálogo en su aplicación.
El control consiste en uno o más objetos Tab de una colección Tabs . Tanto en tiempo
de diseño como en tiempo de ejecución puede cambiar la apariencia del objeto Tab
estableciendo propiedades.

También puede agregar y quitar fichas utilizando la Página de propiedades del control
TabStrip en tiempo de diseño o bien agregar y quitar objetos Tab en tiempo de
ejecución mediante métodos.
Este control no es un contenedor como el sstab . Para contener las páginas reales y
sus objetos, debe usar controles Frame u otro tipo de contenedores que coincidan con
el tamaño del área interna compartida por todos los objetos Tab del control. Si usa
una matriz de controles para el contenedor, puede asociar cada elemento de la matriz
con un objeto Tab específico, como en el siguiente ejemplo:

Option Explicit
Private mintCurFrame As Integer ' Marco activo visible
Private Sub Form_Load()
mintCurFrame = TabStrip1.SelectedItem.Index
End Sub
Private Sub Tabstrip1_Click()
If TabStrip1.SelectedItem.Index = mintCurFrame Then
Exit Sub ' No necesita cambiar el marco.
End If
' Oculte el marco antiguo y muestre el nuevo.
Frame1(TabStrip1.SelectedItem.Index).Visible = True
Frame1(mintCurFrame).Visible = False
' Establece mintCurFrame al nuevo valor.
mintCurFrame = TabStrip1.SelectedItem.Index
End Sub
Descargar

Nota Cuando agrupe controles en un contenedor, es mejor usar mostrar u ocultar en
vez de usar el método Zorder para traer al frente un marco de objeto. Por otra parte,
los controles que tengan asociadas teclas de acceso (ALT + tecla de acceso) aún
responderán a los comandos de teclado, aunque el contenedor no sea el control más
alto. Observe también que debe separar los grupos de los controles OptionButton
para ubicar cada grupo en su propio contenedor, o por el contrario todos los controles
OptionButtons del formulario se comportarán como un gran grupo de controles
OptionButtons .
Sugerencia Utilice un control Frame con su BorderStyle establecido a None como
el contenedor, en lugar de un control PictureBox . Un control Frame consume menos
recursos que un control PictureBox .
Nota para la distribución
El control TabStrip forma parte de un grupo de
controles personalizados que se encuentran en el archivo MSCOMCTL.OCX. Para usarlo
en su aplicación, debe agregar el archivo MSCOMCTL.OCX al proyecto. Cuando

. Item ( índice ) La sintaxis de la colección Tabs consta de las siguientes partes: Parte tabstrip índice En tiempo de diseño.OCX en el directorio SYSTEM de Microsoft Windows del usuario.distribuya su aplicación. añade cuatro tabs en tiempo de ejecución y luego visualiza mediante un MsgBox la cantidad Dim i As Integer TabStrip1. use los botones Insertar ficha y Quitar ficha de la ficha Fichas de la Página de propiedades para agregar y quitar objetos Tab de la colección Tabs . puede asociar un control ImageList con el control TabStrip y después usar imágenes en fichas individuales.Add . Por ejemplo lo siguiente . Tabs . También puede asociar una información sobre herramientas con cada objeto Tab . "Ficha " & i Next .Tabs. La colección Tabs utiliza la propiedad Count para devolver el número de fichas de la colección.Tabs. Sintaxis tabstrip . Tabs ( índice ) tabstrip . Tabs (Colección) La propiedad Tabs del control TabStrip es la colección de todos los objetos Tab . instale el archivo MSCOMCTL.Clear For i = 1 To 3 TabStrip1. Por ejemplo. Cada objeto Tab tiene propiedades asociadas con su estado y apariencia actuales. Una colección Tabs contiene un conjunto de objetos Tab .

Count Para manipular los objetos Tab de la colección Tabs .Tabs. Ejemplo de esto último Descargar El objeto Tab Un objeto Tab representa una ficha individual de la colección Tabs Comentarios . utilice estos métodos en tiempo de ejecución:  Add : agrega objetos Tab al control TabStrip .  Item : recupera el objeto Tab identificado por su Key o Index de la colección.  Clear : quita todos los objetos Tab de la colección.MsgBox "Cantidad de tabs : " & TabStrip1.  Remove : quita el objeto Tab identificado mediante su Key o Index de la colección.

determina si la ficha con indice 2 está seleccionada If TabStrip1.Selected = True En tiempo de diseño. vbInformation End If Lo siguiente lo que hace es seleccionar una ficha mediante código. Image . al presionar un CommandButton.Selected = True Then MsgBox "SI Está seleccionada". También puede especificar estas propiedades en tiempo de ejecución.Tabs(4).Para cada objeto Tab puede emplear varias propiedades con el fin de especificar su apariencia y también puede especificar su estado con la propiedad Selected . Lo siguiente . y utilice los cuadros de texto para especificar cualquiera de estas propiedades para un objeto Tab : Caption . usando la propiedad Selected y colocandola en true En este caso selecciona el tab con indice 4 TabStrip1. ToolTipText . . Tag . vbInformation Else MsgBox "NO Está seleccionada". Index o Key .Tabs(2). use los botones Insertar ficha y Quitar ficha de la ficha Fichas en la Página de propiedades del control TabStrip para insertar y quitar fichas.

escriba el texto que desee mostrar en la ficha o en el botón en tiempo de ejecución. en el cuadro de texto Título en la Página de propiedades .Caption = "Un Texto" Esto otro.Tabs(1). para etiquetar o poner un icono en una ficha. cambia en tiempo de ejecución . el caption de la ficha 1 TabStrip1.Tabs(1). Por ejemplo lo siguiente.Image = 3 Ejemplo para enlazarlo a un control imageList en tiempo de ejecución  Para usar la propiedad Caption .Use las propiedades Caption e Image . establece en tiempo de ejecución . la imagen de la ficha 3 ( La imagen está ubicada en el imagelist ) TabStrip1. . por separado o juntas.

Cada objeto Tab también tiene propiedades de sólo lectura que puede usar para hacer referencia a un único objeto Tab de la colección Tabs : Left . Top . use la propiedad Selected . dándole a cada uno de ellos un número de índice y una clave opcional. Para devolver una referencia a un objeto Tab que un usuario ha seleccionado. imagen ) La sintaxis del método Add consta de las siguientes partes: . Sintaxis objeto. active la casilla de verificación ShowTips en la ficha General y después escriba la cadena de información sobre herramientas en el cuadro de texto ToolTipText . ponga un control ImageList en el formulario y llene la colección ListImages con objetos ListImage . Para establecer la propiedad ToolTipText en tiempo de diseño. Estas propiedades son útiles junto con el evento BeforeClick para comprobar o grabar datos asociados con la ficha seleccionada actualmente antes de mostrar la siguiente ficha seleccionada por el usuario. escriba el número de índice del objeto ListImage que debe aparecer en el objeto Tab . Use la propiedad ToolTipText para mostrar temporalmente una cadena de texto en un pequeño cuadro rectangular en tiempo de ejecución cuando el cursor del usuario se posa sobre la ficha. En el cuadro de texto Image de la ficha Fichas . En la ficha General de la Página de propiedades. colección Tabs) Agrega un objeto Tab a una colección Tabs en un control TabStrip . seleccione ese ImageList para asociarlo con el control TabStrip . Add( índice. clave. use la propiedad SelectedItem . Height y Width . Para usar la propiedad Image . Add (Método. título. para determinar si una ficha específica se ha seleccionado.

Tabs.Add 3. El control ImageList proporciona las imágenes para los objetos Tab . "Fecha" TabStrip1. como la segunda ficha (su índice es 2).Image = X Next X End Sub . Private Sub Form_Load() Dim X As Integer Set TabStrip1.Tabs(X). . Set X = TabStrip1. el siguiente código agrega una ficha con el título "Hola" y cuya clave es "MiFicha". "Correo" For X = 1 To TabStrip1. . a un control TabStrip ."MiFicha".Count TabStrip1. Pegue el siguiente código en el evento Load del objeto Form y ejecute el programa. Para probar este ejemplo. Para agregar fichas en tiempo de ejecución .Tabs.ImageList = ImageList1 TabStrip1.Tabs.Add 2. utilice el método Add . que devuelve una referencia al objeto Tab recién insertado."Hola") Ejemplo del método Add (Colección Tabs) Este ejemplo agrega tres objetos Tab . Por ejemplo.Caption = "Hora" TabStrip1.Add(2.Tabs. cada uno con títulos e imágenes de un control ImageList . ponga un control ImageList y un control TabStrip en un formulario.Tabs(1).Parte objeto índice clave título imagen Comentarios Para agregar fichas en tiempo de diseño . haga clic en el botón Insertar ficha de la ficha Fichas de la Página de propiedades del control TabStrip y complete los campos apropiados para la nueva ficha.

use código como el siguiente para establecer la propiedad MultiRow : . Si MultiRow es False y la última ficha excede el ancho del control.Propiedades Propiedad MultiRow Devuelve o establece un valor que indica si un control TabStrip puede mostrar más de una fila de fichas. En tiempo de ejecución . se agregará un control numérico horizontal en el extremo derecho En tiempo de diseño . sitúe la propiedad MultiRow en la ficha General de la Página de propiedades . El número de filas puede cambiar si el control cambia de tamaño. El número de filas se establece automáticamente según el ancho y el número de fichas. lo que asegura que la ficha se ajusta a la siguiente fila.

. Se establece de manera determinada como el alto de la fuente. mas unos pocos píxeles extra que hacen de borde. como queda especificado en la propiedad Font.MultiRow = TRUE de fichas en el control TabStrip. el ancho de cada objeto Tab sigue siendo igual tanto si se agregan como si se eliminan objetos Tab en el control. este valor no tiene ningún efecto. Todas las fichas tienen un ancho idéntico que se determina por la propiedad TabFixedWidth . cada ficha es lo suficientemente ancha como para dar cabida a su contenido y. Cada ficha es lo suficientemente ancha como para dar cabida a su contenido. o si sólo hay una fila de fichas. o el alto del objeto ListImage especificado por la propiedad Image.  tabFixed : Fijo. el ancho de cada ficha se incrementa de manera que cada fila ocupa el ancho del control. TabFixedWidth Devuelven o establecen el alto y el ancho fijo de todos los objetos Tab . Las filas no se justifican. pero sólo si la propiedad TabWidthStyle está establecida a tabFixed .' Permite más de una fila TabStrip1. Si la propiedad TabWidthStyle está establecida a tabFixed y el valor de la propiedad TabFixedWidth está establecido. lo que sea mayor. Si la propiedad MultiRow es False.TabFixedHeight. por lo que terminan de manera irregular. La propiedad TabFixedHeight se aplica a todos los objetos Tab del control TabStrip . Propiedad TabWidthStyle Propiedad que Devuelve o establece un valor que determina la justificación o ancho de todos los objetos Tab Los valores válidos para TabWidthStyle son  tabJustified : (Predeterminado) Justificado. si es necesario. Si la propiedad MultiRow es True. Propiedades .  tabNonJustified : No justificado.

cuando pone un control TabStrip en un formulario.MultiRow = True TabStrip1. esa área existe. fichas o botones. La sintaxis de la propiedad Style consta de las siguiente partes: Los valores válidos para valor son:  TabTabs : (Predeterminado) Fichas.TabWidthStyle = tabJustified ' Crea filas de fichas desiguales. Aunque el valor tabButtons de la propiedad Style no muestra ningún borde alrededor del área interna. de un control TabStrip . tiene un separador de carpeta. En tiempo de diseño. Sintaxis objeto.TabWidthStyle = tabNonJustified ' Establece el mismo ancho para todas las fichas.TabWidthStyle = tabFixed Propiedad Style Devuelve o establece la apariencia. Si elige el valor tabTabs para la propiedad Style . Las fichas aparecen como separadores de cuadernos tridimensional alrededor. TabStrip1. y el área interna tiene un borde . Style [ = valor ] La propiedad Style determina si el control tiene la apariencia de un botón de comando (Buttons) o de un separador de carpeta (Tabs).TabFixedWidth = 500 TabStrip1. TabStrip1. habrá un borde alrededor del área interna del control TabStrip .Ejemplo para establecer la propiedad en tiempo de ejecución: ' Justifica todas las fichas de una fila para ajustarlas ' al ancho del control.MultiRow = True TabStrip1. TabStrip1.

TabStrip1. Las fichas aparecen como botones de comando normales y el área interna no tiene borde alrededor. TabStrip1. TabButtons : Botones. Para cambiar en tiempo de diseño la propiedad Style.Style = tabButtons Propiedad Separators . hacerlo desde la página de propiedades.Style = tabTabs ' Propiedad Style establecida a Buttons. Las fichas no seleccionadas aparecen lisas. y en tiempo de ejecución por ejemplo ' Propiedad Style establecida a Tabs.  TabFlatButtons : Botones lisos. La ficha seleccionada aparece como hundida en el fondo.

la propiedad Style debe tener el valor tabButton o tabFlatButton . Establecer el argumento cancel a True le permite detener un cambio a la nueva selección. . Sintaxis Private Sub objeto _BeforeClick( Cancel As Integer) La sintaxis del evento BeforeClick consta de las siguientes partes: Comentarios Use el evento BeforeClick para validar la información del objeto Tab antiguo antes de generar realmente un evento Click que seleccione el nuevo objeto Tab . Sintaxis objeto . Nota Establecer el argumento cancel a True evita que el enfoque cambie a otra ficha pero no detendrá el evento Click. Separators [ = booleano ] Importante : Para mostrar los separadores.Devuelve o establece un valor que determina si se dibujan separadores entre los botones de un control TabStrip que tenga los estilos tabButton o tabFlatButton . Eventos principales BeforeClick (Evento) Se genera cuando se hace clic en un objeto Tab de un control TabStrip o cuando el valor Selected de un objeto Tab ha cambiado.

Nota Si usa las funciones MsgBox o InputBox durante el procedimiento de evento BeforeClick.Caption = "Cancelar cambio de ficha" ' Alinea los marcos con el área interna ' del control Tabstrip.Caption = "Casilla" ' Agrega una segunda ficha con "Texto" como título. En el primer control Frame . el control TabStrip no recibirá un evento Click. ponga un control TabStrip y una matriz de controles Frame de dos elementos en el formulario (establezca la propiedad BorderStyle a None ).ClientLeft Frame1(i).Add(2. Private Sub Form_Load() Dim i As Integer Dim Tabx As Object ' Establece el título de la primera ficha como "Casilla" TabStrip1.Top = TabStrip1. Check1.Left = TabStrip1. cualquiera que sea el valor del argumento cancel.Tabs(1). agregue un TextBox . For i = 0 To 1 Frame1(i).Tabs. Frame1(0).ZOrder 0 End Sub ' El evento BeforeClick comprueba el valor de la casilla .Width = TabStrip1. Esto es útil cuando desea comprobar información en la ficha actual antes de mostrar la ficha recién seleccionada. agregue un control CheckBox y en el segundo. Pegue el siguiente código en el evento Load del objeto Form y ejecute el programa. "Texto") ' Etiqueta la casilla de verificación.ClientTop Frame1(i). .Height = TabStrip1. Ejemplo Este ejemplo usa el evento BeforeClick para demostrar cómo evitar que un usuario cambie a otra ficha.ClientWidth Next ' Pone arriba el contenedor de marco ' de la primera ficha. Set Tabx = TabStrip1. Para probar este ejemplo.ClientHeight Frame1(i). Haga clic en la ficha titulada Texto después de activar o desactivar el CheckBox en la ficha titulada Casilla.

Private Sub TabStrip1_BeforeClick(Cancel As Integer) If TabStrip1.Value = 1 Then Cancel = True End If End Sub Private Sub TabStrip1_Click() Frame1(TabStrip1.Enlaces relacionados  Crear Formulario Mdi con fichas  Código fuente de un Navegador web con pestañas  Xtabs .ZOrder 0 End Sub Evento Click evento que se desencadena al hacer clic en un objeto Tab o al cambiar la propiedad Value de la ficha.SelectedItem. muestra el captio de la ficha seleccionada Private Sub TabStrip1_Click() MsgBox TabStrip1. al hacer click en un tab.Index-1).Caption End Sub vb 6.SelectedItem. Por ejemplo lo siguiente . Se usa para comprobar parámetros antes de que se genere el evento Click.Selected Then If Check1.Usercontrol .' de verificación para determinar si se continúa con el ' evento Click.0 .Tabs(1).

dll Dll para usar Mdi con fichas o tabs y un ejemplo para hacerlo mediante un TabStrip Este componente activex creado por VbAccelerator .usa un Tabstrip  Cargar tablas de una base de datos y visualizarlas en un TabStrip 179 . La url del enlace es : MDITabs Full Source Code .Mdi con fichas Contenido:  Mediante la Dll Activex  Con el TabStrip  Relacionados Dll vbalMDITabs. permite utilizar aplicaciones con interfaces MDI y los formularios hijos cargarlos mediante fichas o tabs Desde la web de Vb Accelerator. Formulario para filtrar registros . hay un ejemplo bien completo para usar el componente.

Attach Me. usar el método Attach. y luego cargar los formularios si se desea Por ejemplo : Private Sub MDIForm_Load() ' nueva instancia del componente Set m_cMDITabs = New cMDITabs ' lo inicia m_cMDITabs.Show ' refresca m_cMDITabs.hWnd ' carga 4 formularios Form1.Show Form2.dll ) Descargar Descripción básica del componente : Para poder iniciar el componente .Show Form4. se debe en el Form Load del Mdi .Show Form3.ForceRefresh End Sub Nota: es necesario ejecutar el método ForceRefresh para que los tabs se visualicen correctamente cada ves que se cargue un form . y que los formularios child se carguen.En este otro enlace un ejemplo mas resumido : ( Registrar previamente en el sistema el archivo dll activex que se encuentran en el directorio : vbalMDITabs.

CloseWindow : Cuando se cierra un Form Nota : Todos estos eventos.ShowTabs .. tienen como principal parámetro el Hwnd del formulario en el cual se está interactuando.ShowTabs = Not m_cMDITabs. es decir una referencia a ese Formulario. Propiedad BorderStyle con el valor 2 4. deben tener las siguientes propiedades para que los Tabs se visualicen correctamente con los formularios maximizados 1. hay una simple función de ajuste ( que en el ejemplo se llama " formForHwnd " ) que devuelve un objeto Form . Propiedad MdiChild en true 2. Propiedad ControlBox en False 3.Importante : Los formularios hijos . WindowChanged : cuando se cambia la ventana 3. Por eso para poder manipular el form a partir del Hwnd. se puede alinear las fichas ( arriba o abajo ) con la propiedad TabAlign entre otras opciones . . La propiedad MaxButton NO debe estar en False Eventos La dll Tiene tres eventos principales ( Declararla siempre con WithEvents ) 1. También se puede ocultar y mostrar los tabs en tiempo de ejecución mediante la propiedad ShowTabs : m_cMDITabs. TabClick : Se dispara cuando se hace clic en una ficha 2.

para cargar los formularios se debe crear una instancia para cada form . lo que hace es iniciar todo. Esta se ejecuta una ves sola en la carga del mdi : por ejemplo : Private Sub MDIForm_Load() ' nueva instancia de la clase para el MDI Set ObjMdi = New clsMDI ' le pasa el Mdi y el TabStrip que está en el Picture1 Call ObjMdi.Mdi con fichas usando un control TabStrip Este ejemplo usa un control TabStrip que se ubica dentro de un control Picturebox que está en un Mdi. (Ya que el TabStrip no se puede colocar directamente por que no posee la propiedad Align) Para crear las fichas y poder asociarlas a los formularios. Form2 y Form3 primero se declaran las tres variables en la zona de declaraciones del Mdi . y a esta clase se le debe indicar el nombre del Mdi que se está usando y el nombre del TabStrip. se usan dos módulos de clase : clsMdi y clsFichas El clsMdi. el segundo es la instancia de la clase Mdi .Iniciar(Me. .El primero es el nombre del formulario . que tiene tres parámetros . y el tercero es un valor opcional para la imagen que debe estar cargada en un control ImageList. TabStrip1) End Sub Luego de haber iniciado esta clase. por ejemplo si voy a cargar tres mdi child llamados Form1. o en la zona de declaraciones del propio form: Option Dim ObjForm1 Dim ObjForm2 Dim ObjForm3 As New clsFicha As As New New Explict clsFicha clsFicha Luego se ejecuta el método CargarForm.

0 : Nota: si se usa esta versión . ObjMdi. ya se crea automáticamente la ficha y se asocia al form que se indicó anteriormente . ObjMdi. solo con Tabs y ButtonTabs y algunas propiedades menos que la vesión 6. ObjForm3. Vista previa del ejemplo usando la versión del tabstrip que viene con el Windows Common controls 5.CargarForm(Frm2. ObjForm2. inclusive forzando con la propiedad Refresh . "icono3") "icono1") "icono2") Al hacer esto. Además.0 : Con la propiedad Style en tabFlatButtons . en esta versión no cuenta con la propiedad FlatTabs. ObjMdi.ObjForm1.0 Con el TabStrip del Windows Common controls 6.CargarForm(Frm2. a mi me dió error al cambiar en tiempo de ejecución la propiedad Style y las fichas no se repintan bien.CargarForm(frm1.

El style en TabButtons Con el Style en tabTabs ( el default ) y alineado en la parte inferior : .

y NO con el Show del Formulario. " La imagen del imageList ") Además asegurarse que los forms a usar como Child deben tener la propiedad MdiChild en True. y luego se quiere volver a cargarlo. ObjForm1. por lo tanto no aseguro que esté completamente libre de errores. se debe volver a realizar como se explicó antes. pero no lo llegué a probar a fondo.Nota : el ejemplo lo probé mientras lo hice. es decir con el método Cargarform.CargarForm(ElForm. cuando se descarga un formulario. ObjMdi. . Otra cosa importante. además por supuesto se puede optimizar mucho el código.