Newsgroup: it.comp.appl.access
Titolo: funzione pubblica per assegnare immagine a controlli immagine

Ciao a tutti,
Avendo "skinnato" il mio db attraverso bmp collegate, mi sono ritrovato ad 
avere
una grande quantità di maschere con codice molto simile (anzi identico).
Per ottimizzare il tutto ho scritto questa function pubblica, che richiamo
poi da ciascuna maschera contenente i controlli immagine sull'evento "Su 
Caricamento" con setGrafs Me.Name
Public Function setGrafs(x As String)
    Dim Controllo As Control
    For Each Controllo In Forms(x).Controls
        If Controllo.Tag = "barT" Then
            Controllo.Picture = PathCorrente & "IMGs\barT.bmp"
        ElseIf Controllo.Tag = "barO" Then
            Controllo.Picture = PathCorrente & "IMGs\barO.bmp"
        ElseIf Controllo.Tag = "barB" Then
            Controllo.Picture = PathCorrente & "IMGs\barB.bmp"
        Else
        End If
    Next
End Function
Il tutto funziona a dovere, tranne quando apro una maschera contenente una
sottomaschera: in questo caso mi appare un errore di runtime 2450 che dice 
"Impossibile
trovare la maschera 'nomeSottoMaschera' a cui si fa riferimento" ecc..
Come posso risolvere questo problema?
Grazie infinite per l'aiuto
em.an.


Devi assegnare l'immagine anche alla SubForm...?
Se fosse così dovresti modificare la funzione e farla diventare
ricorsiva...
Public Function setGrafs(frm As Access.Form)
     Dim Controllo As Control
     For Each Controllo In frm.Controls
         Select case ctl.ControlType
              Case acSubForm
                     Call setGrafs(Controllo.Form)
              Case else
                     If Controllo.Tag = "barT" Then
                             Controllo.Picture = PathCorrente & "IMGs
\barT.bmp"
                     ElseIf Controllo.Tag = "barO" Then
                             Controllo.Picture = PathCorrente & "IMGs
\barO.bmp"
                     ElseIf Controllo.Tag = "barB" Then
                             Controllo.Picture = PathCorrente & "IMGs
\barB.bmp"
                     Else
                     End If
          End Select
     Next
End Function
Saluti
@Alex


[CUT]
Devi assegnare l'immagine anche alla SubForm...?
Se fosse cosě dovresti modificare la funzione e farla diventare
ricorsiva...
Public Function setGrafs(frm As Access.Form)
     Dim Controllo As Control
     For Each Controllo In frm.Controls
         Select case ctl.ControlType
              Case acSubForm
                     Call setGrafs(Controllo.Form)
              Case else
                     If Controllo.Tag = "barT" Then
                             Controllo.Picture = PathCorrente & "IMGs
\barT.bmp"
                     ElseIf Controllo.Tag = "barO" Then
                             Controllo.Picture = PathCorrente & "IMGs
\barO.bmp"
                     ElseIf Controllo.Tag = "barB" Then
                             Controllo.Picture = PathCorrente & "IMGs
\barB.bmp"
                     Else
                     End If
          End Select
     Next
End Function
Saluti
@Alex
ciao Alex,
si, devo assegnare le immagini anche alle sottomaschere, se presenti e 
contenenti controlli immagine collegati a bmp.
scusami ancora 1 secondo: ora come richiamo la nuova funzione?
prima la richiamavo Su Caricamento delle form con: "setGrafs Me.Name" ,
ma ora mi da errore ..
em.an. 

 Se fosse così dovresti modificare la funzione e farla diventare

Devi passare l'oggetto:
Call SetGrafs(Me)
@Alex

 \barT.bmp"
[CUT]
Devi passare l'oggetto:
Call SetGrafs(Me)
@Alex
Perfetto.
Grazie mille!
em.an.