Sección de controles Ocx para Visual basic , Dll , Activex
<Volver> - Anterior - Siguiente
Contenido:
Este control está muy bueno y permite usar en nuestras aplicaciones formularios flotantes y acoplables , como los que utiliza por ejemplo el propio visual basic en el IDE y muchas otras aplicaciones similares.
Vista previa de un formulario Mdi con tres formularios acoplados y un form normal o fijo ( el del medio )
El ocx, no tiene interfaz gráfica, y para hacer el docking se realiza mediante código , es decir en tiempo de ejecución
Si bien en el código fuente para descargar, hice un ejemplo bien simple (el de la imagen ), para crear tres formularios flotantes, a continuación detallo las principales propiedades, eventos y métodos para poder usarlo
Antes que nada, obviamente hay que agregar el ocx al proyecto. Luego se debe añadir una instancia del control, por ejemplo si lo vamos a utilizar en un formulario Mdi, agregamos una en el mismo ( no es necesario agregar el ocx en todos los forms, solo el formulario principal , es decir en el contenedor )
El control tiene un método llamado "GrabMain". A este método le debemos indicar el Hwnd del formulario que será de contenedor, en este caso siguiendo el ejemplo, es el formulario Mdi, por lo tanto debemos ejecutar en el FormLoad:
TTabDock1.GrabMain Me.hWnd
Luego, por ejemplo para agregar un formulario acoplable y que se cree un panel , se debe usar el método AddForm. Por ejemplo si quiero agregar un formulario llamado Form1 , seria :
TTabDock1.AddForm Form1, tdDocked, tdAlignLeft, "Form1"
Los parámetros principales son el primero , el tercero y el cuarto. El primer parámetro es el nombre del form, el tercero indica la alineación ( Izquierda, derecha , arriba o abajo ), y el cuarto es un Key o clave para ese formulario, para después poder hacer referencia a este form mediante dicha Key, por ejemplo para descargarlo, ocultarlo, removerlo y establecerle propiedades y demás
Pero al hacer lo anterior, el formulario todavia no aparece, es decir le indica al control que estamos agregando uno, pero para poder hacerlo visible , debemos ejecutar el método FormShow, indicándole la clave
TTabDock1.FormShow "Form1"
Si luego queremos ocultarlo, usamos el método contrario a FormShow, que se llama FormHide , Ej .
TTabDock1.FormHide "Form1"
Para agregar mas formularios y paneles , realizar el mismo paso anterior para los que queramos añadir
Nota importante: Los formularios que se van a usar como flotantes o acoplables, no deben poseer la propiedad MdiChild en True , por que si no se produce un error en tiempo de ejecución
Otra cosa, el último parámetro del método AddFom, es opcional , si no se indica ningún valor, el formulario que se agrega, se acopla al panel dependiendo de la alineación que le demos (arriba, abajo , derecha iquierda definida en el tercer parámetro ). Pero también tiene una opción para hacer que el formulario sea flotante, es decir que no esté acoplado o con Docking . En este caso se debe usar el valor tdDockFloat
Si en algún momento se quiere eliminar el formulario flotante o acoplable, y que sea un form normal, es decir quitar el Docking, se puede usar el método FormUndock, indicándole como parámetro, la clave de ese form , por ejemplo
TTabDock1.FormUndock "Form1"
Para volver a hacer el Docking a ese formulario , usar el método contrario que se llama Formdock, Ej.
TTabDock1.Formdock "Form1"
Para saber los formularios que se han agregado , podemos usar la colección DockedForms en un bucle :
( Esto visualiza el Key )
Dim i As Integer For i = 1 To TTabDock1.DockedForms.Count MsgBox TTabDock1.DockedForms(i).Key, vbInformation Next
El control tiene algunas propiedades, por ejemplo para establecer el borde de estilo de los paneles, el color de fondo, una propiedad llamada Resizable, que indica si el panel se podrá redimensionar o no, propiedad Width y Height para poder establecer el ancho y alto de los paneles , propiedad Persistant que indica si al descargar la aplicación , la disposición y tamaño de los mismos se mantiene , es decir recuerda la configuración
Ejemplos :
Esto establece el fondo de todos los paneles en color blanco
TTabDock1.BackColor = vbWhite
Esto le establece el estilo del borde en Raised a todos los paneles cargados:
TTabDock1.BorderStyle = bdrRaised
La siguiente linea , hace que se recuerde la ubicación y tamaño de los paneles al descargar el programa
TTabDock1.Persistant = True
Para poder acceder a las propiedades , pero de un panel en particular, se puede hacer mediante la colección Panel del objeto DockedForms
Lo siguiente, cambia el color de fondo del panel que tiene como clave "Form1"
TTabDock1.DockedForms.item("Form1").Panel.BackColor = vbBlue
Esto otro , establece el panel con vlave "Form1", en la parte inferior, y le establece un alto de 2500 Twips
TTabDock1.DockedForms.item("Form1").Panel.Align
= tdAlignBottom
TTabDock1.DockedForms.item("Form1").Panel.Height = 2500
Esto otro, hace que un panel en particualr no se pueda redimensionar mediante el mouse :
TTabDock1.DockedForms.item("Form1").Panel.Resizable = False
Si queremos averiguar si un Panel se encuentra visible :
MsgBox TTabDock1.DockedForms.item("Form1").Panel.Visible
Para poder establecer el ancho y alto de un panel, debemos hacerlo accediendo a las propiedades Width y Height de la colección Panel del objeto DockedForms
Acá establecemos en 1500 Twips para el ancho del panel, que se llama "Form1"
TTabDock1.DockedForms.item("Form1").Panel.Width = 1500
Nota: Si el panel está puesto en forma horizonal, no se puede modificar la propiedad Width, y al contrario, si el panel está colocado en forma vertical, no se puede establecer la propiedad Height, ya que si no dará error. Por ejemplo , en la imagen de arriba, el panel izquierdo, si ejecutamos esta línea en tiempo de ejecución para cambiarle el alto, se producirá un error
TTabDock1.DockedForms.item("Form1").Panel.Height = 1000
por lo tanto , como el panel está ubicado en forma vertical. solo se podrá establecer el ancho.
Esto no daria error, y le cambiaría el ancho correctamente con un valor de 250 pixeles
TTabDock1.DockedForms("Form1").Panel.Width = (250 * Screen.TwipsPerPixelX)
También tiene 8 eventos que permiten saber cuando por ejemplo se redimensiona un panel, cuando se hace clic en el caption de un form, cuando se hace Docking, cuando se elimina , cuando se oculta.
Por ejemplo al ocultar un formulario o mostrarlo con los métodos Formshow y FormHide, se dispara el evento TTabDock1_FormShow y TTabDock1_FormHide respectivamente
Evento FormHide
Private Sub TTabDock1_FormHide(ByVal DockedForm As TabDock.TDockForm)
y para acceder al formulario , podemos consultar la variable de objeto DockedForm del parámetro del evento, por ejemplo en un Select case.:
Private Sub TTabDock1_FormHide(ByVal DockedForm As TabDock.TDockForm) Select Case DockedForm.Key Case "Form1" ' .. código Case "Form2" ' .. código End Select End Sub
En el caso anterior, se consulta la clave o Key, para saber cual es el formulario que se ha ocultado .
El evento PanelResize , se dispara al redimensionar un panel. En este evento se puede consultar la variable panel para saber cual se está redimensionado . Por ejemplo lo siguiente, hace que el panel, con el Index 3, si se redimensiona mas allás de los 2500 Twips, anula el redimensionado:
Private Sub TTabDock1_PanelResize(ByVal Panel As TabDock.TTabDockHost) If Panel.Index = 3 Then If Panel.Width >= 2500 Then Panel.Width = 2500 End If End If End Sub
Nota: en total puede haber cuatro paneles, Un panel a la izquierda, otro a la derecha, otro arriba y otro abajo. Al panel superior , le corresponde como index el valor 1. Al inferior el 2, al izquierdo el 3, y al derecho el 4.
De esta manera podemos saber que panel se está manipulando:
Private Sub TTabDock1_PanelResize(ByVal Panel As TabDock.TTabDockHost)
' consulta el index del panel
Select Case Panel.Index
Case 1: MsgBox "superior", vbInformation
Case 2: MsgBox "inferior", vbInformation
Case 3: MsgBox "izquierdo", vbInformation
Case 4: MsgBox "derecho", vbInformation
End Select
End Sub
Nota: el control tiene un pequeño bug, y es que , es posible que al producirse un error en el programa, el control pierda la referencia activex en el proyecto, y luego si se quiere volver a ejecutar el programa, se muestra el tipico mensaje de visual basic "El componente Activex no puede crear el objeto". En ese caso, eliminar el ocx del formulario, guardar y cerrar el proyecto, volver a abrirlo y colocar una nueva instancia del control
Descarga ocx - Tab Dock Control
Desde este otro enlace, podés descargar el código fuente de este control, con un ejemplo muy completo de como utilizarlo
Descargar código fuente - Control ocx TabDock
Este es otro control gratuito para poder hacer docking.
El zip incluye un ejemplo como el que muestra la siguiente imagen, que contiene un formulario Mdi, y cuatro formulario acoplados.
A diferencia del anterior control , este necesita una instancia del ocx , en cada form que se hará docking. Y en el Form Mdi en el cual se acoplan , se debe agregar un control Picturebox para poder contener e incrustar al mismo
Ejemplo que muestra como hacer docking a un formulario para utilizarlo como Toolbar acoplable.
Permite acoplarlo en la parte inferior, superior, izquierda y derecha del formulario MDI principal
Nota. el programa utiliza subclasificación, por lo tanto asegurarse de que no se produzcan errores, ya que si no se cerrará el IDE de vb.
Tampoco cerrar el IDE con el Stop, hacerlo con el botón cerrar del formulario MDI principal
Buscar en Recursos vb con Google
Recursos visual basic - Buscar - Privacidad - Copyright © 2005 - 2009 - www.recursosvisualbasic.com.ar