Tooltip Dll[Objetos Tooltip]Fecha: 30/Jun/2005 (29-Junio-2005)
|
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 SubComo 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