Newsgroup: it.comp.appl.access
Titolo: Durata lampeggio

Ciao a tutti
uso Access 2003
Ho una maschera dove tramite pulsanti di scorrimento visualizzo i record di
un database.
Nell'evento su corrente, quando un determinato controllo - testo non è vuoto
appare un etichetta e il colore di fondo nel corpo della maschera da grigio
diventa giallo.
Logicamente scorrendo un altro record se non si verifica tale evento lo
sfondo torna grigio (default).
Nell'evento Timer ho messo il seguente codice:
Me.Corpo.BackColor = 8454143 = Not Me.Corpo.BackColor = 8454143
in modo che il colore di sfondo diventi da giallo grigio (default) e cosi
via (effetto lampeggio).
TimerInterval è impostato a 1000.
Vorrei che tale lampeggio duri solo 5 secondi e  che lo sfondo rimanga di
colore giallo.
Franco


Credo possa funzionare una cosa tipo:
For I = 1 To 5
Me.Corpo.BackColor = 8454143 = Not Me.Corpo.BackColor = 8454143
I = I +1
Next
Ciao Valerio.

Franco ha scritto:


Che strana questa formula. Ma funziona bene?
Per bloccare il lampeggio imposti una variabile a livello di modulo in
modo che sia visibile da tutte le sub, chiamiamola "Lampeggio".
Sull'evento corrente ne imposti il valore: Lampeggio=5 e modifichi la Sub
Timer
  if Lampeggio > 0 then
    ...cambia colore...
    Lampeggio=Lampeggio-1
  end if
Tieni conto che se il numero di lampeggi è dispari il colore si fermerà
alternativamente sul giallo o sul grigio. Se vuoi che si fermi sempre
sullo stesso colore usa un numero pari di lampeggi o aggiungi all'If un
Else per reimpostare il giallo.
Namor
-- 
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


Credo possa funzionare una cosa tipo:
For I = 1 To 5
Me.Corpo.BackColor = 8454143 = Not Me.Corpo.BackColor = 8454143


 Me.Corpo.BackColor = 8454143 = Not Me.Corpo.BackColor = 8454143
che strana formula...
Io farei cosě :
Dim i As Integer
i = 0 'imposta contatore lampeggio
giro:
If Me.Corpo.BackColor = 8454143 then
Me.Corpo.BackColor = 8454143
Else
Me.Corpo.BackColor = 8454143
End If
i = i +1
If i < 5 Then ' 5 lampeggi
goto giro:
Else
End If
..poi fai tu. ;-)
-- 
Pablitomf
Lentamente muore chi abbandona un progetto prima di iniziarlo, chi non fa
domande sugli argomenti che non conosce, chi non risponde quando gli
chiedono qualcosa che conosce. (P.Neruda)


Grazie a tutti per le risposte.
 E' vero ho sbagliato a postare il codice.
Dunque ricapitolando In corrente della Form ho inserito il seguente codice:
If --- un certo campo non č vuoto ---- then
me.etichetta.visible = true
me.corpo.backcolor = 845143 i mposta il colore a giallo
else
me.etichetta.visible= false
me.corpo.backcolor = -
2147483633
  imposta il colore a grigio (default)
end if
Sull'evento timer della Form il seguente codice
if me.etichetta.visible = true then
    if me.corpo.backcolor= 845143 then (colore giallo)
     me.corpo.backcolor = -
2147483633
  (grigio)
    else
    me.corpo.backcolor = (colore giallo)
    end if
end if
TimerInterval = 1000
Il tutto funziona.
Mi scuso con tutti, da principiante che si diletta con Access,  ma non ho
capito di come e dove inserire i vostri suggerimenti (specie i moduli) per
limitare il lampeggio a 5 secondi di durata.
Franco

 end if
Fammi sapere


 ha scritto nel messaggio
news:ccdqp3$s6$1...@news.newsland.it...

Provata la tua soluzione succede questo:
Quando il predetto controllo (collegato ad un campo) non è vuoto lo sfondo
diventa giallo, come previsto dalle istruzioni messe su corrente, e qui va
bene,
solo che poi lampeggia solo una volta, cioè passa a sfondo di colore grigio
e li si blocca.
Franco

 Franco
[CUT]
Hai ragione...
Fa una cosa, aggiungi un campo d'appoggio e come valore predefinito lo
imposti x es. a 5 (numero lampeggi che vuoi ottenere)...
Ipotizzo che tu lo abbia chiamato XXX
If me.corpo.backcolor = grigio Then
me.corpo.backcolor = giallo
me.corpo.Requery
DoEvents
Me.XXX = Me.XXX - 1 
DoEvents
Me.XXX.Requery
Else
me.corpo.backcolor = grigio
me.corpo.Requery
DoEvents
Me.XXX = Me.XXX - 1 
DoEvents
Me.XXX.Requery
End If
If Me.XXX = 0 Then
Me.TimerInterval = 0
Else: End If
------
A me funziona...
Sull'evento corrente aggiungi anche la riga di codice Me.XXX = 5 (numero
lampeggi che vuoi ottenere), così parte ogni volta con lo stesso valore a
scalare.


 Funziona alla grande.
Unica cosa ho tolto l'istruzione me.corpo.requery perchè appare il messaggio
di errore.
"Impossibile trovare il metodo o il membro dei dati"
Grazie infinite
Franco