Cursor sobre un label

Valen
05 de Septiembre del 2003
Buenas. Queria saber si se puede cambiar las propiedades de un label cuando el cursor este sobre dicho label. Mi intencion es:
Tengo un label en uno de mis formularios y mi intencion esque cada vez que el cursor este sobre este label que el cursor cambie de la flechita a la mano y por otro lado que tambien el label se subraye. Se puede hacer esto? Gracias de antemano y un saludo a todos.

sdemingo
05 de Septiembre del 2003
Hola, prueba así:

Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.FontUnderline = True
Screen.MouseIcon = LoadPicture("c:mano.ico")
Screen.MousePointer = vbCustom
End Sub

Como VB no tiene el icono de la mano como constante, debes cargarla tu con un loadpicture.

Al ejecutar el código verás que una vez que sales del label te quedas con el texto subrayado y con el icono que has puesto. Para que al salir del label desaparezcan estos cambios tendrás que controlar los parámetros que recibe la función MouseMove del label. En X y en Y tendrás el punto ( en pixels) sobre el cual se está moviendo el usuario con el ratón dentro del label. Deberás controlar la posición en pixels de tu label para saber cuando ha salido y cambierlo a su estado original.

Espero que te sirva.

Un saludo

sdemingo

Juan
05 de Septiembre del 2003
Lo de cambiar el cursor es bastante fácil, se puede hacer en diseño. Simplemente establece la propiedad
MousePointer a 99 - custom, y en la propiedad MouseIcon
asigna el icono que quieras.

Lo de subrayar el texto al pasar el ratón por encima
no es difícil, sólo tienes que poner algo así:

Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.Font.Underline = True
End Sub

Lo difícil es quitar el subrayado pues en VB no existe
el evento MouseOut. Se podría hacer con las funciones API:

Private Declare Function SetCapture Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function GetCapture Lib "user32" () As Long

Si se tratara de otro control ya que estas funciones
trabajan la propiedad Hwnd y el label no la tiene.