Newsgroup: it.comp.lang.visual-basic
Titolo: !!! Urgente (difficile) - Formattazione durante la digitazione

Salve a tutti, ho un problema che mi assilla da un bel po' di tempo:
Ho la necessità di formattare importi, date, ore nel formato consono durante
la digitazione es:
se devo digitare 01/02/2001 la textbox dovrebbe mettere le / una dopo l'1 e
una dopo il 2 senza però permettermi di cancellare le / o farmele digitare e
permettendomi di digitare solo numeri. Questo anche per:
Importi (in euro) ................152.000,52
Ore (
hh.mm
) ..............................23.58
Ore che superino le 24 ............ 160.40
Accetto volentieri consigli, link utili ed esempi.
Grazie mille anticipatamente

 ha scritto nel messaggio
news:c7W08.30110$cU4.1...@twister1.libero.it...


Ti fai delle routine di formattazione delle stringhe che indipendentemente
dal sistema operativo e dalle impostazioni internazionali, ti formattano
la stringa come ti pare.
Ci devi lavorare un pò su, ma il risultato è sicuramente meglio di alcune
funzioni native di VB che si basano sulle impostazioni internazionali, tipo
il formatCurrency.
Ciao
Andrea


Non so se ho capito bene, ma tu mi dici di analizzare la stringa inserita e
di formattarla a mio piacimento. Ancora però non ho ben chiaro il concetto,
mi potreesti fare un esempio ?
Grazie

 End Sub
Ti ringrazio per il suggerimento, ma cosě puoi aggiungere un numero solo
alla fine della stringa.
Grazie comunque

 permettendomi di digitare solo numeri. Questo anche per:
Una volta esisteva un controllo chiamato maskedit per fare questo, poi lo
hanno tolto poichè andava troppe volte in crash eheheh
Esistono degli ocx che fanno quello che dici tu, ma spesso sono legati
strettamente alle impostazioni internazionali e non sono sempre
soddisfacenti.
Per le date la solzuione è semplicissima 3 txtbox senza bordi messe dentro
una picture box con i bordi dove dentro ci fai picture1.print "11/11/1111"
in modo che le barrette corrispondano agli spazi tra le 3 txtbox senza bordi
e che tutto sempri una unica textbox.
Poi gestisci l'evento keypress di ogni textbox per permettere solo
numeri,bacspace,del e tabulatore e spazio perpassare al campo successivo
senza finrie la digitazione. Se il textbox è pieno nell'evento change fai il
setfocus al campo successivo. L'unica pecca di questo metodo laborioso è che
comunque poi devi fare il test di tutta la data da qualche parte e se non
puoi farlo su un campo invio sei fregato.
Nell'ufficio dove lavoravamo avevamo sostituito i maskedit con sto metodo.
Per gli importi la cosa è molto + complessa ma potresti usare formattazioni
al volo memorizzando prima della formattazione la posizione del cursore per
poi cercare di rimetterla dove era ma impazzirai con keypress e change
events te l oassicuro.
Per ovviare a tutto cio' forse il tuo cliente puo' accontentarsi di questo
sub txtData_Lostfocus
if not isdate(txtData) and trim(txtData) <> "" then
  msgbox "Data Errata!"
  txtdata.setfocus
  exit sub
end if
if isdate(txtData) then txtData = format(txtData,"DD/MM/YYYY")
end sub
con il controllo che non sia uguale a "" dai una scappatoia per lasciare il
campo vuoto ed evitare i msgox infiniti in caso di rincoglionimento del
utente.
Spero di esserti stato anche minimamente d'aiituo.
/

 wrote in message
news:i7018.32181$cU4.1...@twister1.libero.it...


 Ti ringrazio per il suggerimento, ma così puoi aggiungere un numero solo


 ha scritto nel messaggio
news:a23k8s$ugeco$1...@ID-61006.news.dfncis.de...


 programma (per le prestazioni)
Sicuramente l'OCX ti permette di tenere sotto controllo eventuali errori di
formattazione, e se fatto bene ti consente addirittura di alleggerire il
progetto.
Prova a pensare se scopri un errore nella tua routine, o se vuoi intercettare
altri tipi di eventi... dovresti modificare tutti i TextBox aggiungendo il
codice necessario. Se scrivi un OCX, aggiorni solo quello e non è necessario
nemmeno ricompilare il programma.
Forse ti conviene fare le routine per la formattazione (che comunque vanno
scritte), e poi eventualmente inglobare tutto in un OCX.
Michele
--
Per l'e-mail togli "xxx".
Home page: 
http://spazioweb.inwind.it/fochinet

 ha scritto nel messaggio
news:P1G18.3145$ly.7...@twister1.libero.it...
