Newsgroup: it.comp.appl.access
Titolo: Formattazione condizionale in maschera continua su tutti i Ctrl del record corrente??

Salve a tutti, sebbene possieda Access 2003, non riesco ad applicare la 
formattazione condizionale di tutti i controlli del record corrente ( 
riesco solo con un controllo alla volta), ho cercato vecchi post ma non sono 
riuscito.
Sul sito comune c'è pure un esempio ma il codice è troppo complesso per le 
mie limitate capacità.
Grazie per gli eventuali consigli
Ciao Mario 

 ha scritto nel messaggio
news:ahdNd.835706$35.32...@news4.tin.it...

Ciao Mario, io ho utilizzato questa function prelevata sebben ricordo dal
sito di @Alex
Non so se faccia al caso tuo perche non dici nulla di come deve essere la
formattazione dei controlli, questa crea un'alternanza nei colori
Private Function GetRecNum() As Long
  On Error GoTo erh
  Dim Frm As Form
  Set Frm = CodeContextObject
  With Frm.RecordsetClone
        If Not ((.BOF = True) And (.EOF = True)) Then
               .bookMark = Frm.bookMark
               GetRecNum = .AbsolutePosition + 1
        End If
  End With
ext:
  Set Frm = Nothing
  Exit Function
erh:
  GetRecNum = 0
  Resume ext
End Function
 la metti su apertura della tua form.
poi vai su formattazione condizionale dei campi che ti interessa e ci metti
: su nessuna condizione un tipo di formattazione che vuoi tu e poi su
condizione 1 l'espressione è: GetRecNum() Mod 2<>0
Vedi se ti può essere d'aiuto. Ciao.

 ha scritto nel messaggio 
news:q_dNd.835815$35.32...@news4.tin.it...

Ciao Sandro, non riesco a usare l'esempio che mi hai postato a causa della 
"nidificazione" della Sub Form_Open con la Function GetRecNum (Errore: 
prevista End Sub che puntualmente metto ma che non mi accetta), tuttavia a 
me servirebbe evidenziare con colore di sfondo tutti i controlli del Record 
Corrente, degli altri non mi interessa, devono rimanere come sono
Ciao Mario

 ha scritto nel messaggio 
news:q_dNd.835815$35.32...@news4.tin.it...

Sono riuscito ad usare la funzione ( che idiota che sono!) ma come previsto 
mi seleziona un record si ed uno no mentre io vorrei solo il record corrente
Grazie
Mario 

 ha scritto nel messaggio
news:kffNd.835945$35.32...@news4.tin.it...

Ciao Mario, se ho ben capito ciò che stai cercando di fare, hai bisogno di
evidenziare il record che viene selezionato in una form a maschere continue
??
Se si, sempre sul sito di @Alex trovi un esempio di Silvio Savoldi nella
sezione Forms "Evidenziare records in viste tabellari".
Provalo.
Ci risentiamo domani nel pomeriggio. Buona notte !!

 ...
Ci sono metodi vari. Uno è di programmare la FC.
Se p.e. hai un campo "Id" che identifica un record e vuoi un colore
di fondo verde in ogni casella di testo/combinata/di riepilogo nel
record corrente puoi usare il seguente codice nel evento
"Su Corrente" della maschera:
Dim ctl As Control
For Each ctl In Me.Controls
    Select Case ctl.ControlType
        Case acTextBox, acComboBox, acListBox
            With ctl
                .FormatConditions.Delete
                .FormatConditions.Add acExpression, acEqual, "id=" & Me!id
                .FormatConditions(0).BackColor = vbGreen
            End With
    End Select
Next ctl
Oppure se vuoi un colore di fondo per tutta la sezione corpo del
form puoi crearti una casella di testo "txtFondo" grande come la
completa sezione corpo e scegli menu Formato/Porta in secondo
piano. Poi "Su Corrente" della maschera usi:
With Me!txtFondo
    .FormatConditions.Delete
    .FormatConditions.Add acExpression, acEqual, "id=" & Me!Id
    .FormatConditions(0).BackColor = vbGreen
    .FormatConditions(0).Enabled = False
End With
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it
+info sulla prima Conferenza Italiana per Sviluppatori di Access (CISA1) 


