Sección de controles Ocx para Visual basic , Dll , Activex
<Volver> - Anterior - Siguiente
Contenido:
Dll para usar Mdi con fichas o tabs y un ejemplo para hacerlo mediante un TabStrip
Este componente activex creado por VbAccelerator , permite utilizar aplicaciones con interfaces MDI y los formularios hijos cargarlos mediante fichas o tabs
Desde la web de Vb Accelerator, hay un ejemplo bien completo para usar el componente. La url del enlace es : MDITabs Full Source Code
En este otro enlace un ejemplo mas resumido : ( Registrar previamente en el sistema el archivo dll activex que se encuentran en el directorio : vbalMDITabs.dll )
Para poder iniciar el componente , y que los formularios child se carguen, se debe en el Form Load del Mdi , 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.Attach Me.hWnd ' carga 4 formularios Form1.Show Form4.Show Form3.Show Form2.Show ' refresca m_cMDITabs.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
Importante : Los formularios hijos , deben tener las siguientes propiedades para que los Tabs se visualicen correctamente con los formularios maximizados
La dll Tiene tres eventos principales ( Declararla siempre con WithEvents )
Nota : Todos estos eventos, tienen como principal parámetro el Hwnd del formulario en el cual se está interactuando. Por eso para poder manipular el form a partir del Hwnd, hay una simple función de ajuste ( que en el ejemplo se llama " formForHwnd " ) que devuelve un objeto Form , es decir una referencia a ese Formulario.
También se puede ocultar y mostrar los tabs en tiempo de ejecución mediante la propiedad ShowTabs :
m_cMDITabs.ShowTabs = Not m_cMDITabs.ShowTabs
.. se puede alinear las fichas ( arriba o abajo ) con la propiedad TabAlign entre otras opciones .
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, se usan dos módulos de clase : clsMdi y clsFichas
El clsMdi, lo que hace es iniciar todo, y a esta clase se le debe indicar el nombre del Mdi que se está usando y el nombre del TabStrip. 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.Iniciar(Me, TabStrip1) End Sub
Luego de haber iniciado esta clase, para cargar los formularios se debe crear una instancia para cada form , por ejemplo si voy a cargar tres mdi child llamados Form1, Form2 y Form3 primero se declaran las tres variables en la zona de declaraciones del Mdi , o en la zona de declaraciones del propio form:
Option Explict
Dim ObjForm1 As New clsFicha
Dim ObjForm2 As New clsFicha
Dim ObjForm3 As New clsFicha
Luego se ejecuta el método CargarForm, que tiene tres parámetros .El primero es el nombre del formulario , el segundo es la instancia de la clase Mdi , y el tercero es un valor opcional para la imagen que debe estar cargada en un control ImageList.
ObjForm1.CargarForm(frm1, ObjMdi, "icono1")
ObjForm2.CargarForm(Frm2, ObjMdi, "icono2")
ObjForm3.CargarForm(Frm2, ObjMdi, "icono3")
Al hacer esto, ya se crea automáticamente la ficha y se asocia al form que se indicó anteriormente .
Nota: si se usa esta versión , a mi me dió error al cambiar en tiempo de ejecución la propiedad Style y las fichas no se repintan bien, inclusive forzando con la propiedad Refresh . Además, en esta versión no cuenta con la propiedad FlatTabs, solo con Tabs y ButtonTabs y algunas propiedades menos que la vesión 6.0
Con el TabStrip del Windows Common controls 6.0 :
Con la propiedad Style en tabFlatButtons
El style en TabButtons
Con el Style en tabTabs ( el default ) y alineado en la parte inferior :
Nota : el ejemplo lo probé mientras lo hice, pero no lo llegué a probar a fondo, por lo tanto no aseguro que esté completamente libre de errores, además por supuesto se puede optimizar mucho el código.
Otra cosa importante, cuando se descarga un formulario, y luego se quiere volver a cargarlo, se debe volver a realizar como se explicó antes, es decir con el método Cargarform, y NO con el Show del Formulario.
ObjForm1.CargarForm(ElForm, ObjMdi, " La imagen del imageList ")
Además asegurarse que los forms a usar como Child deben tener la propiedad MdiChild en True.
Buscar en Recursos vb con Google
Recursos visual basic - Buscar - Privacidad - Copyright © 2005 - 2009 - www.recursosvisualbasic.com.ar