Newsgroup: it.comp.appl.access
Titolo: evidenziare etichette al passaggio mouse

Salve a tutti, qualcuno di voi ha mai creato un codice che colori di
rosso le etichette al passaggio del mouse sui controlli ad esse
associati?
Io ho creato il seguente codice, ma non mi soddisfa, in quanto
richiede la scrittura di codice personalizzato su ogni evento.
'-------------------------
Private Sub Contatore_MouseMove(Button As Integer, Shift As Integer, X
As Single, Y As Single)
Call colora(1, [Forms]![maschera1])
End Sub
'-------------------------
Function colora(etichettacorrente As Variant, maschera As Variant)
Dim i As Integer
For i = 1 To maschera.Controls.Count - 1 Step 1
    If InStr(1, maschera.Controls(i).name, "etichetta") > 0 Then
       maschera.Controls(i).ForeColor = 0
    End If
Next
       maschera.Controls("etichetta" & corrente).ForeColor = 255
End Function
'-------------------
I problemi sono i seguenti:
Come si fa a passare il nome dell'etichetta associata al controllo?
Come si fa a passare alla funzione il nome della maschera corrente?
(ho provato con 
me.name
 ma inutilmente)
Se si riesce a fare questo il passo successivo sarebbe creare un
evento di classe che all'apertura della form generi il codice
mousemove per ogni controllo.

 mousemove per ogni controllo.
Questo č un problema tipico da "withEvents".
Un metodo anche piů semplice, che non richiede (necessariamente) codice nel
modulo di classe delle varie form lo trovi qua:
http://www.alessandrobaraldi.it/DettaglioFaq.asp?IdFAQ=85
Almeno se ho ben capito quello che cerchi   ;-)
Saluti.

 Saluti.
Grazie l'esempio è ottimo,
il massimo sarebbe ricavare in automatico il nome dell'etichetta
associata al controllo, in quanto access in auto le chiama
etichetta1,2,3,4.... e non contatore1, nome1....
in questo modo non sarebbe necessario rinominare tutte le etichette
con nomecontrollo & 1.
Ho applicato il seguente codice su una maschera con molti campi e
fortunatamente non mi ha dato problemi di sfarfallio!
Public Function OverIco(strForm As String, strLabel As String)
   Static OldLabel As String
   Static OldForm As String
   'Resetta il Vecchio
   If OldLabel <> "" And IsLoaded(OldForm) Then
         Forms(OldForm).Controls(OldLabel & 1).ForeColor = 0
         Forms(OldForm).Controls(OldLabel & 1).FontWeight = 400
   End If
   'Setta il Nuovo
   If strLabel <> "" Then
         Forms(strForm).Controls(strLabel & 1).ForeColor = 255
         Forms(strForm).Controls(strLabel & 1).FontWeight = 800
  End If
   OldLabel = strLabel
   OldForm = strForm
End Function

"BR1"
Grazie l'esempio č ottimo,
il massimo sarebbe ricavare in automatico il nome dell'etichetta
associata al controllo, in quanto access in auto le chiama
etichetta1,2,3,4.... e non contatore1, nome1....
in questo modo non sarebbe necessario rinominare tutte le etichette
con nomecontrollo & 1.
Ma no: la nomenclatura che vedi nell'esempio č buona.
Certo ognuno ha le sue abitudini, ma non č bello lasciare i nomi delle
etichette come le crea Access (etichettaXXX).
Saluti.

 Saluti.
Ci sono arrivato vicino, sulla guida ho trovato il seguente codice:
Public Sub ShowParent()
    Dim frm As Form
    Dim ctl As Control
    Set frm = Forms!Orders
    Set ctl = frm.[Speedy Label]
    ' Returns name of control attached to label.
    MsgBox "The parent control is " & 
ctl.Parent.Name
    Set ctl = frm.Speedy
    ' Returns name of control containing control.
    MsgBox "The parent control is " & 
ctl.Parent.Name
    Set ctl = frm.ShipVia
    ' Returns name of form containing option group control.
    MsgBox "The parent control is " & 
ctl.Parent.Name
End Sub
Mi serve sapere se esiste l'opposto di PARENT

 Saluti.
Per adesso ho risolto ciclando tutti i parent:
Public Function Addsotto(Frm As Access.Form)
   Dim i, l As Integer
   Dim IndexSection As Variant
   For i = Frm.Controls.Count - 1 To 0 Step -1
        If InStr(1, Frm.Controls(i).Name, "tichetta") > 0 Then
                For l = Frm.Controls.Count - 1 To 0 Step -1
                     If Frm.Controls(l).Name =
Frm.Controls(i).Parent.Name Then
                            Frm.Controls(l).OnMouseMove = "=OverIco("
& Chr(34) & Frm.Name & Chr(34) & "," & Chr(34) & Frm.Controls(i).Name
& Chr(34) & ")"
                            IndexSection = Frm.Controls(l).Section
                            Frm.Section(IndexSection).OnMouseMove =
"=OverIco('" & Frm.Name & "'," & Chr(34) & vbNullString & Chr(34) &
")"
                     End If
                Next l
        End If
   Next i
End Function


Scusami,
ma se sei dentro la form, puoi semplicemente fare riferimento a
Parent.name -> Me!Name