Visualizza messaggio singolo
Vecchio 21-08-2001, 17.30.41   #6
LuFo
Newbie
 
L'avatar di LuFo
 
Registrato: 20-06-2001
Loc.: Alma Mater Tergeste
Messaggi: 49
LuFo promette bene
dunque, oltre al metodo di xegallo, io sfrutto questo sistema:

1) limitiamo il numero di caratteri immissibili nella textbox. Per la data ci bastano al massimo 10 caratteri tutti numerici con in più il separatore "/". Per questo si può benissimo utilizzare una funzione da richiamare poi nell'evento "Keypress" della TextBox.
Ecco la funzione:

Function ChkInput(vKeyAscii As Integer)
Dim StringD As String
StringD = "1234567890/"

If vKeyAscii = 8 Then ChkInput = vKeyAscii: Exit Function 'è il tasto di delete

If InStr(StringD, Chr(vKeyAscii)) = 0 Then
vKeyAscii = 0 'Non è presente nell'insieme quindi l'azzero
End If

ChkInput = vKeyAscii
End Function



Adesso crea l'evento KeyPress ed inserisci il richiamo alla funzione in questo modo:

Private Sub TxtBox_KeyPress(KeyAscii As Integer)
KeyAscii = ChkInput(KeyAscii, "N")
End Sub


In questo modo, noterai che se provi a scrivere un carattere non compreso nella stringa "1234567890/", non viene scritto nella TextBox.
Adesso per controllare se la data è corretta puoi eseguire il controllo nel momento dell'evento "LostFocus" della TextBox:

Private Sub TxtBox_LostFocus()
If TxtBox.Text = "" Then TxtBox.Text = Date: Exit Sub 'se il campo è vuoto inserisco la data odierna (opzionale)
If Len(TxtBox.Text) < 10 Or Not IsDate(TxtBox.Text) Then 'qui eseguo il controllo sulla lunghezza e sul formato della date
MsgBox "Inserire una data nel formato 'gg/mm/aaaa'", vbInformation, "Data non valida"
TxtBox.Text = ""
TxtBox.SetFocus
Exit Sub
End If
TxtBox.Text = DateValue(TxtBox.Text) 'questa funzione ordina la data in base alle impostazioni di sistema. Es.: se scrivo "10/20/2001" con le impostazioni dper la data di sistema su "gg/mm/aaaa", la funzione "DateValue" sistemerà la data in "20/10/2001"

Spero di esserti stato utile
___________________________________

Sono Mentecatto nel profondo!
:::Presidente del F.I.S.Ma.Chio. (Federazione Internazionale per la Salvaguardia della Mazza Chiodata)!:::
MSN: lufo53@hotmail.com
LuFo non è collegato   Rispondi citando