Newsgroup: it.comp.appl.access
Titolo: Campo lampeggiante

Ho provato a leggere sia sul forum che sul Sito Comune, ma non ho trovato
niente che mi risolva questo problema. Avrei bisogno, se è possibile, creare
un campo che al raggiungimento di un dato valore, questo lampeggi. Potrebbe
essermi o perlomeno per me avrebbe la stessa utilità, il cambio colore dello
sfondo, sempre in modo lampeggiante. Se ho fatto una richiesta non consona
al forum, scusatemi, è difficile per un neofita spiegarsi con termini da
esperti.
Grazie per la comprensione e spero di ricevere qualche risposta.
RC

RC ha scritto:

Cosa vuol dire 'al raggiungimento di un dato valore'?
Da dove vengono i dati, sono inseriti a mano dall'utente o calcolati?
Stai lavorando su una maschera singola o continua?
E' indifferente far lampeggiare lo sfondo o il testo, anche entrambi se
vuoi, si usa l'evento timer della maschera. Bisogna solo individuare
esattamente la condizione in base alla quale il testo deve lampeggiare o
restare fisso.
-Marco-
-- 
namor at inwind punto it
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio 
news:epsd35$50j$1...@news.newsland.it...

Grazie Marco per avermi risposto.
Per quanto riguarda i dati, questi vengono prelevati da una tabella ed è la 
somma di più campi che quando è superiore a X (ipotesi >100) lo sfondo del 
campo dovrebbe lampeggiare e continuare a lampeggiare fino a quando questa 
condizione non ritorna alla normalità,  e cioè X (<100).
Scusami la mia poca professionalità, ma non conosco la differenza tra 
maschera singola o continua (ho provato a digitare "maschera singola" 
sull'help di access, ma non ho trovato niente).
Ti ringrzio ancora per la tua disponibilità,
RC 

 RC
La maschera singola visualizza un solo record alla volta, quella continua
ne visualizza molti, uno sotto l'altro, e generalmente ha una barra di
scorrimento verticale.
Vedi proprietà della maschera, scheda Formato, Visualizzazione predefinita.
Se stai usando una maschera singola puoi avere facilmente il campo
lampeggiante sfruttando gli eventi current, afterupdate e timer.
Se usi una maschera continua puoi colorare i campi con valore >100 con la
formattazione condizionale (se usi Access2000 o superiore) ma con colore
fisso e non lampeggiante.
Se usi una maschera continua e vuoi anche il colore lampeggiante solo sui
record con valore >100 è più complicato. Penso si possa fare con una
combinazione dei due sistemi, applicando e togliendo i criteri di
formattazione condizionale su evento timer della maschera.
Quindi... che maschera stai usando?
E se stai usando una maschera continua, il totale che devi controllare è
una somma di più campi dello stesso record o è la somma dei valori di un
unico campo presi da più record?
Chiedo tutte queste spiegazioni perchè la soluzione è diversa per ciascun
caso, e finchè non capiamo bene la situazione è difficile darti un
consiglio preciso.


 ha scritto nel messaggio 
news:epsjc0$7pj$1...@news.newsland.it...

Grazie Marco, sei stato solo stupendo, hai grande pazienza, ho capito 
solamente adesso la differenza, cosa a me conosciuta ma che non riuscivo a 
memorizzare, la tua spiegazione mi ha rimesso un po' in carreggiata..
Attualmente si sta usando una singola e penso che anche per il futuro sia 
questa la situazione ideale, ma come tu sai meglio di me, quando si 
incomincia un progetto, certe idee vengono in fase di svolgimento. Ad ogni 
modo, vorrei conoscere come procedere per avere questo risultato su una 
maschera singola.
Ti ringrazio per il tutto.
RC 

 RC
Allora prova così, supponendo che il controllo che deve lampeggiare si
chiami Totale: 
sull'evento timer della maschera scrivi
  me.totale.visible = not me.totale.visible
e in entrambi gli eventi Current e Afterupdate della maschera scrivi
  if me.totale>100 then
    me.timerinterval=400
  else
    me.timerinterval=0
    me.totale.visible=true
  end if
Ciao.


 ha scritto nel messaggio 
news:ept1ff$td5$1...@news.newsland.it...

Perfetto, pensavo di non riuscire a farmi capire, indubbiamnete hai delle 
capacità nel capire gli altri, molto superiori allemi, non c'erano dubbi in 
merito. Il tutto è l'ideale per quello che attualmente può servirmi, 
solamente ancora una cosa se è possibile, perchè quanto tu mi hai descritto 
abbbia effetto, devo aggiornare la maschera, per questo ho messo un tasto 
d'aggiornamento, (costruito in automatico) ma non basta, devo chidere la 
finestra e riaprirla, è possibile farlo in automatico dopo l'inserimento dei 
dati?  So che hai già fatto molto, ma ti prometto che per una settimana poi 
non ti disturbo.
Grazie, un grazie sincero,
RC 

 RC
Ma hai messo il codice dell'if su "Corrente" e anche su "dopo
aggiornamento" della maschera? Dovrebbe già andare.
Il totale è una somma di caselle associate o non associate?


 ha scritto nel messaggio 
news:epteni$rjl$1...@news.newsland.it...

Scusami, onde evitare incomprensioni, ti invio qui sotto quanto da me fatto, 
mi sono costruito una semplice tabella con tre campi numerici che vengono 
sommati nel campo Totale. Questo è il campo in questione. L'ho fatto solo 
come prova, ma il concetto è quello, che vengano sommati tre campi o una 
cinquntina, il comando deve agire su Totale, se Totale >100 allora 
lampeggia, altrimenti no. In linea di massima lo scopo è raggiunto. e 
sinceramente hai già fatto molto per me. Se nello stesso tempo avviene 
automaticamente, e sempre se possibile, (ma è una chicca per migliorare la 
visibilità) si cambia anche il colore dello sfondo (rosso), sarebbe il 
massimo, ma come ti ho detto, non vorrei approfittare della tua pazienza.
Grazie RC
Private Sub Form_Current()
If Me.Totale > 100 Then
Me.TimerInterval = 400
Else
 Me.TimerInterval = 0
 Me.Totale.Visible = True
End If
End Sub
Private Sub Form_Timer()
Me.Totale.Visible = Not Me.Totale.Visible
End Sub
Private Sub Totale_AfterUpdate()
If Me.Totale > 100 Then
Me.TimerInterval = 400
Else
 Me.timerval = 0
 Me.Totale.Visible = True
End If
End Sub 

 Scusami, onde evitare incomprensioni, ti invio qui sotto quanto da me fatto, 




Scusa, avevo fatto un errore. Affinché si aggiorni subito in automatico
quel codice va messo sugli eventi AfterUpdate di tutte le caselle che
contengono i dati da sommare. (in ogni caso non sarebbe andato su
Totale_Afterupdate ma su Form_Afterupdate)
Quindi ti conviene crearti un'unica sub e richiamarla da tutte le routine
Afterupdate dei vari controlli:
Private sub Aggiorna()
  if me.totale >100 then
    'grassetto
    Me.totale.FontBold = True
    'sfondo rosso
    Me.totale.BackColor = vbRed
    'lampeggia
    Me.TimerInterval = 400
  Else
    'stop al lampeggio
    Me.timerval = 0
    'togli il grassetto
    Me.totale.FontBold = false
    'sfondo bianco
    Me.totale.BackColor = vbWhite
    'rendilo visibile
    Me.Totale.Visible = True
  End If
End sub
Private sub Importo1_Afterupdate()
  Aggiorna
End sub
Private sub Importo2_Afterupdate()
  Aggiorna
End sub
Private sub Importo3.......
ecc.....
(...la sub Timer rimane uguale...)
Ciao.


 [CUT]

Ciao Marco,
credo di aver operato correttamente per quanto da te descritto, però quando 
inserisvo un nuovo dato mi veniva una finestra con questa scritta: Errore di 
compilazione - Impossibile trovare il metodo o il membro dei dati.
Mentre nel codice veniva evidenziata me.timerval=0
Ho pensato ci fosse un errore di battitura, così ho messo al posto di 
timerval=0 timerinterval=0, la cosa funziona, infatti la casella ha cambiato 
colore, però non mi fa il lampeggio e mi viene segnalato: Errore di run-time 
'2165' - Impossibile nascondere il controllo che ha lo stato attivo.
Faccio il debug e mi si posiziona su:
Private Sub Form_Timer()
Me.Totale.Visible = Not Me.Totale.Visible
End Sub
Qui sinceramente non mi raccappezzo, finchè sono errori di battitura, forse 
riesco, ma oltre proprio sono una schiappa.
Scusami ancora. RC

> [CUT]
Marco scusami, il messaggio precedente non č valido, ho riprovato a digitare 
dati e la cosa funziona a meraviglia, non so dirti perchč prima non andava.
sei stato meraviglioso e molto capace nel guidarmi, so che un grazie non 
basta, ma perlomeno, oltre a quello, ti prometto che per almeno una 
settimana non ricorrerņ al tuo aiuto, purtroppo ho quasi la certezza che 
qualcosa avrņ ancora il coraggio di chiederti in futuro.
E' perfetto, č il massimo che volevo avere, ad essere sinceri sei stato tu 
perfetto.
Grazie RC 

 Grazie RC
Scrivi, scrivi pure, non ci sono mica solo io nel ng, eheheh!
Se sei fortunato la prossima volta potrebbe risponderti qualcuno più bravo.
Però sarebbe preferibile cercare di descrivere meglio il problema già
all'inizio, dando più dettagli.
