Newsgroup: it.comp.appl.access
Titolo: Effetti su etichette al passaggio del mouse

Ho inserito in una maschera la seguente sub
--------------
Sub etich(num)
    Dim u As Byte
    DoCmd.SetWarnings False
'    DoCmd.Echo False
'    Application.Echo False
    For u = 1 To quantibottoni
        If u = num Then
            Me("etichetta" & u).SpecialEffect = 1
        Else
            Me("etichetta" & u).SpecialEffect = 2
        End If
    Next
'    Application.Echo True
'    DoCmd.Echo True
    DoCmd.SetWarnings True
End Sub
--------------
La costante "quantibottoni" (eh, già: niente standardizzazione dei
nomi...) è impostata al numero di pulsanti presenti nella maschera.
La maschera ha pulsanti trasparenti in primo piano, etichette che si
chiamano etichetta1, etichetta2, ecc, in secondo piano. La sub è
chiamata dall'evento MouseSpostato dei pulsanti, così: =etich(1).
Nell'esempio, un pulsante fa sì che etichetta1 sia in rilievo, mentre
tutte le altre diventano infossate.
Insomma, passando col topo su quelli che l'utente crede siano pulsanti
incassati, questi si sollevano a turno. Si può usare anche per far
loro cambiare colore o qualsiasi altro effetto.
Per evitare che l'ultimo "pulsante" sorvolato rimanga in rilievo
finché non si passa su un altro, la maschera ha un'immagine di sfondo;
anche in essa c'è l'evento MouseSpostato che chiama =etich(0).
Il problema è che se sposto il topo su e giù per la maschera, ottengo
un fastidioso tremolio di tutti i "pulsanti".
Nella sub si vedono i tentativi per evitarlo, che ho usato anche in
combinazione:
--------------
    DoCmd.SetWarnings False
'    DoCmd.Echo False
'    Application.Echo False
--------------
L'effetto migliore lo dà il SetWarnings.
Si dà il caso però che, a seconda del livello di utente, la maschera
sia aperta in modalità PopUp e SceltaObbligatoria poste a Vero o
Falso. In quest'ultimo caso tutto bene; altrimenti il tremolio
continua.
Sembra cioè che il SetWarnings non abbia effetto con modalità PopUp e
SceltaObbligatoria poste a Vero, anche se mi pare di avere riscontrato
che in altri casi (cancellazione di record) effettivamente i "warnings"
siano disattivati.
La domanda è se posso eliminare il tremolio, e con quale sistema.
Saluti e grazie a tutti.
Riccardo Baldinotti

Riccardo Baldinotti ha detto: in data 13/07/2006 14.19:

"a caldo" mi vien da proporre che per eliminare il tremolio (credo 
dovuto al fatto che controlli il mouse move) potresti usare gli enventi 
"got_fogus" e "lost_Focus" di ogni etichetta...
ovvio che diventa noioso scrivere la function per ogni etichetta ed 
evento, quindi ti suggerirei di dare un'occhio sul sito di karl 
(
www.donkarl.com/it/
) nella sezione CISA1 dove il buon Marco Pizzamiglio 
ci ha aperto il mondo con il WithEvents :)
Ciao
Nick

Riccardo Baldinotti ha scritto:




Vedi se la soluzione appena inserita su Accgrp: 
http://www.accessgroup.it
Sezione Forms 
Eventi grafici Mouse su Label 
fa al caso tuo.
--
Salvino
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

fa al caso tuo.
Quanto al WithEvents, ora me lo vado a studiare.
Saluti e ringraziamenti.
Riccardo Baldinotti

Riccardo Baldinotti ha scritto:

Il tremolio viene generato dalla continua esecuzione del codice, e di
conseguenza
la sua Formattazione grafica su Evento MouseMove.
Per evitare il Tremolio basta salvare in una variabile Static il nome
del controllo che passerai con l'Evento MouseMove, quindi se il Nome
del controllo Precedente
è Uguale all'attuale esci, se diverso resetti la formattazione sul
precedente ed applichi quella sull'attuale.
Dai un'occhiata al Demo:
http://www.alessandrobaraldi.it/DettaglioFaq.asp?IdFAQ=85
oppure
http://www.alessandrobaraldi.it/DettaglioFaq.asp?IdFAQ=103
Trovi in entrambi la stessa tecnica usata per la gestione delle Label
affinchè
non sia generato il tremolio.
@Alex