Newsgroup: it.comp.appl.access
Titolo: bug semplice ma irrisolvibile? casella combinata

in una casella combinata
con settaggi solo in elenco
con il seguente codice sull'evento click
Sub CLICK
msg screen.activecontrol
testo10=me.casellacombinata
end sub
se clicco ho
giustamente: msg = Nome CasellaCombinata
e inserimento valore dentro Testo10
se dopo aver digitato le iniziali di una voce in elenco e dopo
che mi appare il nome esteso nella riga dove ho digitato; ma
n.b. non apro la finestra elenco e non clicco su tale nome,
ma clicco su un altro controllo (ad esempio testo22)
dà
erroneamente:
msg = Nome CasellaCombinata
e inserimento valore dentro Testo10
cioà esegue il codice che n.b. si trova dentro all'azione CLICK
sulla casella combinata
in un certo senso è come se Access(97) n.b.  ha capito che deve passare
il focus ad un
altro controllo, non gliene frega niente se non ho cliccato, tiene
ancora un attimino il
focus (così indica appunto l'activecontrol) sulla cascombinata, si
esegue il codice
e DOPO solo dopo sposta il focus sull'altro controllo
e risottolineo ho solo il codice CLICK e nessuno after befor focus od
altro
per questo in post precedenti non essendo suficiente l'activecontrol
volevo vedere se c'era un modo non tanto per sapere se il focus è in un
controllo
in quanto furbescamenete access lo lascia un attimino prima di farsi i
ca__i suoi
e poi lo sposta; ma un metodo proprietà che riconoscesse il click
eseguito
sul mio controllo: qualcosa del tipo If  casellacombinata click = true
then
………
spero di essere stato chiaro
(per biso, mi sa che questa volta mi ci sbatto e ripetutamente io per
terra,
 in quanto credo che nessuna santità (ogni riferimento a fatti, persone
o cose è
puramente casuale) nulla potrà)
in un post precedene si chiedeva qual era il problema
è il seguente e non di poco conto quanto ti capita spesso di dover
rivalutare un inserimento non voluto
n.b. se io digito una parola, poi mi ripenso e non la voglio inserire e
quindi non clicco mam i sposto su di un altro controllo, ecco che me
la ritrovo inserita comunque


Non ho letto ciò che segue in qualche manuale (nel senso che non sono sicuro
che sia così), però....:
La combo normalmente viene usata per scegliere un valore digitando le
iniziali: se l'utente trova il record che gli interessa da Invio o Tab e il
record è accettato. Stando così le cose appena la combo trova un record che
inizia per quella lettera assume quel valore (prova ad inserire un punto di
interruzione sul codice, digitare una lettera e fare click su un altro
controllo: vedrai che la combo ha già il valore del record che ha trovato),
e MENO MALE dico io, altrimenti bisognerebbe costringere l'utente a
confermare la scelta ogni volta. Ho provato a pensare a come risolvere il
problema (mi pare che nel post precedente di cui parli fossi già
intervenuto), ma se le combo funzionano così secondo me l'unico modo è
proprio obbligare l'utente a confermare la scelta.
Private Sub CasellaCombinata_AfterUpdate()
Dim intRisposta As Integer
intRisposta = MsgBox("Confermi la scelta?", vbYesNo + vbDefaultButton2)
    If intRisposta = vbNo Then
        Undo
        Exit Sub
    End If
    Testo10 = Me!IDFrntr
End Sub
Naturalmente nel caso il valore inserito non sia nell'elenco viene scatenato
prima l'evento su non in elenco e devi gestire prima quello.
Fammi sapere, Ciao Paolo