Newsgroup: it.comp.appl.access
Titolo: Evento Mouseover e mouseout.

Buongiorno a tutti,
ho creato in una maschera un'etichetta che cambia colore quando vado su con il mouse e ritorna come prima quando l'evento mousemove lo porto sul "corpo" ma l'etichetta mi "sfarfalla".
Come si può evitare questo problema?
Grazie per la risposta.
Lino

 Come si può evitare questo problema? 
 
Regola 1: Se esiste codice rilevante, mostralo per non farci indovinare!
Regola 2: Se un evento/cambio si ripete, il codice dovrebbe controllare 
la propria necessità. P.e. fai già una prova del tipo
 
If Me!Label.BackColor <> Colore Then Me!Label.BackColor = Colore
 
?
 
-- 
Ciao
Karl
*********
http://www.AccessDevCon.com
 
Access FAQ: 
http://www.donkarl.com/it
 


Caro Karl, hai ragione, forse la mia domanda potrebbe sembrare enigmatica.
Ti posto il codice che ho fatto:
 
Private Sub Etichetta1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Me.Etichetta1.BackColor = 255
Me.Etichetta1.ForeColor = 16777215
End Sub
con questo, andando con il mouse su cambia il colore di sfondo e testo.
 
Uscendo dall'area dell'etichetta ed andando sul "corpo" ritorna tutto come prima 
ed il codice è questo:
Private Sub Corpo_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Me.Etichetta1.BackColor = 33023
Me.Etichetta1.ForeColor = -
2147483630
 
End Sub
In effetti l'etichetta ritorna come prima ma, muovendo il mouse, l'etichetta "sfarfalla" o "lampeggia".
Grazie sempre per la tua gentilezza.

 In effetti l'etichetta ritorna come prima ma, muovendo il mouse, l'etichetta "sfarfalla" o "lampeggia". 
 
Quindi prova con:
 
If Me!Etichetta1.BackColor <> 33023 Then
     Me!Etichetta1.BackColor = 33023
 
     Me!Etichetta1.ForeColor = -
2147483630
 
 
End If



Mi dispiace, ma non funzione.
Ho provato a mettere il tuo codice sia sull'evento mousemove dell'etichetta sia sul corpo sempre mousemove.
Ho sbagliato io qualcosa?
Grazie

 Ho sbagliato io qualcosa? 
 
Al minimo due cose:
 
1, Alla descrizione "ma non funziona" non si puo ripetere niente.
 
2. Non hai rivelato la tua versione di Access. Se si tratta di una 
versione dagli ultimi 11 anni:
 
Come sarebbe di sostituire l'etichetta con un pulsante ed invece del 
codice usare le proprietà integrate per gli'effetti "hover"? Così basta 
scrivere i numeri dei colori "attivi" nelle proprietà "Colore al 
passaggio del mouse" e "Colore primo piano al passaggio del mouse".



La mia versione è la 2003 e gli effetti over sulla mia versione non esistono.


E' da ieri che ti chiedono di spiegare l'anomalia
Ancor oggi leggendo, dopo tre volte che posti e tre volte che Karl ti 
risponde, e non si capissie una mazza
Abbi pieta', spiegaci cosa non ti funziona e come fare per riprodurre il 
problema, posta il codice che usi a meno che non sia un segreto industriale
E magari sarebbe pure buona creanza indicare su che sistema operativo 
stai operando, se 32/64 bit, se altre versioni di Office installate, ecc..
 
 


Ok, allora ricomincio daccapo.
 
Ho la versione Access 2003,
1. ho un pulsante di comando che vorrei che cambiasse colore al passaggio del mouse come, per esempio, succede quando si lavora in html e css.
La stessa cosa vorrei che mi succedesse in una maschera di Access.
 
