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.
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)
La FC permette 3 condizioni e formattazioni come vedi anche
nel dialogo dal menu. Nel codice sono numerati 0, 1, 2.
Delete e Add sono solo necessario se non ci sono impostati
condizioni e formattazioni. Se ci sono già basta usare Modify:
With ctl
.FormatConditions(0).Modify acExpression, acEqual, "id=" & Me!id
.FormatConditions(1).Modify ...
.FormatConditions(2).Modify ...
End With
> 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)?
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.
No.
> 2) E' possibile gestire il tutto su campi non abilitati e bloccati ?
Sě.
> 3) E' possibile elimanare il fastidioso
> cursore con la sua evidenziazione ?
Non capisco.
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
Non sono sicuro che vuol dire "si è rifatto".
Non conosco gli esempi sul SC.
Invece conosco la FC e FormatConditions da >5 anni.
> autore Alessandro Baraldi o Silvio Savoldi ... beh, al
> momento non ricordo! :-)
--
> Non sono sicuro che vuol dire "si č rifatto".
> Non conosco gli esempi sul SC.
Pare impossibile.
> 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
Sembra che il mondo di Access è più grande dei siti che conosci tu.
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.
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.
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.
Karl non ti preoccupare di lui, non ne vale la pena.
MAssimiliano
> Un'ultima risposta non per il signor Beretta perché i suio
> scadenti sospetti non valgono più pena, ma per gli altri qui.
Non sono sospetti, e non è la tua non è una "colpa": solo un peccatuccio.
> 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.
Sei un gran furbacchione Karl Don.
Ma sono d'accordo sul fatto che siano sciocchezze.
Andrea
.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
> Karl
>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
Sì.
> 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!
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
>il codice č sul Current del fogliodati questo poichč continuano ad entrare
nuovi records ed escono i records che hanno il campo IdPony valorizzato
(il record entra con IDPony Null ed in questa maschera viene completato)
L'origine č una query con criteri su campi dataora.Avevo provato a definire
una requery sul timer ma risulta un brutto sfarfallio; ma sembra che non
serva il requery per aggiornare la formattazione.Ebo
>