Newsgroup: it.comp.appl.access
Titolo: Sfondo giallo quando il componente è attivo

In una maschera con molti controlli edit, combo e check box vorrei che
quando ognuno di questi viene selezionato diventi giallo e ritorni bianco
quando perde il focus come faccio ad impostare una routine che sia valida
per tutti i controlli?
Ringrazio chi risponde.
Marco

non sono sicuro se funziona comunque prova
dovresti mettere sulla proprieta attivato
me.nomecontrollo.backcolor = qui metti il numero del colore che vuoi (lo
leggi sulla proprietà
backcolor della casella in base al colore scelto)
e invece sulla proprità disattivato
me.nomecontrollo.backcolor = qui metti il numero del colore che vuoi (lo
leggi sulla proprietà
backcolor della casella in base al colore scelto)
non so se vale anche per la proprietà invi e uscita comunque prova e fammi
saperr

Funziona ma non è esattamente quello che vorrei perchè in questo modo devo
ripetere il codice per ogni singolo componente e dato che ne ho molti il
lavoro si moltiplica, quello che sto' cercando di ottenere è una routine
generale a cui possa far riferimento ogni singolo componente. Bye
Marco

 ha scritto nel messaggio
news:8smasf$eri$1...@nslave3.tin.it...

Prova a impostare a trasparente lo sfondo di tutti i controlli.
Vedrai che succede una cosa interessante che, forse, puo' risolverti il
problema.
Ciao, Sib

"MT" ha scritto nel messaggio ...

La soluzione che ho trovato non è il massimo, ma in fondo in fondo funge.
:-)
***************************
Private Sub Form_Timer()
On Error GoTo esci
If Screen.ActiveControl.ControlType >= 109 And
Screen.ActiveControl.ControlType <= 111 Then
    If Screen.ActiveControl.BackColor <> RGB(255, 255, 0) Then
Screen.ActiveControl.BackColor = RGB(255, 255, 0)
End If
If Screen.PreviousControl.ControlType >= 109 And
Screen.PreviousControl.ControlType <= 111 Then
    If Screen.PreviousControl.BackColor <> RGB(255, 255, 255) Then
Screen.PreviousControl.BackColor = RGB(255, 255, 255)
End If
esci:
Exit Sub
End Sub
***************************
Puoi sceglierti qualsiasi colore di sfondo e funziona per tutti e tre i tipi
di controlli di cui parlavi.
Nell'Intervallo timer metti un valore molto basso (ti consiglio 1 (uno) )
Cià
RoDAgo

Sull'evento click della maschera
if Screen.ActiveControl.BackColor = colorebianco then
   Screen.ActiveControl.BackColor = coloregiallo end if
(non ho controlllato la proprietà activecontrol però se
da un post che inviatoti svolge la funzione di riconoccere
quale dei controlli ha lo stato attivo allora funziona eventualmente
sostituisci con previouscontrol)
l'unico difetto e che funziona solo se per scegliere
i valori usi il mouse quindi se passi
da un valore all'altro da tastiera non va bene prova però
a vedere sulle proprietà della maschera sè c'è un evento
che tiene conto quando viene premuti il tasto tab o invio o freccia,; insomma
quelle azioni che possono spostare il focus delle caselle. se trovi qualcosa
allora inserisci anche su tali eventi il codice riportato sopra

 che tiene conto quando viene premuti il tasto tab o invio o freccia,; insomma
prova con eventi:tasto giu e/o su pressione

 prova con eventi:tasto giu e/o su pressione
Mi permetto di puntualizzare quattro cosettine, bada che non voglio essere
polemico. :-)
1. il codice che consigli di inserire nell'evento Su clic nella maschera,
non mi sembra funzionante
2. in ogni caso duplicheresti il codice sia nell'evento Su tasto giù e Su
pressione
3. non tieni conto che la proprietà backcolor non è posseduta da tutti i
controlli, se per esempio sposti il focus su un Pulsante di opzione, Access
ti bloccherà segnalandoti un errore.
4. diamo una lettura alla tua affermazione:
    <<(non ho controlllato la proprietà activecontrol però se
    da un post che inviatoti svolge la funzione di riconoccere
    quale dei controlli ha lo stato attivo allora funziona eventualmente
    sostituisci con previouscontrol)>>
    anche questa frase mi ha lasciato un pò interdetto, difatti devi usare
