Newsgroup: it.comp.appl.access
Titolo: contatore caratteri

Buondì a tutti
Ecco il mio problema
Vorrei che una casella di testo visualizzasse il numero di caratteri
inseriti in un'altra
Insomma un contatore tipo quello degli sms
Sull'evento change  (ma ho provato anche su KeyPress e AfterUpdate) ho
associato questo codice:
[Forms]![Inserisci]![Testo131] = 200 - Len(descestesa.Value)
If Len(descestesa.Value) = 200 Then
MsgBox "Raggiunta lunghezza massima della stringa"
Else
End If
Questo però non consente l'aggiornamento continuo all'inserimento di ogni
carattere
Ho provato  ad aggiungere
Me.Refresh
Ma quando c'è l'aggiornamento il testo viene totalmente selezionato quindi
la pressione successiva sovrascrive
Ho provando anche a spostare il focus su un'altra casella e ritorno
Settando comportamento cursore nel campo = Fine campo
La cosa già va meglio ma quando il cursore si porta sul fine campo non tiene
conto degli spazi
Questo comporta che non si riesce a inserire stringhe contenenti degli
spazi.
Qualche suggerimento?
Di già grazie!
ciao
robi

Pablitomf ha scritto:
[OPS!]
Private Sub descestesa_Change()
Dim ValMax as Integer
ValMax = 200 'Posto che il val max dei caratteri č 200
if Me.Tuo_Campo_Risultato > -1 then
Me.Tuo_Campo_Risultato = ValMax - Len(Me.descestesa.Text)
Else
MsgBox "Raggiunta lunghezza massima della stringa"
End If
End Sub
-- 
Pablitomf (Maurizio Facciuti)
“Quando non ti eserciti ricorda che qualcuno in qualche posto si sta
allenando e, quando lo incontrerai, ti batterą”.
Ed Macauley 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 carattere
Troppo caos...
fai così.
Private Sub descestesa_Change()
Dim ValMax as Integer
ValMax = 200 'Posto che il val max dei caratteri è 200
if Me.Tuo_Campo_Risultato > -1 then
Me.Tuo_Campo_Risultato = 200 - Len(Me.descestesa.Text)
Else
MsgBox "Raggiunta lunghezza massima della stringa"
End If
End Sub
-- 
Pablitomf (Maurizio Facciuti)
“Quando non ti eserciti ricorda che qualcuno in qualche posto si sta
allenando e, quando lo incontrerai, ti batterà”.


 ha scritto nel messaggio
news:co4kd0$rb9$1...@news.newsland.it...

Molte grazie funziona perfettamente!
ciao
robi

robi ha scritto:

La proprietà .value che usi contiene sempre il valore salvato in tabella e
non viene aggiornata finchè non salvi il record, quindi ti darà sempre lo
stesso numero di caratteri.
Per quello che vuoi fare tu devi usare la proprietà .text che contiene il
testo effettivamente presente all'interno della casella.
Altri consigli:
- cambia il nome al controllo Testo131, chiamalo p.e. "NumCaratteri"
- l'Else nell'if non serve se non ci metti istruzioni
- prevedi il caso in cui i caratteri siano più di 200 cambiando l'uguale
con >=
- sposta il calcolo dei caratteri dopo il test altrimenti potrebbe darti
un negativo se vengono incollati più di 200 caratteri
- puoi bloccare l'inserimento di ulteriori caratteri oltre i 200. Così
com'è adesso dà solo un avviso ma puoi continuare a scrivere.
  If Len(descestesa.text) >= 200 Then
    MsgBox "Raggiunta lunghezza massima della stringa"
    descestesa.text = left(descestesa.text,200)
  End If
  me.NumCaratteri = 200 - Len(descestesa.text)
Namor
-- 
namor at inwind punto it


 ha scritto nel messaggio
news:co4lfr$cba$1...@news.newsland.it...

Grazie per i suggerimenti
ho già provveduto a sostituire .value con .text
e funziona perfettamente
mentre i numeri negativi mi servono per evidenziare di quanto sfora la
stringa
il messaggio e il controllo più brutale è poi presente quando questa viene
inserita in tabella
ciao robi