Newsgroup: it.comp.lang.visual-basic
Titolo: Come impostare il formato della data in un campo TextBox

Ciao a tutti,
ho inserito in una form alcuni TextBox nei quali vorrei obbligare l'utente a
inserire una data, oppure obbligarlo a inserire un testo anziché un numero.
Ho provato a utilizzare la proprietà DataFormat del TextBox, ma nel caso
della data non vengono visualizzate le tipiche "/" di separazione
giorno/mese/anno.
Come devo fare?
Ringrazio tutti in anticipo.
Ciao
Emiliano

 giorno/mese/anno.
Prova a utilizzare il DataPicker,
E' nei windows common control 2...
MIk

 ha digitato:

Io per evitare che utenti pazzoidi immettano valori "a cappella", agisco
sull'evento keypress. e proprio per le date utilizzo questa sub:
(naturalmente si accettano consigli su ottimizzazione o eliminazione errori)
Public Sub formatodata(casellatesto As TextBox, keyA As Integer)
If keyA = 8 Then Exit Sub
keyA = soloNum(keyA)
If keyA = 0 Then Exit Sub
Select Case Len(casellatesto.Text)
    Case Is = 0
        If keyA > 51 Then keyA = 0: Exit Sub
    Case Is = 1
        Select Case Left(casellatesto, 1)
            Case Is = "0"
                If keyA = 48 Then keyA = 0: Exit Sub
            Case Is = "3"
                If keyA > 49 Then keyA = 0: Exit Sub
        End Select
    Case Is = 2
        If InStr(1, casellatesto, "/") <> 0 Then
            Replace casellatesto.Text, "/", vbNullString
        Else
            casellatesto = casellatesto & "/"
            casellatesto.SelStart = Len(casellatesto)
            If keyA > 49 Then keyA = 0: Exit Sub
        End If
    Case Is = 3
        If keyA > 49 Then keyA = 0: Exit Sub
    Case Is = 4
        If InStr(4, casellatesto, "1") > 0 Then
            If keyA > 50 Then keyA = 0: Exit Sub
        Else
            If keyA = 48 Then keyA = 0: Exit Sub
        End If
    Case Is = 5
        casellatesto = casellatesto & "/"
        casellatesto.SelStart = Len(casellatesto)
        If keyA < 49 Or keyA > 50 Then keyA = 0: Exit Sub
    Case Is = 6
        If keyA < 49 Or keyA > 50 Then keyA = 0: Exit Sub
End Select
End Sub
Ciao, SK
--
La pasienzia non è mai troppo (Totò).
<><><>
Esistono 10 tipi di persone: chi conosce il binario e chi no.

 Emiliano
ciaociao


Ciao Marg,
senza togliere niente agli altri (che ringrazio) la tua soluzione mi č
sembrata la piů semplice e la piů efficace.
Grazie.
Emiliano

 sembrata la più semplice e la più efficace.
senza togliere nulla a marg, cosa c'è di più semplice e più efficace di un
datetimepicker?
:-)
--
Salutoni
Sergio
per rispondere... togli il group dall'indirizzo

 sub:
Sono anch'io di questo avviso: il controllo deve essere fatto tasto per
tasto (così come faccio per i valori numerici, interi, decimali, segno), ma
sono anche più esasperato, ovvero controllo il giorno (da 1 all'ultimo
giorno del mese), il mese (da 1 a 12), coerentemente col giorno impostato, e
persino che il tutto sia coerente con l'anno bisestile.

 bisestile.
mi aggiornerň per il bisestile e per gli eventuali 31/11, promesso! :-)
Ciao, SK
--
La pasienzia non č mai troppo (Totň).


 :-)
Senza togliere nulla a Sergio, oltre alle date deve gestire l'inserimento di
stringhe, numeri e tutto quello che gli pare...
<eg>  :-)
ciaociao


 Senza togliere niente a nessuno penso che
per le date il dtpicker sia la via più veloce, sia per la semplicità
sia per il fatto che è impossibile inserire date inesistenti,
per quanto riguarda i numeri e tutto il resto che gli pare allora sono
daccordo nell'utilizzare text! :)
 MIk

Ok Ok,
il dtpicker č meglio rispetto le altre soluzioni :-))
Ciao
Emiliano

 l'inserimento di stringhe, numeri e tutto quello che gli pare...
tendo, se posso, a tenere separati i dati in funzione del loro significato,
e obbligo a inserire un formato solo se c'è un motivo specifico per farlo.
un campo che può contenere date, numeri o semplice testo, indifferentemente,
è comunque impossibile da utilizzare per una ricerca, deve per forza
diventare un campo note a digitazione "libera"
detto questo, e quindi stabilito che se in un campo ci va una data ci si
deve poter mettere solo una data, ritengo che la soluzione più "facile" sia
il datetimepicker.



Sono daccordo, chissà perchè io pensavo a una situazione del tipo matrice di
Text dove ognuna deve avere un formato diverso.
In tal caso si schiaffa un bel select case sull'Index nella lostFocus e si
gestiscono tutte da lì.
Diversamente, ripeto, sono daccordo con te.
ciaociao