ambedue le proprietà per impostare il colore (giallo) del controllo
selezionato e reimpostare (bianco) quello del controllo precedente.
A questo punto ti volevo chiedere, hai provato la soluzione che avevo dato
prima dei tuoi 2 repost?
C'è qlcs che non va nella mia risposta?
Perchè hai risposto a me e non ad MT?
Ti riposto il codice da inserire nell'evento Su Timer:
On Error GoTo esci
If Screen.ActiveControl.ControlType >= 109 _
        And Screen.ActiveControl.ControlType <= 111 _
        Then If Screen.ActiveControl.BackColor <> RGB(255, 255, 150) _
        Then Screen.ActiveControl.BackColor = RGB(255, 255, 150)
If Screen.PreviousControl.ControlType >= 109 _
        And Screen.PreviousControl.ControlType <= 111 _
        Then If Screen.PreviousControl.BackColor <> RGB(255, 255, 255) _
        Then Screen.PreviousControl.BackColor = RGB(255, 255, 255)
esci:
Metti 1 come intervallo Timer e funziona tutto perfettamente.
Ciao
RoDAgo


ciao

End If
Un consiglio: dai un'occhiata a with sull'help <:-D
Ciao Robbi ;-)
--
Lorenzo Coronati
--
<<Come posso dunque sprotegere il database? 
Esiste un crack o qualcosa del genere 
che mi faccia accedere ai dati?>>
(Cocco, 17/10/2000)
--

ciao
Bye, bye
RoDAgo
ps. alla luce di quel rompi di LoreCoro ;-) il codice diviene molto piů
snello in questo modo:
*****************************
On Error GoTo esci
With Screen.ActiveControl
If .ControlType >= 109 And .ControlType <= 111 Then _
    If .BackColor <> RGB(255, 255, 150) Then .BackColor = RGB(255, 255, 150)
End With
With Screen.PreviousControl
If .ControlType >= 109 And .ControlType <= 111 Then _
    If .BackColor <> RGB(255, 255, 255) Then .BackColor = RGB(255, 255, 255)
End With
esci:
******************************
*OPPURE*
******************************
On Error GoTo esci
With Screen
If .ActiveControl.ControlType >= 109 _
        And .ActiveControl.ControlType <= 111 _
        Then If .ActiveControl.BackColor <> RGB(255, 255, 150) _
        Then .ActiveControl.BackColor = RGB(255, 255, 150)
If .PreviousControl.ControlType >= 109 _
        And .PreviousControl.ControlType <= 111 _
        Then If .PreviousControl.BackColor <> RGB(255, 255, 255) _
        Then .PreviousControl.BackColor = RGB(255, 255, 255)
End With
esci:
**************************
*OPPURE in modo molto conciso*
**************************
On Error GoTo esci
With Controllo_Chiddu_chi_dicu_io
    if .AttivoAstutato then .AttivoAddumato=False
    if .PrecedenteAddumato then .PrecedenteAstutato=True
End With
esci:
***************************
Quest'ultimo non l'ho verificato. (molto probabilmente lo capirŕ soltanto
Sib  ;-))

 Lorenzo Coronati
RoDAgo

 scatenare guerre.
Fiuuuuuuuuuu!!!!!! (sospiro di sollievo)
C'č mancato poco
Capperi questa volta mi č andata veramente bene
Che per caso lavori nei reparti speciali antisommosse e/o di prima incursione
negli attacchi militari.
Mi sa tanto che RoDAgo
sta per :
Reparti Operativi D'Attacco per Guerra ad Oltranza
oppure
Reparti Operativi Distruttivi Antisommosse Guerre ed Oltre
ciao

