Mislim da je ovako najjednostavnije
Code:
Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 48 To 57 'ako je u pitanju bilo koji broj
Exit Sub
Case 45 'ako je minus
If Text1.SelStart <> 0 Then KeyAscii = 0 'ako nije na prvom mestu u textbox-u zabrani upis
Exit Sub
Case 44 'ako je zarez
If InStr(1, Text1.Text, ",") > 0 Then KeyAscii = 0 'dozvoli upis samo jednom
Exit Sub
Case 8 'ako je backspace
Exit Sub
Case Else 'u bilo kom drugom slucaju zabrani upis
KeyAscii = 0
End Select
End Sub
Može i kraće ako se izbace Exit Sub-ovi
Code:
Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 48 To 57 'ako je u pitanju bilo koji broj
Case 45 'ako je minus
If Text1.SelStart <> 0 Then KeyAscii = 0 'ako nije na prvom mestu u textbox-u zabrani upis
Case 44 'ako je zarez
If InStr(1, Text1.Text, ",") > 0 Then KeyAscii = 0 'dozvoli upis samo jednom
Case 8 'ako je backspace
Case Else 'u bilo kom drugom slucaju zabrani upis
KeyAscii = 0
End Select
End Sub
i to će raditi, ali meni je profesionalna deformacija da volim sve eksplicitno da naglasim, što zbog preglednosti, što zbog sigurnosti, što zbog brzine, jer kad se jednom dobije ono što je traženo, bolje izaći iz procedure, jer tu nema šta više da se proverava... mada u ovom konkretnom slučaju sve to ne igra preveliku ulogu. Takođe, se uz manju intervenciju može postići da ne može da se upiše nula kao prvi broj, samo treba zameniti
Code:
Case 48 To 57 'ako je u pitanju bilo koji broj
sa
Code:
Case 48
If Val(Text1.Text) = 0 Then KeyAscii = 0
Case 49 To 57 'ako je u pitanju bilo koji broj
-Odracuonogakomijedrpiorazmaknicu.
-Ne rxdi mi txstxturx, kxd god hocu dx
ukucxm "x" onx ukucx "x".
-Ko kaaz e da ja neuummem da kuuca
m.
-Piše "Insert disk 3", a jedva sam i ova
dva ugurao u drajv
-Postoje samo dve osobe kojima
verujem, jedna sam ja, a druga nisi ti