Discussione:
aggiornare un controllo che è attivo in una maschera
(troppo vecchio per rispondere)
FANCIULLO
2007-06-20 20:34:58 UTC
Permalink
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
Cinzia
2007-06-20 21:50:18 UTC
Permalink
Post by FANCIULLO
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 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
----------------------------------------
FANCIULLO
2007-06-21 15:03:28 UTC
Permalink
Post by Cinzia
Post by FANCIULLO
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 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
se la procedura è
Function getStrElenco() as String
.....
.....
GetString = strELENCO
end function
Private Sub CasellaTesto1_GotFocus()
me.CasellaTesto1.text = GetString()
End Sub
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
Cinzia
2007-06-22 07:18:32 UTC
Permalink
Post by FANCIULLO
Post by Cinzia
Post by FANCIULLO
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 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
Post by Cinzia
function
se la procedura è
Function getStrElenco() as String
.....
.....
GetString = strELENCO
end function
Private Sub CasellaTesto1_GotFocus()
me.CasellaTesto1.text = GetString()
End Sub
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
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
--
Cinzia [Office Access MVP]
_______________________
www.riolab.org
----------------------------------------
FANCIULLO
2007-06-23 07:44:58 UTC
Permalink
Post by Cinzia
Post by FANCIULLO
Post by Cinzia
Post by FANCIULLO
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 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
Post by Cinzia
function
se la procedura è
Function getStrElenco() as String
.....
.....
GetString = strELENCO
end function
Private Sub CasellaTesto1_GotFocus()
me.CasellaTesto1.text = GetString()
End Sub
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
Ciao FANCIULLO,
potresti definirti una variabile a livello di form ad esempio
Dim lastControl as textbox
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
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
Loading...