Perfetto č quello che cercavo!
Puoi spiegarmi qualcosa in piů visto che vorrei applicare piů di un
criterio: cosa significa (0)? perchč l'uso di Delete?
Criterio1    campo1(boleano) = -1    formatconditions.fontbold = true
Criterio2    campo2 isnull              formatconditions.forecolor = vbred
Siccome i criteri possono coesistere devo inserirli in 2 if
o c'č qualche modo diverso(altre istruzioni nel With)?
Ti ringrazio Ebo

 o c'è qualche modo diverso(altre istruzioni nel With)?
Non so se ti capisco bene.
Puoi aggiungere piu condizioni/formattazioi con codice:
.FormatConditions.Delete
.FormatConditions.Add acExpression, acEqual, "id=" & Me!ID
.FormatConditions(0).BackColor = vbGreen
.FormatConditions.Add acExpression, acEqual, "Campo1=-1"
.FormatConditions(1).FontBold = True
.FormatConditions.Add acExpression, acEqual, "IsNull(Campo2)"
.FormatConditions(2).ForeColor = vbRed
Ma come 1 e 2 sono statico puoi anche impostare tutti e tre nel
dialogo (menu format/FC) e modificare solo la prima = l'unica
condizione dinamica "Su Corrente" della maschera:
Dim ctl As Control
For Each ctl In Me.Controls
    Select Case ctl.ControlType
        Case acTextBox, acComboBox, acListBox
            ctl.FormatConditions(0).Modify acExpression, acEqual, "id=" & 
Me!id
    End Select
Next ctl
-- 
HTH
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: 
http://www.donkarl.com
 


Ringrazio per la cortesia Sandro e Karl, gli esempi proposti sono proprio
quello che cercavo thanks.

...

Posso chiedere qualcosa a riguardo ??
  1) E' possibile togliere lo sfarfallio che genera il processo su record corrente ?
  2) E' possibile gestire il tutto su campi non abilitati e bloccati ?
  3) E' possibile elimanare il fastidioso cursore con la sua evidenziazione ?
Grazie.

 cursore con la sua evidenziazione ?
Non capisco.


>> ...
Ti ringrazio: sei stato esauriente e "a lettura " mi sembra tutto chiaro.
Ciao  Ebo 

 Ti ringrazio: sei stato esauriente e "a lettura " mi sembra tutto chiaro.
Per caso sto scrivendo un articolo per una rivista tedesca
dove tra l'altro la FC è un soggetto. Allora uso questi esempi
anche per l'articolo. --> sinergia
-- 
:-)


 Ti ringrazio: sei stato esauriente e "a lettura " mi sembra tutto chiaro.
Ti consiglio di scaricare gli esempi che trovi sul Sito Comune (a cui Karl
si è rifatto): autore Alessandro Baraldi o Silvio Savoldi ... beh, al
momento non ricordo!  :-)
Andrea

 momento non ricordo!  :-)
-- 


 Invece conosco la FC e FormatConditions da >5 anni.
Mah, sul web il primo esempio di formattaz. condizionale per
l'evidenziazione del Record corrente "decente" che abbia trovato č quello
cui mi riferisco.
Le soluzioni proposte da Lebans o altri su aree USA erano troppo complesse.
Andrea

 complesse.
Sembra che il mondo di Access è più grande dei siti che conosci tu.


 Non capisco.
Quando blocchi una casella di testo in una maschera continua usata per
selezionare dei record, il cursore si evidenzia nella casella dove hai
cliccato per selezionare il record.
Vorrei che il cursore non comparisse in una maschera usata
semplicemente per ricerca.
Grazie.

 semplicemente per ricerca.
Forse intendi che come standard un controllo prima bloccato
č attivo di nuovo dopo l'hai programmato con FormatConditions.
In questo caso puoi includere nel loop:
.FormatConditions(0).Enabled = False
Certo se vuoi navigare tra i record bisogna almeno un controllo
attivo. Puoi p.e. usare un bottone trasparente per non vedere
niente.


 niente.
Per precisare:
Con "navigare" qui intendo click sul corpo della maschera o con la tastiera.
Se invece usi il RecordSelector o i NavigationButtons della maschera
(non so come si chiamano in italiano) non e necessario niente
controllo attivo. 

 Sembra che il mondo di Access è più grande dei siti che conosci tu.
