Newsgroup: it.comp.appl.access
Titolo: estendere la formattazione condizionale a tutti i controlli di una form

Da poco sto provando a scrivere codice sulla formattazione condizionale. Avrei l'esigenza (dovendo generare diverse form ) di settare la formattazione condizionale in tutte le textbox attive di una form.
Le textbox hanno tag=X
 
il codice che ho usato è il seguente
 
su form load
 
'imposta la formattazione condizionale a tutti i controlli con TAG=X
Dim CTL As Control
For Each CTL In Me.Controls 
       If CTL.Tag = "X" Then
            With CTL
                .FormatConditions.Add acExpression, acEqual, IsNull(CTL)
                .FormatConditions(0).BackColor = RGB(250, 240, 220) 
            End With
      End If
Next
 
funziona, nel senso che all'apertura della form tutte le txtbox vuote sono con il fondo rosa. Il problema è che il fondo non ridiventa bianco quando lo compilo.
 
Avete suggerimenti? dov'è che sbaglio?
 
grazie
BC

Non ti conviene farlo in Modalità Struttura 1 Volta e salvare, in modo da non farlo ad ogni apertura...?
 
Imposti lo sfondo Bianco, e la F.C. ed elimini il codice.
 
@Alex

Il motivo di tutto questo è ricavare una procedura da applicare a più form (ed anche per curiosità...) 
grazie 
BC


Fai attenzione, distingui la didattica dalla funzionalità...
Quel sistema che sicuramente funziona, da capire se hai il controllo Bianco di base o meno..., ma se hai 3 controlli direi che ha poco senso, se ne hai molti ti accorgi che ha un impatto notevole in termini di applicazione e di conseguenza di tempi.
Lasciamo perdere poi se le Casistiche sono più di 1 da applicare.
 
Quindi se, come nel tuo caso non hai esigenza di renderla DINAMICA... secondo me meglio evitare questa cosa che ha l'aria più dello sperimento che altro.
 
@Alex

vabbè ci ho provato... mi metterò a manina a cambiare tutti le FC di una decina di form. mi rimarrà la curiosità...
 
grazie lo stesso,
gentilissimo
 
BC

Ma allora non hai capito... usa il tuo codice per operare in modalità Struttura e salvi... cosa non ti è chiaro...?
 
A manina quandomcinsono più di 10 controlli non si fa nulla... ti scrivi delle funzioni che puoi usare in modo intelligente lasciandole dalla finestra immediata che aprono la form in modalità acDesign recuperi l'istanza e cicli... applicando la F.C. come espressione.
Salvi.e chiidi.
 
A mano devi scrivere il codice.
 
Saluti
@Alex


Giusto per farti capire:
 
I Controlli sono 62 nella Form, si chiamano [d1]÷[d62], se il contenuto del controllo=1 applico la F.C.,in realtà ho semplificato il codice solo per farti comprendere il senso.
 
Quindi in fase di SVILUPPO mi sono creato questa Routine che apre la Maschera in modalità STRUTTURA, applica da codice la F.C. salva e chiude.
Questa cosa la faccio 1 VOLTA e mai più...
 
Function FCDesignTime(FormName As String, lForeColor as Long, lBackColor As Long)
    Dim mF          As Access.Form
 
    Dim iCtl        As Integer
    Dim ctl         As Access.TextBox
    Dim mFC         As Access.FormatCondition
 
    DoCmd.OpenForm FormName , acDesign
    Set mF = Forms(FormName )
 
    For iCtl = 1 To 62
        Set ctl = mF.Controls("d" & iCtl)
        ctl.FormatConditions.Delete
        Set mFC = ctl.FormatConditions.Add(acExpression, acEqual, "[FCColor]=1")
        mFC.ForeColor = lForeColor
        mFC.BackColor = lBackColor
 
    Next
    DoCmd.Close acForm, mF.Name, acSaveYes
End Function
 
@Alex

grazie, ho compreso e mi metto a provare (lavoro permettendo...) . A volte un esempio vale mille parole. Grazie ancora.
BC