Newsgroup: it.comp.appl.access
Titolo: evento su mouseover al contrario per pulsanti stile Outloock

Gentilissimi,
sto facendo i pulsanti in "stile Outloock" come da sitocomune, quelli 
che da grigi on mouseover diventano colorati (SPETTACOLO).
Stavo pensando: per resettare, viene consigliato di fare Cleaneffect su 
evento mouse spostato del corpo
Sub CleanEffect()
'Resetta tutti gli effetti di tutti i Gruppi di Controllo
    Dim X As Integer
    For X = 0 To UBound(ArrayCtl)
       Me(ArrayCtl(X) & "1").SpecialEffect = 3
       Me(ArrayCtl(X) & "1").FontBold = False
       Me(ArrayCtl(X) & "2").Visible = True
       Me(ArrayCtl(X) & "3").Visible = False
    Next
End Sub
Chiamata da:
Private Sub Corpo_MouseMove(Button As Integer, Shift As Integer, X As 
Single, Y As Single)
     CleanEffect
End Sub
Ma così non continuo a fare miliardi di volte la stessa cosa? Basterebbe 
una! Che dite posso impostare una variabile di appoggio e fare un if?
If pippo =1 then
CleanEffect
pippo=2
End If
Ovviamente setterò pippo =1 al primo passaggio sul pulsante.
Se ci ho beccato dove devo dichiarare la variabile?
Oppure esiste un evento "su mouse lasciato"?
Non odiatemi ho già iniziato il libro sul VBA ma i primi capitoli (che 
l'autore definisce fondamentali) sono proprio su "quando NON usare VBA"
Grazie, Davide

 Grazie, Davide
Allora visto che quel DEMO in parte è lo conosco bene posso anche
espormi in prima persona.
Il problema sostanzialmente non esiste in quanto i pulsanti non saranno
mai MILIONI, ma mi limito ad esagerare una decina....!
Ora visto che in ogni caso l'Evento MouseMove del corpo verrebbe
ovviamente generato in qualsiasi momento, poichè questo non lo puoi 
impedire o eliminare, credo che il vantaggio di fare quello che
dici si apprezzerebbe in circa 1milliscondo, e lo svantaggio
sarebbe di usare una variabile dichiarata a livello di Modulo
pressochè inutilmente.
Le ottimizzazioni da guardare ti assicuro non sono queste, ma ciò
non toglie che la tua osservazione sia corretta e che sia effettivamente
migliorabile con la memorizzazione del controllo attivo in una
Variabile e di conseguenza il Reset sarebbe MIRATO ed effettuato
solo nel caso fosse necessario.
Ciao
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 
Grazie e ciao
Dave

 Dave


 
La differenza c'č e si vede! Provare per credere usa dei bei pulsantoni! 
Forse nell'esempio di sc la maschera č molto piccola: la mia č grande al 
max. Se vuoi ti mando le due versioni.
Stesso metodo per i pulsanti( infatti dopo la prima modifica non 
sfarfallava piů sul corpo ma quando ero sui pulsanti sě, lo sfarfallio č 
molto leggero). Aspetto la modifica sul sitocomune per me sarebbe una 
grandissima soddisfazione!
Ecco il codice
Option Compare Database
Option Explicit
'La Matrice ArrayCtl č stata realizzata per discriminare
'Il nome dei Controlli che fanno parte della Gestione Effetti
'Questo per facilitare il controllo e la gestione stessa
Dim ArrayCtl(0 To 5) As String
Dim niente As Boolean                       <----------
'Ogni Pulsante č un Gruppo di Oggetti che da il nome(vedi Array) al 
Controllo
'Ogni Pulsante (in realtŕ č una Label mascherata) deve essere composto da:
'1)Label con Caption e  nome=NomeControllo & "0" (Con ilprogr. si 
discrimina il tipo)
'2)Immagine Bianco/Nero nome=NomeControllo & "1"
'3)Immagine Colori      nome=NomeControllo & "2"
Function EffectMe(strControl As String)
'Resetta l'effetto su tutti i Gruppi prima di applicarlo allo specifico
    	non serve  piů!!                       <----------
    'Setta il Controllo attuale con gli effetti
    If niente = True Then                       <----------
         Me(strControl & "1").SpecialEffect = 1
         Me(strControl & "1").FontBold = True
         Me(strControl & "2").Visible = False
         Me(strControl & "3").Visible = True
        niente = False                       <----------
    End If
End Function
Sub CleanEffect()
'Resetta tutti gli effetti di tutti i Gruppi di Controllo
   Dim X As Integer
    For X = 0 To UBound(ArrayCtl)
       Me(ArrayCtl(X) & "1").SpecialEffect = 3
       Me(ArrayCtl(X) & "1").FontBold = False
       Me(ArrayCtl(X) & "2").Visible = True
       Me(ArrayCtl(X) & "3").Visible = False
    Next
End Sub
Sub BildArray()
'Questo Array serve per velocizzare la Gestione e non Ricorrere a 
For..Each..Next
'nel caso si vogliano aumentare i Controlli aggiungere un Gruppo e 
ridimensionare
'l'Array all'inizio del Modulo
'Il nome (Stringa) che contraddistingue il Gruppo Controllo č quello che 
darŕ il
'nome a tutti i controlli del Gruppo aggiungendo il "Progressivo"
    ArrayCtl(0) = "Appunti"
    ArrayCtl(1) = "Clienti"
    ArrayCtl(2) = "Esci"
    ArrayCtl(3) = "Fatt"
    ArrayCtl(4) = "Faxs"
    ArrayCtl(5) = "Rich"
End Sub
Private Sub Corpo_MouseMove(Button As Integer, Shift As Integer, X As 
Single, Y As Single)
     If niente = False Then                       <----------
         CleanEffect
         niente = True                       <----------
     End If
End Sub
Private Sub Form_Close()
     DoCmd.Restore
End Sub
Private Sub Form_Open(Cancel As Integer)
     BildArray
     DoCmd.Maximize
     niente = False                       <----------
End Sub

 Ecco il codice
Stiamo parlando di 2 esempi diversi, prova a scaricare
questo:
http://www.mantuanet.it/alessandro.baraldi/
Sezione [FORMS]
1.13 ToolBars con effetto Outlook 
C'è di sicuro anche nel SC ma non ricordo il riferimento.
Credo che il demo che intendi tu sia il mio vecchio demo
che avrà qualche anno, e sicuramente non è ottimizzato.
Errori di gioventù...!


 
il riferimento era
3.44 Esempio di come realizzare pulsanti ad effetto tipo OutLoock.
L'ho scritto tale e quale (Outloock) perchč ce n'erano 3-4 e pensavo si 
capisse. Il tuo č sicuramente piů completo ora me lo studio bene bene, 
ma questo č semplice e fa quel che deve fare ottimamente!
Grazie e ciao

Credo sia sempre mio anche l'altro...!
@Alex