E' inutile polemizzare: la cosa non mi riguarda.
Resta il fatto che, per anni, ho cercato a tappeto in tutte le aree (anche
da te frequentate)
soluzioni accettabili del problema di cui si parla nel th: niente da fare
... fino alla pubblicazione dell'esempio sul sito di Baraldi (o sul Sito
Comune).
Il codice che hai postato è identico e dubito sia una coincidenza.
In caso contrario, sinceri complimenti: anche per averlo occultato ben
bene!
Andrea.


Un'ultima risposta non per il signor Beretta perché i suio
scadenti sospetti non valgono più pena, ma per gli altri qui.
Queste poche righe di codice che ho scritto in questo thread
per me sono l'uso standard di FormatConditions solo un po'
adatto a una domanda qui. Non sono necessario grande
invenzioni e nemmeno una grande capacità in riguardo
a Access per un tale codice.
Per questo mi meravigliano queste sciocchezze di un
signor Beretta di cui prima non ho mai letto una riga
(almeno non mi ricordo) e chi non puo sapere cosa sa
o faccio da anni con la FC.


 ha scritto nel messaggio 
news:36sn1mF...@individual.net...

Karl non ti preoccupare di lui, non ne vale la pena.
MAssimiliano 

 o faccio da anni con la FC.
Sei un gran furbacchione Karl Don.
Ma sono d'accordo sul fatto che siano sciocchezze.
Andrea

voglio
allego la parte di codice in oggetto
With ctl
    .FormatConditions.Delete
    .FormatConditions.Add acExpression, acEqual, "Urgenza = -1"
    .FormatConditions(0).FontBold = True
    .FormatConditions.Add acExpression, acEqual, "not isnull([IdPony])"
    .FormatConditions(1).ForeColor = vbBlue
End With
Allora se il campo Urgenza vale Sě  il carattere nei controlli č in
grassetto    OK
Se il campo IDPony contiene un valore il colore del carattere sia in blu
OK
Ma se il record contiene Urgenza=Sě e con un valore IDPony voglio che il
carattere del
record sia  in grassetto e di colore blu.        Questo non avviene: cosa
debbo fare?
Ebo
Pensavo di aver capito!!

 debbo fare?
.FormatConditions.Delete
.FormatConditions.Add acExpression, acEqual, "Urgenza = -1 AND not 
isnull([IdPony])"
.FormatConditions(0).FontBold = True
.FormatConditions(0).ForeColor = vbBlue
.FormatConditions.Add acExpression, acEqual, "Urgenza = -1"
.FormatConditions(1).FontBold = True
.FormatConditions.Add acExpression, acEqual, "not isnull([IdPony])"
.FormatConditions(2).ForeColor = vbBlue
Guarda l'ordine delle condizioni perché la prima che è vero
sempre decide sulla formattazione. Allora la condizione
composita dev'essere la prima.
-- 
cu


ok grazie: ci  avevo provato ma mettevo la condition(0) come ultima!
Ancora una cosa: a questo punto abbiamo definito 3 conditions;
vuol dire che non posso aggiungerne altre?Sto rifacendo in Access una
applicazione che al verificarsi di altra condizione Not isNull( campoOra)
 formatta con altro colore.In questo caso il .forecolor =vbblu non esiste
più in quanto è cambiata la condizione "not isnull([IdPony])
devo dire che è difficile da spiegare!
Ciao Ebo

 isnull([IdPony]) devo dire che è difficile da spiegare!
Per il ForeColor non vedo una possibiltà.
L'unico trucco si riferisce a .BackColor o al colore e tipo del
bordo. Questi si puo "simulare" con un controllo diverso sotto
l'altro vuol dire in secondo piano.
Solo per essere sicuro come non hai scritto dove si trova
il tuo codice:
Se non hai una dipendenza dal record corrente o di altre variabili
1. non è necessario di programmare la FC ma puoi invece
selezionare tutti controlli ed usare il voce del menu per la FC
2. se usi codice basta eseguire il codice una sola volta nel
evento Su Apertura.
-- 
HTH
