Sección de controles Ocx para Visual basic , Dll , Activex

179 - Mdi con fichas

<Volver> - Anterior - Siguiente



 

 

Contenido:

 

 

 

 

 


Dll vbalMDITabs.dll

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 )

Descargar

 

Descripción básica del componente :

 

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

  1. Propiedad MdiChild en true
  2. Propiedad ControlBox en False
  3. Propiedad BorderStyle con el valor 2
  4. La propiedad MaxButton NO debe estar en False

 

Eventos

La dll Tiene tres eventos principales ( Declararla siempre con WithEvents )

  1. TabClick : Se dispara cuando se hace clic en una ficha
  2. WindowChanged : cuando se cambia la ventana
  3. CloseWindow : Cuando se cierra un Form

 

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 .

 


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, 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 .

 

Vista previa del ejemplo usando la versión del tabstrip que viene con el Windows Common controls 5.0 :

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.

 

Descargar


Recursos vb.net - temas relacionados

 

 


Buscar en Recursos vb con Google