2. l'unico evento che sono riuscito a trovare ed usare è quello mouse_move, ma non ho su un pulsante di comando o un'etichetta (che potrebbe sempre fungere da pulsante di comando con l'evento SU CLIC) un evento mouse_over e mouse_out;
 
3. ho usato, nel mio caso, l'evento mouse_move su un'etichetta in questo modo(in quanto il pulsante di comando è solo ed eslusivamente grigio):
   Private Sub Etichetta1_MouseMove(Button As Integer, Shift As Integer, X As     Single, Y As Single)
Me.Etichetta1.BackColor = 33023
Me!Etichetta1.ForeColor = -
2147483630
 
End Sub
Se lascio il codice così è vero che cambiano i colori sia dello sfondo che del testo ma io vorrei che uscendo dall'etichetta ritorni tutto come prima.
 
4. ho provato a far ritornare tutto come prima mettendo l'evento mouse_move sul "corpo" della maschera ma l'etichetta in questione "sfarfalla". Quindi, alla fine, l'effetto non è esattamente quello che voglio.
 
Lo stesso effetto (mouse_over e mouse_out) vorrei averlo creando dei pulsanti di comando personalizzati dove, per esempio, vorrei avere delle immagini che al passaggio del mouse mi facciano vedere, ad esempio, del testo o altre immagini (sottostanti) cliccabili per ottenere altri eventi tipo una stampa, ecc. 
 
A questo punto spero di essermi spiegato bene e ringrazio ancora per la vostra pazienza.


Il punto 2 è incomprensibile..., ma la sostanza è quella che ti ha già detto Karl e credi che funziona... 
 
Piazza un'etichetta in una Maschera [lblButton] con Sfondo BIANCO non TRASPARENTE...!!!
 
Quindi su EVENTI definiti: 
 
Option Compare Database
Option Explicit
 
Private Sub Corpo_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Me.lblButton.BackColor = vbRed Then
        Me.lblButton.BackColor = vbWhite
    End If
End Sub
 
Private Sub lblButton_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Me.lblButton.BackColor = vbWhite Then
        Me.lblButton.BackColor = vbRed
    End If
End Sub
 
Se non funziona, credo serva LOURDES.
 
@Alex

Ora fai attenzione che, se hai più BUTTON da gestire, serve una malizia aggiuntiva... ovvero il RESET deve sapere quale controllo far tornare BIANCO... e se non salvi il nome del controllo da qualche parte non riesci...
 
Quindi aggiungi 2 LABEL chiamate [lblButton1] e [lblButton2]... ed applica quanto sopra indicato:
 
Option Compare Database
Option Explicit
 
Private strActLbl   As String
 
Private Sub Corpo_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Len(strActLbl) > 0 Then
        If Me.Controls(strActLbl).BackColor = vbRed Then
            Me.Controls(strActLbl).BackColor = vbWhite
            strActLbl=vbNullString
        End If
    End If
 End Sub
 
 Private Sub lblButton1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
     If Me.lblButton1.BackColor = vbWhite Then
        strActLbl = "lblButton1"
        Me.lblButton1.BackColor = vbRed
     End If
 End Sub
 
Private Sub lblButton2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
     If Me.lblButton2.BackColor = vbWhite Then
        strActLbl = "lblButton2"
        Me.lblButton2.BackColor = vbRed
     End If
End Sub
 
Ovviamente il codice è abbastanza grezzo... ma direi che è meglio puntare alla concretezza prima di cercare la perfezione.
 
@Alex
 

 ...
Strumenti - Opzioni - Maschere/Report - Utilizza controlli con temi 
Windows nelle maschere





Perfetto, Lordues può aspettare....., grazie mille.
Ora posso gestire le etichette come fossero pulsanti di comando e con cambio colore.
Ho capito anche perchè non funzionava prima, praticamente bisognava dare all'etichetta i colori di base (sfondo e testo) uguali a quelli del codice vbwhite e vbred, cosa che non facevo.
Buona notte a tutti ed alla prossima!
 
Lino