Adesso sono io che necessito di un supporto informativo
(comunque posterò il quesito)
da una tab_1
c1          c2
1           2, 4, 5
2
3
4           6
5
6
devo avere un tab_2
c1          c2
1           2, 4, 5
2           1, 4, 5
3
4           6,  1,  2, 5
5           1, 2, 4
6
praticamente tutti i valori che ho in c2, a cui corrisponde un c1,
devo riscrivere la riga nel corrispondente c1,
la riga del c2 va quindi su c1 quando in corrispondenza di c2=c1,
eliminando i valori doppi e mantenendo i valori che già ho in c1, esempio
il 4 di c1 avendo il 6, in tab_2 mantengo tale valore oltre ad
aggiungere la riga dei valori del 4 di c1 che si trova in c2.
Esempio più approfondito:
Da Tab_1:
Tab_1
c1            c2
---1           2, 4, 6, 8
---2           5
---3           1, 5
---4           7
---5           6
---6           niente
---7           3
---8           4, 5
Riassegno, per ogni valore in c1 che ho anche in c2, tutti i valori della riga
dove c1 si trova in c2
senza considerare le ripetizioni.
Devo Avere:
Tab_2
c1            c2
---1           2, 4, 6, 8, 3, 5
---2           5, 1, 4, 6, 8
---3           1, 5 , 7 , 3
---4           7, 1, 2, 6,  8, 5
---5           6, 2 , 3, 1, 8, 4,
---6           1, 2, 4,  8, 5
---7           3, 4
---8           4, 5, 1, 2, 6
Evidenzio i passaggi di assegnazione:
I numeri ripetuti nella riga non vanno riscritti
Tab_2
c1            c2
---1           2, 4, 6, 8     3, 1, 5
---2           5,                1, 2, 4, 6, 8
---3           1, 5             7 , 3
---4           7,                1, 2, 4, 6, 8                    8, 4, 5
---5           6                 2 , 5                3, 1, 5     8, 4, 5
---6                              1, 2, 4, 6, 8     5, 6
---7           3                 4,  7
---8           4, 5             1, 2, 4, 6, 8
questo modo di prendere i dati da c2 e rimetterli
nei valori di c1 che ho da l  stesso, va poi ripetuto
per gli tutti gli altri c1 (che hanno dei valori) e
quando rimetto i valori in c1, se ci sono già dei dati devo mantenerli
(e fare in modo quindi di non avere valori doppi)
--------------------------------------------------------------------------
ciao





Dop il  pericolo scampato da probabile guerra,
scarico le mie cartucce, sparando quest'ulteriore post che
 riposterň.
A proposito di battaglie, hai visto quante cartuccie marca
post avevo in canna (la guerra sarebbe stata dura, ma con i reparti
speciali solo un miracolo mi avrebbe salvato).
2 (e le ultime), le ho sparate qui, visto che il terreno č (anzi era) ottimale.
Simulare una msgbox con una mia maschera
Dalle FAQ, ho usato il codice che fa apparire un messaggio, che mi
chiede se voglio salvare i dati
appena modificati in una maschera.
Tutto ok
Solo che ora volevo ricostruire una maschera simile con i tre pulsanti
di scelta.
Ho provato, ma mentre con il codice da faq, quando modifico i dati ad
esempio nel record n.5 di maschera_base,
passo al record successivo, si apre la msgbox che mi consente o di
salvare la modifica, o di ritornare a maschera _base, o di annullare le
modifiche fatte.
Nel momento in cui si apre la msgbox, dietro alla stessa continuo a
vedere masch_base che rimane sul record 5 e solo se clicco su: Si
Accetto Modifiche, la maschera si posiziona sul record 6.
Invece, se creo una mia maschera (simile) e sull’evento
Form_BeforeUpdate di masch_base la apro, praticamente il record di
maschera base, passa subito a quello successivo, ed č chiaro che a
questo punto non posso, o meglio non so piů, come fare a ricreare i 3
pulsanti con le rispettive azioni simili a quelli della msgbox.
Eppure il codice che apre la msg e la maschera_simile č sempre dentro lo
stesso evento Form_BeforeUpdate di masch_base; la msgbox perň intercetta
l’evento, mentre la maschera_simile no.
Quindi devo risolvere sia il problema di intercettazione (come fa la
msgbox) e sia poi
il codice da inserire dentro i 3 pulsanti.
-----------
Riporto a titolo informativo l’oggetto e il codice della FAQ
E' possibile far apparire un messaggio che mi chiede se voglio salvare i
dati appena modificati in una maschera? Autore: Federico Luciani [
fluciani @
libero.it
] Ogni volta che Access cerca di salvare un record,
viene generato l'evento BeforeUpdate (Prima di aggiornare) prima che il
record venga realmente salvato.
Quindi se vogliamo annullare l'aggiornamento del record, ci basta
intercettare questo evento.
Private Sub Form_BeforeUpdate(CANCEL As Integer)
Dim retValue As Integer
   Dim strTtl As String
   Dim strMsg As String
   strTtl = "Salvare il record?"
   strMsg = "I dati sono cambiati." & vbCrLf & _
            "Vuoi salvare le modifiche?"
   retValue = MsgBox(strMsg, vbQuestion + vbYesNoCancel, strTtl)
   Select Case retValue
       Case vbYes
           'non fare nulla
       Case vbNo
           DoCmd.RunCommand acCmdUndo
       Case vbCancel
           CANCEL = True
   End Select
End Sub
------------
Ringrazio in anticipo

scusate per la ripetizione dei tre post
(col cavolo di parlare di guerra, cartucce e spari,  mi sa che
ho sparato anche qualche post di troppo)
di nuovo scusa