Newsgroup: it.comp.appl.access
Titolo: GotFocus e altri eventi su sottomaschera

Buongiorno a tutti.
Vorrei fare una domanda diretta:
Come si fa a causare gli eventi SuAttivato(GotFocus) e
SuDisattivato(LostFocus) in una sottomaschera quando passo il controllo
alla maschera principale???
Saluti.
-- 
Raffaele Alberoni
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Raffaele Alberoni
Se la maschera principale si chiama Maschera1.
Se il controllo sottomaschera contenuto in Maschera1 si chiama CtrlSubForm.
Se il controllo della sottomaschera si chiama Pippo.
Per spostare il fuoco da Maschera1 a Pippo devi generare:
Me!CtrlSubForm.SetFocus
Me!CtrlSubForm!Pippo.SetFocus
Per spostare il fuoco su Maschera1 prova con:
Forms!Maschera1.SetFocus.
Gli eventi di cui sopra si attiveranno quando rendi attivo e quando
disattivi il controllo Pippo.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 disattivi il controllo Pippo.
Grazie Roberto per la risposta, però non è esattamente ciò che cercavo.
Nel senso che spostare il "fuoco" su di un controllo di una sottomaschera
e ritornare alla maschera principale credo di saperlo fare... (tempo fa mi
avete dato preziosi suggerimenti !!!).
Però ho notato che non vengono "testati" gli eventi che dicevo.
Ho fatto una cosa di questo genere per vedere la sequenza degli eventi e
quando succedono:
- su ogni evento della sottomaschera ho messo un MsgBox "Evento...
eseguito"
per cui nell'aprire la mia maschera e relativa sottomaschera, nel gestire
aggiunte, modifiche record ecc. vedo cosa succede.
Ecco ho notato che i messaggi relativi a GotFocus e LostFocus non
"succedono" mai e mi sono chiesto il perchè e come farli a causare.
E ho chiesto un consiglio o parere al NG.


"Raffaele Alberoni" <Raff...@Romagnacom.com> ha scritto nel messaggio
news:bv6gj4$pak$1...@news.newsland.it...

In effetti va letto con molta attenzione tutto quello che dice l'help
relativamente agli Eventi Attivato, Disattivato (italiano), ed in modo
particolare questo paragrafo:
===============
<omissis>
Se il controllo della sottomaschera su cui ci si è spostati precedentemente
aveva lo stato attivo, non si verifica né l'evento Invio né l'evento
Attivato, ma si verifica l'evento Invio del controllo della sottomaschera.
Se si sposta lo stato attivo da un controllo di una sottomaschera a un
controllo di una maschera principale, gli eventi Uscita e Disattivato del
controllo della sottomaschera non si verificano. Si verificano solo l'evento
Uscita per il controllo della sottomaschera e gli eventi Invio e Attivato
per il controllo nella maschera principale.
<omissis>
==============
Da quanto sopra scritto si evince che non si verifica l'evento Attivato se
il controllo della sottomaschera su cui ci si è spostati aveva già
precedentemente lo stato attivo. Ed inoltre è evidenziato il fato che "Se si
sposta lo stato attivo da un controllo di una sottomaschera a un controllo
di una maschera principale, gli eventi Uscita e Disattivato del controllo
della sottomaschera non si verificano.".
Quindi per risolvere il tuo problema, penso che la cosa migliore per far
verificare gli eventi Attivato e Disattivato di un controllo di una
sottomaschera sia quello di far transitare, in maniera fittizia, il fuoco
anche per un'altro controllo contenuto nella sottomaschera.
Ovvero, se la maschera principale si chiama Maschera1 e contiene un
controllo sottomaschera chiamato CtrlSubForm.
Se il controllo della sottomaschera cui si vuole spostare il fuoco (pigiando
un pulsante di comando posto su Maschera1 e chiamato Cmd1) si chiama Ctrl1.
Se la sottomaschera contiene anche un controllo chiamato Ctrl2.
Se il controllo di Maschera1 sul quale ci si vuol spostare (pigiando un
pulsante di comando posto sulla sottomaschera chiamato Cmd2) si chiama
Ctrl3.
Per spostare il fuoco da Maschera1 al controllo Ctrl1 della sottomaschera, a
fronte dell'evento "Su clic" del pulsante di comando Cmd1 genera il seguente
codice VBA:
Private Sub Cmd1_Click()
Me!CtrlSubForm.SetFocus
Me!CtrlSubForm!Ctrl2.SetFocus
Me!CtrlSubForm!Ctrl1.SetFocus
End Sub
Invece per spostare il fuoco dal controllo Ctrl1 della sottomaschera al
controllo Ctrl3 di Maschera1, a fronte dell'evento "Su clic" del pulsante di
comando Cmd2 genera il seguente codice VBA:
Private Sub Cmd2_Click()
Me!Ctrl2.SetFocus
Forms!Maschera1!Ctrl3.SetFocus
End Sub
Così facendo, dopo aver pigiato il pulsante Cmd1 della maschera principale
il fuoco si sposterà sul controllo Ctrl1 della sottomascherà e si
verificherà il suo evento "Su attivato"; inoltre, dopo aver pigiato il
pulsante di comando Cmd2 della sottomaschera il fuoco si sposterà dal
controllo Ctrl1 della sottomaschera al controllo Ctrl3 della maschera
principale, ma prima si verificherà l'evento "Su disattivato" del Controllo
Ctrl1.
Puoi anche vedere di trovare soluzioni diverse usando, invece dgli eventi
"Su attivato" e "Su disattivato", gli eventi "Su invio" e "Su uscita" dei
controlli, seguendo appunto quanto scritto sull'help circa gli Eventi
Attivato, Disattivato (italiano).
Resta comunque il fatto che, se gli spostamenti da maschera e sottomaschera
(e viceversa), si effettuano con il mouse la mia soluzione perde di
signidicato.
In questo caso forse sarebbe bene sapere cosa vuoi fare a fronte degli
eventi "Su attivato" e  "Su disattivato" di Ctrl1: magari si possono usare
altri eventi.


 ==============










A pero'... questa si che è una risposta con tanto di spiegazione, ...
bene per stasera invece di dire le preghiere studiamo sta cosa !!!
Ovviamente è un modo scherzoso per ringraziarti della tua disponibilità a
chiarirmi in maniera esauriente sta cosa!!!
Saluti


 Raffaele Alberoni
