Tooltip Dll

[Objetos Tooltip]

Fecha: 30/Jun/2005 (29-Junio-2005)
Autor: Ewing Morales ([email protected])

 


Esta vez solo quiero publicar la adecuación de dos programillas para la creación de Tooltips que cayeron en mis manos gracias a un amigo que me pidió ayuda para hacerlos mas accesibles. Fue por eso que con el objetivo de facilitar la creación de tooltips combine la esencia de ambos códigos fusionándolos en una sola Librería de Windows (DLL): dllGlobos.

Ahora para definir los tooltips que les sean necesarios solamente tienen que insertar en su proyecto la referencia y el imports correspondiente a la DLL de la siguiente manera:

No voy a describir ni poner en este artículo el código completo de la DLL. Lo que si voy a hacer es tratar de ejemplificar con una aplicación las posibilidades de creación de tooltips de la misma.


La aplicación de ejemplo

Dado que la definición de las clases de los objetos Tooltip se encuentra en una DLL independiente, ustedes pueden hacer uso de ella sin importar el lenguaje de programación para Windows en el que estén trabajando.

Básicamente pueden crear dos tipos de objetos Tooltip diferentes:

El objeto globoTooltip: al cual lo pueden asociar con un control, pudiendo hacerse esta asociación en el momento de carga de la aplicación o hacerla sobre la ejecución de alguno de sus eventos (ejemplo OnClick). No hace falta mencionar que este objeto es el que produce los tooltips personalizados (en color y fuente) y los tooltips normales, dejando en claro que hay que asociar un control (puede ser cualquier objeto con un handler) a este tooltip para que funcione como lo esperamos.

El objeto globoShell: este objeto antes que nada permite mostrar o quitar un icono en la barra de tareas para alguno de los formularios que se estén usando en la aplicación, además, permite mostrar principalmente alguno de los tipos de notificación definidos por default por Windows (información, advertencia o error).

A continuación les muestro la ventana de la aplicación de ejemplo y el código de la misma.

<STAThread()> _
Public Shared Sub Main()
    Application.EnableVisualStyles()
    Application.DoEvents()
    Application.Run(New Form1)
End Sub

Dim toolTip As New globoTooltip
Dim tooltipColor As New globoTooltip
Dim globoIcono As New globoShell

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    tooltipColor.Style = globoTooltip.ttStyleEnum.TTBalloon
    tooltipColor.Icon = globoTooltip.ttIconType.TTIconInfo
    tooltipColor.Title = "Informacion"
    tooltipColor.TipFont = Label1.Font
    tooltipColor.TipText = "Tooltip con color cuando Mouse Over"
    tooltipColor.PopupOnDemand = False
    tooltipColor.ForeColor = RGB(Color.White.R, Color.White.G, Color.White.B)
    tooltipColor.BackColor = RGB(Color.Firebrick.R, Color.Firebrick.G, Color.Firebrick.B)
    tooltipColor.VisibleTime = 5000
    tooltipColor.CreateToolTip(Label1.Handle.ToInt32)
End Sub

Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
    tooltipColor.Destroy()
    toolTip.Destroy()
End Sub

Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
    toolTip.Style = globoTooltip.ttStyleEnum.TTBalloon
    toolTip.Centered = False
    toolTip.Icon = globoTooltip.ttIconType.TTIconError
    toolTip.Title = "Titulo del Globo"
    toolTip.TipText = "Globo mostrado cuando el Click..."
    toolTip.PopupOnDemand = False
    toolTip.CreateToolTip(Button1.Handle.ToInt32)
    toolTip.Show(0, 0, Button1.Handle.ToInt32)
End Sub

Private Sub Ej01_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Ej01.MouseEnter
    toolTip.Style = globoTooltip.ttStyleEnum.TTBalloon
    toolTip.Centered = True
    toolTip.Icon = globoTooltip.ttIconType.TTIconError
    toolTip.Title = "Titulo del Tooltip"
    toolTip.TipText = "Tooltip centrado y " + _
    Environment.NewLine + "mostrado con metodo show..."
    toolTip.PopupOnDemand = False
    toolTip.CreateToolTip(sender.Handle.ToInt32)
    toolTip.Show(0, 0, sender.Handle.ToInt32)
End Sub

Private Sub Ej02_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Ej02.MouseEnter
    toolTip.Style = globoTooltip.ttStyleEnum.TTStandard
    toolTip.Centered = True
    toolTip.Icon = globoTooltip.ttIconType.TTIconInfo
    toolTip.Title = "Titulo del Tooltip"
    toolTip.TipText = "Tooltip con delay para mostrarse y" + _
    Environment.NewLine + " tiempo de visibilidad..."
    toolTip.PopupOnDemand = False
    toolTip.VisibleTime = 2000
    toolTip.DelayTime = 500
    toolTip.CreateToolTip(sender.Handle.ToInt32)
End Sub

Private Sub Ej03_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Ej03.MouseEnter
    toolTip.Style = globoTooltip.ttStyleEnum.TTBalloon
    toolTip.Icon = globoTooltip.ttIconType.TTNoIcon
    toolTip.Centered = False
    toolTip.Title = "Titulo del Tooltip"
    toolTip.TipText = "Tooltip con popuponDemand, sin icono (no multiline) y " + _
    Environment.NewLine + "respetando coordenadas donde se muestra"
        toolTip.PopupOnDemand = True
        toolTip.CreateToolTip(sender.Handle.ToInt32)
        toolTip.Show(10, 10, sender.Handle.ToInt32)
    End Sub

    Private Sub Button1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseLeave, _
    Ej01.MouseLeave, Ej02.MouseLeave, Ej03.MouseLeave
        toolTip.Destroy()
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        globoIcono.AddIcon(Me)
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        globoIcono.RemoveIcon(Me)
    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        globoIcono.INotification("Esta es una notificacion")
    End Sub

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        globoIcono.WNotification("Este es un Warning")
    End Sub

    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
        globoIcono.ENotification("Este es un error")
    End Sub

Como pueden ver, el código es demasiado sencillo y traté de presentar los usos más comunes de los tooltips sobre cada uno de los diferentes controles de la aplicación de ejemplo. Así que no queda más que decirles que hagan sus propias pruebas y verifiquen los resultados que obtengan, y como siempre, si les surge alguna duda diríjanlas a mi correo.

Hasta la próxima entrega.


Espacios de nombres usados en el código de este artículo:

Para la aplicación:

dllGlobos

Para la DLL:

System.Drawing
System.Runtime.InteropServices


Fichero con el código de ejemplo: ewing_dll_tooltips.zip - 147 KB


ir al índice