Newsgroup: it.comp.lang.visual-basic
Titolo: caselle di testo

come posso determinare che nella mia casella di testo text1 siano inseriti
solo valori numerici
grazie a chi saprą aiutarmi

 grazie a chi saprą aiutarmi
Premendo F1 !

 solo valori numerici
Consiglio l'ottimo esempio di F.Balena nel capitolo sul subclassing del
libro "Programmare in visual basic 6.0"......
in alternativa: intercettare tutte le pressioni di tasto all'interno del
controllo e scartare quelle che non sono numeri
oppure: intercettare l'evento validate e verificare il contenuto del
controllo
Probabilmente ci sono anche altri modi, ciascuno con pregi e difetti, il
primo è (imho) il migliore, ma non saprei spiegartelo in un post....
Salutoni
Sergio

Eccoti un esempio, fatto dalla mia collega, che saluto!!! :-)
Private Sub cmdConnetti_Click()
        Dim miaVar As String
 
        miaVar = txtNum.Text
        If Asc(miaVar) >= 48 And Asc(miaVar) <= 57 Then
                MsgBox "E' un numero."
            Else
                MsgBox "E' una lettera."
        End If
 
End Sub
ciao
--------------------------------
Inviato via 
http://usenet.libero.it

 End Sub
Saluto anch'io la tua collega, ma questo funziona solo su un textbox gią
compilato, solo sul primo carattere del suo contenuto e premendo
esplicitamente il bottone cmdConnetti.
Sposterei il tutto nell'evento KeyPress (o KeyDown) del textbox.

 solo valori numerici
if not isnumeric(text1) then
    msgbox "Non numero"
else
    msgbox "Numero"
endif
beppe

 solo valori numerici
oppure
If IsNumeric(Text1.Text) Then
ciao

 grazie a chi saprŕ aiutarmi
Se fai questa domanda č evidente che non hai
basi solidissime di programmazione in VB
perciň, per ora, č meglio lasciar perdere il
subclassing.
Ti posso consigliare di testare l'intera stirnga
introdotta sfruttando un evento (per esempio
il click di un pulsante) ma attenzione devi assicurarti
che l'utente sia obbligato a generare quest'evento
(per esempio rendendo disable tutto tranne il pulsante)
A questo punto il gioco č fatto, ti crei un loop determinando
la lunghezza del testo introdotto (funz.Len), estrai carattere
per carattere la stringa (funz.Mid) e controlli se corrisponde
ad un carattere (funz.Asc) nel momento in cui trovi un carattere
non valido esci dal Loop, informi l'utente e pulisci la TextBox.
Tutto quello che ti ho spiegato non serve a nulla se hai
il controllo MaskEdBox (penso dipende dalla versione di VB
con la Enterprise c'č) che fa giŕ tutto lui.
Comunque mano ai manuali e cerca sempre prima con
Google -> Gruppi -> it.comp.lang.visual-basic
JKLJKL

 solo valori numerici
Se devo accettare solo valori numerici interi (quindi senza virgole, 
punti, ecc, ecc) io uso le api e ottengo quello che mi serve in maniera 
velocissima:
'dichiarazioni
Public Const GWL_STYLE = (-16)
Public Const ES_NUMBER = &H2000
'in genere in un modulo
Public Sub ImpostaTextBoxNumerico(txtOrigine As TextBox)
    Dim lHwnd As Long
    lHwnd = GetWindowLong(txtOrigine.hwnd, GWL_STYLE)
    SetWindowLong txtOrigine.hwnd, GWL_STYLE, lHwnd Or ES_NUMBER
End Sub
e poi dove mi serve avere un textbox numerico:
ImpostaTextBoxNumerico txtMioTextBox
-- 
 __   __  ___   
|  | |  |/ __|  
|  |_|  |\__ \  ICQ #73176037 #162857023
|____|__||___/ 

 solo valori numerici
Private Sub Text1_KeyPress(KeyAscii As Integer)
   If KeyAscii < Asc("0") Or KeyAscii > Asc(9) Then
      KeyAscii = 0
   End If
End Sub
Ciao
*Roby*

 ha scritto nel messaggio
news:alks1l$1qsf72$1...@ID-94194.news.dfncis.de...

CTRL+V ?
Alberto

 CTRL+V ?
Non fa niente. Non fanno piů niente neppure Ctrl-X, Ctrl-C, o il BackSpace.
Volendo perň si possono riabilitare:
If (KeyAscii < Asc("0") Or KeyAscii > Asc(9) ) and _
   KeyAscii<>8 and KeyAscii <> 3 and KeyAscii <> 24 then
   KeyAscii =0
Endif
Cosě lasci passare CtrlX, CtrlC e BackSpace
Ciao
*Roby*

 Volendo però si possono riabilitare:
Va beh....
la mia era una provocazione, nel senso che mi sembra un modo molto brutale
di impedire le lettere nella textbox.
Ad esempio, tu intercetti il CTRL+V, ma non il tasto destro -> incolla (che
molti usano), così come impedisci anche che l'utente utilizzi il punto e/o
la virgola (che però effettivamente potresti riabilitare...).
Qualche tempo fa c'è stato un bel thread, ed io avevo postato una function a
cui viene passata byval la stringa Text1.Text, e la function ritorna un
Double col valore contenuto.
Nella function, considero la presenza di punti, virgole, e la loro posizione
e quantità (la maggior parte dei programmi fanno dei controlli usando solo
isnumeric, che in realtà lascia passare una serie di stringhe non
convertibili in numerico, tipo "123....3...3....3"), e calcola il valore
corrispondente. Se la stringa non è valida la function ritorna 0.
Ciao
Alberto

Se proprio si deve, allora:
Private Sub Text1_KeyPress(KeyAscii As Integer)
   If KeyAscii < 48 Or KeyAscii > 57 Then
      KeyAscii = 0
   End If
End Sub
stefano.

 di impedire le lettere nella textbox.
Si, hai ragione.
Anche io mi sono scritto un mio OCX di wrapping del textbox che permette di
settare eventuali filtri ai caratteri, con delle routine un pò più
intelligenti di quella che ho postato. Mi piace peraltro molto anche il
sistema che ha postato Lis.
Il bello del NG è che da domande anche banali escono discussioni
interessanti
Ciao
*Roby*

 ha scritto nel messaggio
news:all7k9$1rj7sk$1...@ID-94194.news.dfncis.de...

grazie per le utili informazioni che mi avete postato, ancora una domanda,
come si creano gli ocx?

 come si creano gli ocx?
Trovi un testo minimo qui:
http://visualbasicpoint.supereva.it/Html/Lezioni/OCX.htm
Qui trovi un mio messaggio di qualche tempo fa:
http://groups.google.com/groups?selm=9j2n6a%24lpslp%241%40ID-94194.news.dfnc
is.de
Comunque trovi tutto sulla documentazione in linea di VB, seguendo l'albero
in questo modo:
Visual Basic Documentation
 - Using Visual Basic
   - Component Tool Guide
Ciao
*Roby*

 ha scritto nel messaggio
news:alneik$1rtm88$1...@ID-94194.news.dfncis.de...

grazie č quello che cercavo
ps il collegamento al tuo messaggio non funziona

 ps il collegamento al tuo messaggio non funziona
Soprattutto se non rimetti su una unica riga le lettere che sono andate a
capo.
Alberto