Newsgroup: it.comp.appl.access
Titolo: aggiornare un controllo che è attivo in una maschera

Salve sono Fanciullo
Ho una maschera con due controlli non associati.
i due controlli si chiamano CasellaTesto1    e CasellaTesto2
In questi due controlli
inserisco del valori ottenuti con un recordset
questo è lo spezzone di codice.
............
With rst
strELENCO = ![CT]
strELENCO = strELENCO & " " & ![CF]
strELENCO = strELENCO & " " & ![CRP]
strELENCO = strELENCO & " " & ![CTA]
End With
Me.CasellaTesto1  = strELENCO
Ora io vorrei che la casella di testo fosse aggiornta dinamicamente
in dipendenza del cursore posizionato in una delle due.
Mi spiego meglio:
mi metto con il cursore nella CasellaTesto1
quindi
Me.CasellaTesto1  = strELENCO
mi metto con il cursore nella  CasellaTesto2
quindi
Me.CasellaTesto1  = strELENCO
come faccio a renderlo dinamico via codice?
Grazie


Ciao FANCIULLO,
metti il codice sopra in una function che restituisce la stringa e 
nell'evento su Attivato assegni al text del tuo controllo il risultato della 
function
es:
se la procedura č
Function getStrElenco() as String
        .....
            .....
        GetString = strELENCO
end function
Private Sub CasellaTesto1_GotFocus()
    me.CasellaTesto1.text = GetString()
End Sub
-- 
Cinzia [Office Access MVP]
_______________________
 
www.riolab.org
---------------------------------------- 


Ciao Cinzia,
mi sono dimenticato di aggiungere che
1) devo per forza usare un pulsante di comando
2) altri eventi sono occupati , il doppio click per esempio
(per il tuo: non sempre devo attaccare il codice, ma quando lo decido io)
leggendo la guida avevo trovato questa formulazione (activeControl)
........................
Private Sub cmdINSERISCITUTTO_Click()
Dim ctlControlloCorrente As Control
Dim strControlName As String
Set ctlControlloCorrente = Screen.ActiveControl
strControlName = ctlControlloCorrente.Name
If strControlName = "CasellaTesto1" Then
 Me.CasellaTesto1  = strELENCO"
ElseIf strControlName = "CasellaTesto2" Then
 Me.CasellaTesto2  = strELENCO"
End If
andrebbe bene, se non fosse il fatto che quando faccio click sul
pulsante di comando mi sfugge lo stato di controllo attivo
dalla casellaTesto1 .....quindi non funziona
allora Cinzia devi pensare qualcosa da abbinare al  pulsante di comando
grazie
End Sub

> se la procedura č

Ciao FANCIULLO,
potresti definirti una variabile a livello di form ad esempio
Dim lastControl as textbox
sull'evento got_Focus dei due controlli interessati metti:
lastcontrol = me.CasellaTesto1   //  me.casellatesto2  per l'altro
in questo modo in LastControl hai un puntatore all'ultimo controllo che ha 
avuto lo stato attivo
sul click del bottone  INSERISCITUTTO
lastControl.text = strELELNCO


 >> se la procedura è

Ciao Cinzia,
ha funzionato tutto ma ho dovuto modificare così:
set lastcontrol  =  me.CasellaTesto1 ' senza set mi diceva che era
impossibile assegnare un valore
e poi
lastControl.value = strELENCO ' con text come metodo mi dava errore
Lezione della favola:
ho imparato che la casella di testo "fisica"  me.CasellaTesto1  viene resa
uguale
a una variabile in memoria che diventa dinamica diventanto a seconda
dell'evento
got_focus ora uguale a me.CasellaTesto1 ora a me.CasellaTesto2.
Ancora più terra terra: ho uno spazio in memoria che mi memorizza una specie
di copia della me.CasellaTesto1 o me.CasellaTesto2, infatti diventa la
stessa
cosa digitare:
Me.CasellaTesto1  = strELENCO
LastControl.value = strELENCO
infatti in un primo momento mi sono anche chiesto:
come cavolo fa la CasellaTesto1  a riempirsi se i valori  di strELENCO
sono nella variabile lastControl???
Grazie, ma quanta fatica si fa ad imparare ad una certa età........eh eh