Barra de Herramientas Flotante Fecha: 09/Abr/2005 (03/04/2005)
|
El siguiente artículo tiene la misión de mostrar como realizar una sencilla barra de Herramienta (ToolBar) flotante dentro de un formulario(WinForm).
Para el ejemplo se ha utilizado un Form (Form1), un ToolBar (ToolBar1) y un ImageList (imgImagenes) que se lo vinculó con la ToolBar para poder mostrar los botones de la misma con gráficos.
A continuación sigue código en Visual Basic:
Public Class Form1 Inherits System.Windows.Forms.Form #Region " Código generado por el Diseñador de Windows Forms " #End Region 'variable (Flag) usada para indicar que se mueve o no de lugar la Caja de Herramienta Private MoverToolBar As Boolean 'variable usada para guardar la posición inicial de la Caja de Herramienta antes de arrastrar Private MoverDesde As Point Private Sub ToolBar1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ToolBar1.MouseDown 'libera la barra para moverse MoverToolBar = True 'Guarda los valores X e Y del puntero del mouse dentro de la ToolBar MoverDesde = New Point(e.X, e.Y) 'Indica que el control ha sido capturado por el mouse ToolBar1.Capture = True End Sub Private Sub ToolBar1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ToolBar1.MouseMove If MoverToolBar Then 'Verifica si la barra se está arrastrando 'Verifica si la ToolBar esta anclada arriba If ToolBar1.Dock = DockStyle.Top Then 'Verifica si el puntero se a movido 20 pixeles (el valor puede ser cualquiera + 0) If MoverDesde.Y < (e.Y - 20) Then DesconectarBarra() End If Else 'Verifica si la ToolBar esta anclada a la izquierda If ToolBar1.Dock = DockStyle.Left Then 'Verifica si el puntero se a movido 20 pixeles (el valor puede ser cualquiera + 0) If MoverDesde.X < (e.X - 20) Then DesconectarBarra() End If Else 'Verifica si la ToolBar esta anclada abajo If ToolBar1.Dock = DockStyle.Bottom Then 'Verifica si el puntero se a movido 20 pixeles (el valor puede ser cualquiera + 0) If MoverDesde.Y > (e.Y + 20) Then DesconectarBarra() End If Else 'Verifica si la ToolBar esta anclada a la derecha If ToolBar1.Dock = DockStyle.Right Then 'Verifica si el puntero se a movido 20 pixeles (el valor puede ser cualquiera + 0) If MoverDesde.X > (e.X + 20) Then DesconectarBarra() End If Else 'Verifica si la ToolBar no está anclada en ningún lado If ToolBar1.Dock = DockStyle.None Then ToolBar1.Left = e.X + ToolBar1.Left - MoverDesde.X ToolBar1.Top = e.Y + ToolBar1.Top - MoverDesde.Y 'Verifica la distancia que está del borde(el valor puede ser cualquiera + 0) If ToolBar1.Top < 6 Then MoverToolBar = False 'Anclar ToolBar arriba ToolBar1.Dock = DockStyle.Top ElseIf ToolBar1.Left < 6 Then MoverToolBar = False 'Anclar ToolBar a la izquierda ToolBar1.Dock = DockStyle.Left Else If (Me.Width - (ToolBar1.Left + ToolBar1.Width + 5)) < 6 Then MoverToolBar = False 'Anclar ToolBar a la derecha ToolBar1.Dock = DockStyle.Right Else If (Me.Height - ((ToolBar1.Height * 2) + ToolBar1.Top)) < 6 Then MoverToolBar = False 'Anclar ToolBar abajo ToolBar1.Dock = DockStyle.Bottom End If End If End If End If End If End If End If End If End If End Sub Private Sub ToolBar1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ToolBar1.MouseUp 'la barra no puede moverse MoverToolBar = False 'Indica que el control ha sido liberado por el mouse ToolBar1.Capture = False End Sub Private Sub ToolBar1_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles ToolBar1.ButtonClick ' Acá se define la función que ejecutará cada botón ' En este ejemplo soló programo el botón salir If e.Button Is Me.tbbSalir Then Me.Close() End If End Sub Private Sub DesconectarBarra() 'la barra no puede moverse MoverToolBar = False 'se asigna a la ToolBar el valor para que no este anclada a ningún lado ToolBar1.Dock = DockStyle.None ' se le asigna los valores X e Y donde se situará la barra (el valor 20, puede ser cambiado por cualquier otro) ToolBar1.Location = New Point(20, 20) ' se le asigna los valores Width y Heigth de la barra (los valores pueden ser cualquiera) ToolBar1.Size = New Size(150, 100) End Sub End Class
Espero que el artículo les haya sido útil, si es así por favor colabora conmigo votando por este artículo en PanoramaBox. Gracias.
Fichero con el código de ejemplo: creyes_ToolBarFlotante.zip - 11 KB