Newsgroup: it.comp.lang.visual-basic
Titolo: Eventi "Mouse on"

Ciao a tutti.
Vorrei sapere se con i controlli label, image e picture è possibile
catturare gli eventi che scattano quando il mouse è sopra il controllo e
quando esce fuori (senza focus).
Mi piacerebbe emulare i link del Web e le immagini di roll-over su una form.
Grazie per l'attenzione.

 quando esce fuori (senza focus).
In mancanza di altri suggerimenti, cerca sul sito comune la classe (di
Zanna?) per subclassare la form: mi sembra di ricordare che nel progetto di
esempio c'e' quello che cerchi...
Ciao,
Luciano

 wrote in message
5l1_6.8974$6x.4...@news.infostrada.it...

Tutti i controlli (quasi) hanno l'evento MouseMove, che si verifica
al passaggio del mouse.
Purtroppo non esiste un'evento MouseOut (o simile) per sapere
quando il mouse 'esce' dal controllo.
Per ovviare, sfrutta il MouseMove del form che contiene i controlli.
CIAO!

 ha scritto nel messaggio
news:5l1_6.8974$6x.4...@news.infostrada.it...


 Per ovviare, sfrutta il MouseMove del form che contiene i controlli.
Buona idea, ma potrebbero esserci dei problemi quando il controllo da
cui esci si trova proprio al bordo della form.
EMG

 Mi piacerebbe emulare i link del Web e le immagini di roll-over su una form.
C'è appositamente l'evento MouseMove. Associato ad un timer (per capire
quando sei fuori dal controllo) potrebbe risolverti il problema.
EMG

Mi piacerebbe emulare i link del Web e le immagini di roll-over su una
form.
Nessuna classe/controllo/trucco/inganno.
Bastano poche rige nella MouseMove() di ciascun controllo.
Ecco il codice di un form di esempio, fai un bel copia-incolla su un form
nuovo.
'-----------------------------------------------------------
'
' Esempio di come gestire gli eventi MouseEnter/MouseExit
'
' [FAQ] it.comp.lang.visual-basic
'
'-----------------------------------------------------------
' Autore: Fabio Zanetta (Zanna)
'-----------------------------------------------------------
'
' (1) Copiare il seguente codice in un form vuoto.
' (2) Aggiungere uno o piů controlli Command1 (un array)
' (3) Aggiungere un controllo Picture1
' (4) Aggiungere una ListBox List1
'
'-----------------------------------------------------------
Option Explicit
Private Declare Function GetCapture Lib "user32" () As Long
Private Declare Function SetCapture Lib "user32" (ByVal hwnd As Long) As
Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
Function MouseOver(Ctrl As Control, ByVal X As Single, ByVal Y As Single) As
Long
    ' Restituisce
    ' -1 : esce
    '  0 : dentro
    '  1 : entra
    If (GetCapture <> Ctrl.hwnd) Then
        Call SetCapture(Ctrl.hwnd)
        MouseOver = 1
    Else
        If ((X < 0 Or X > Ctrl.Width) Or (Y < 0 Or Y > Ctrl.Height)) Then
            Call ReleaseCapture
            MouseOver = -1
        Else
            MouseOver = 0
        End If
    End If
End Function
Private Sub Command1_MouseMove(Index As Integer, Button As Integer, Shift As
Integer, X As Single, Y As Single)
    Select Case (MouseOver(Command1(Index), X, Y))
    Case -1
        List1.AddItem "Uscito da Command1(" & Index & ")", 0
    Case 1
        List1.AddItem "Entrato in Command1(" & Index & ")", 0
    Case Else
        List1.AddItem "Dentro Command1(" & Index & ")", 0
    End Select
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
    Select Case (MouseOver(Picture1, X, Y))
    Case -1
        List1.AddItem "Uscito da Picture1", 0
    Case 1
        List1.AddItem "Entrato in Picture1", 0
    Case Else
        List1.AddItem "Dentro Picture1", 0
    End Select
End Sub