Newsgroup: it.comp.lang.visual-basic
Titolo: colore label col passaggio del mouse

Ciao raga, ho un problema, vorrei sapere se esiste un metodo semplice e
veloce per far in modo che delle Label (a me fungono da collegamenti
ipertestuali) al passaggio del mouse cambino colore esattamente come i
collegamenti ipertestuali delle pagine WEB.
Grazie in anticipo...


vedi evento MouseMove e proprietą ForeColor della label
ciaociao


grazie, ma volevo evitare 2000 volte ForeColor ecc...


fatti una matrice di label e scrivi una sola volta... ;-)
ciaociao


ma devo comunque cambiare sempre l'indice no????


no.
L'indice è un parametro dell'evento, quindi basta che scrivi
label1(Index).ForeColor=vbRed
e sei a posto
ciaociao


grazie ora provo e poi ti faccio sapere...


avevi ragione e funziona :)))) solo ltro problem, non ci sta un modo per
dirgli che quando mi sposto dalla stessa deve turnare nera???
tanks


gestisci l'evento del contenitore delle label (form, frame o quello che
usi...)
ciaociao

 ha scritto

sintetizzando le risposte di marg... :)
-- 
hth, ciao, j.
http://www.sundaysw.com
 > sw > code > ctrl_appear


grazie 1000...ottimo suggerimento.


ti hanno già risposto correttamente, però ripristinando il colore 
originale sull'onmove del container devi stare attento e muoverti 
pianino: se sposti velocemente il mouse al di fuori dell'area del 
container o adirittura del form, tale evento non viene generato.
Io faccio così:
in risposta all'evento mouse_move del controllo (*):
Select Case MouseOver(nomecontrollo, x, y)
    Case OnLeave
        'ciao sono uscito
    Case OnEnter
        'ciao, sono appena arrivato: che c'è di nuovo?
    Case OnMove
        'ciao, sto qua...
End Select
La funzione MouseOver è così definita:
Private Function MouseOver(ByVal ctl As Control, ByVal x As Single, ByVal 
y As Single) As OnEvent
    If GetCapture <> ctl.hwnd Then
        Call SetCapture(ctl.hwnd)
        MouseOver = OnEnter
    Else
        If ((x < 0 Or x > ctl.Width) Or (y < 0 Or y > ctl.Height)) Then
            Call ReleaseCapture
            MouseOver = OnLeave
        Else
            MouseOver = OnMove
        End If
    End If
End Function
dove OnEvent è un enum:
Private Enum OnEvent
    OnLeave
    OnMove
    OnEnter
End Enum
Le dichiarazioni delle funzioni le trovi nel visualizzatore API.
(*) ho scritto controllo e non label, poiché questo codice non lo puoi 
usare direttamente con le label: per "catturare" gli input del mouse hai 
bisogno dell'handle del controllo e le label ne sono sprovviste.
Quindi potresti includere le label in una picture e gestire il mouse_move 
della picture.
E' un pochino più laborioso ma è l'unico modo per evitarti quel problema 
con i "topi corridori"...
HTH.
Ciao,
Moreno
Inviato da 
www.mynewsgate.net


ringrazio anche te, ma con il post di javalab, ho risolto...
tanks e alla prossima..

 con i "topi corridori"...
Okkio che così perdi però l'eventuale tooltip associato al controllo (almeno
sui sistemi NT, su 9x non ho provato).
Conviene farlo fare a Windows questo "sporco" lavoro (subclass e
_TrackMouseEvent). ;-)
Byee

 _TrackMouseEvent). ;-)
pofferbacco, non ho mai provato...
mmm... appena ho 5 min ci do un occhio.
