Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Samo numericka vrijednost u textbox u VB6? Kako najlakse?

[es] :: Visual Basic 6 :: Samo numericka vrijednost u textbox u VB6? Kako najlakse?

[ Pregleda: 669 | Odgovora: 12 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Sija

Član broj: 19607
Poruke: 64
*.PPPoE-1984.sa.bih.net.ba.



Profil

icon Samo numericka vrijednost u textbox u VB6? Kako najlakse?20.05.2007. u 15:05

Znaci svi ostali unosi da se zabrane.
20.05.2007. u 15:05 

steve585
Stevan Stanić
Peskovec

Član broj: 131815
Poruke: 169
*.xnet.hr.



Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?20.05.2007. u 15:18
Pokusaj ovako.
Code:

Private Sub TextBox1_Change()
Upit=TextBox1.Text

If Upit<>0 Or Upit<>1 Or Upit <>2 Then
TExtBox1.Text=""
End If
End Sub


Imao sam negdje bas kod za ovo, potraziti cu, pa poslati.


krcko: dodati CODE tagovi

[Ovu poruku je menjao Aleksandar Ružičić dana 20.05.2007. u 22:57 GMT+1]
20.05.2007. u 15:18 

steve585
Stevan Stanić
Peskovec

Član broj: 131815
Poruke: 169
*.xnet.hr.



Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?20.05.2007. u 15:22
Nasao sam
Code:

Private Sub Text7_KeyPress(KeyAscii As Integer)
Dim strValid As String
Dim Duzina
Duzina = Len(Text7.Text)
If Duzina > 4 And KeyAscii > 26 Then
KeyAscii = 0
End If
strValid = "0123456789"
If KeyAscii > 26 Then
If InStr(strValid, Chr(KeyAscii)) = 0 Then
 KeyAscii = 0
End If
End If
End Sub

Osim sto se omogucava samo unos brojeva ovaj kod brani unos vise od 5 karaktera.


krcko: dodati CODE tagovi

[Ovu poruku je menjao Aleksandar Ružičić dana 20.05.2007. u 22:57 GMT+1]
20.05.2007. u 15:22 

Eurora3D Team
Nebojsa - Programer & Vodja tima
Beograd

Član broj: 120376
Poruke: 598
195.252.105.*

Sajt: www.eurora3d.com


Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?20.05.2007. u 16:57
Ovo vam je mnogo bolje i brze jer izbegavate stalna proveravanja.

U deklaracionom delu forme stavite ove deklaracije funkcija

Code:

' Funkcije za promenu stila. textboxa napr
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const GWL_STYLE = (-16)
Private Const ES_NUMBER = &H2000&


ili u nekom modulu ovo (da bi moglo da se koristi iz celog programa)

Code:

' Funkcije za promenu stila. textboxa napr
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Const GWL_STYLE = (-16)
Public Const ES_NUMBER = &H2000&


i onda u Load ili bolje Activate eventu forme stavite ovaj kod da promenite ponasanje text box-a

Code:

' txtDraw je ime text box-a
Dim lng As Long
lng = GetWindowLong(txtDraw.hwnd, GWL_STYLE)
SetWindowLong txtDraw.hwnd, GWL_STYLE, lng Or ES_NUMBER


Ovo se izvodi samo jednom za razliku od ovih VB if-ova koji se izvode svaki put kad se pritisne taster.
Pozdrav
20.05.2007. u 16:57 

steve585
Stevan Stanić
Peskovec

Član broj: 131815
Poruke: 169
*.xnet.hr.



Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?20.05.2007. u 17:11
Da li moze samo kratko pojasnjenje koda. Bar prvi dio sa "Declare ..."
20.05.2007. u 17:11 

Sija

Član broj: 19607
Poruke: 64
*.PPPoE-4520.sa.bih.net.ba.



Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?20.05.2007. u 17:27
Prvo da se izvinem: Pogrijesio sam naslov teme. Nisam sjeo za komp i nesto pravio ima godina.. Nisam mislio na numericku nego na vrijednost koja se unosi kao kod kalkulatora. Znaci mora se moci unijeti i zarez ali samo jedan put i mora se omoguciti unos predznaka "-" na pocetku.

U svakom slucaju hvala!

Na osnovu onog prvog koda sam nesto sastavio:
Code:

Dim strValid As String
Dim intBroj As Integer

strValid = "0123456789,-"

If KeyAscii > 26 Then
If InStr(strValid, Chr(KeyAscii)) = 0 Then
    KeyAscii = 0
End If
End If
If Len(Text7.Text) = 1 And Text7.Text = "-" And KeyAscii = 44 Then KeyAscii = 0
If Text7.Text = "" And KeyAscii = 44 Then
    KeyAscii = 0
Else
  For intBroj = 1 To Len(Text7.Text)
        
        If InStr(1, Text7.Text, ",") > 0 Then
            If KeyAscii = 44 Or KeyAscii = 45 Then
               KeyAscii = 0
            End If
       End If
  Next
End If

Je li ovo o.k. ?
20.05.2007. u 17:27 

steve585
Stevan Stanić
Peskovec

Član broj: 131815
Poruke: 169
*.xnet.hr.



Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?20.05.2007. u 17:36
Probao sam kod i moguce je unjeti slova.
20.05.2007. u 17:36 

Ero S Ovoga Sveta

Član broj: 21509
Poruke: 173
*.teol.net.



Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?20.05.2007. u 17:44
Evo kako sam ja rijesio taj problem.
Code:

Private Sub Text1_Change()
Dim C As Currency

    On Error GoTo Nije_Broj
    
    If Text1.Text <> "" Then
        C = Text1.Text
    End If
    
Exit Sub
Nije_Broj:

    MsgBox "Mozete upisivati samo brojeve", 64, "Greska"

End Sub

Znaci ako promjenjivoj C pokusas da dodijelis nesto drugo osim brojeva i zareza, pojavit ce se
greska i program ce otici na Nije_broj. To nije "najbolje" rjesenje ali funkcijonise.
20.05.2007. u 17:44 

steve585
Stevan Stanić
Peskovec

Član broj: 131815
Poruke: 169
*.xnet.hr.



Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?20.05.2007. u 17:57
Evo nesto nepopularno, ali radi. Iskoristi prvi kod, unositi ces samo cijele brojeve u TextBox bez zareza.
Postojecem kodu dodaj sljedeci kod
Code:

Private Sub Text7_LostFocus()
   Text7.Text = Round(Text7.Text / 100, 2)
   Text7.Refresh
End Sub



krcko: dodati CODE tagovi


[Ovu poruku je menjao Aleksandar Ružičić dana 20.05.2007. u 22:59 GMT+1]
20.05.2007. u 17:57 

Sija

Član broj: 19607
Poruke: 64
*.PPPoE-4520.sa.bih.net.ba.



Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?20.05.2007. u 18:21
Sve je to manje vise o.k. ali znaci moraju se moci upisivati i negativni brojevi, a zaokruzivanje ne smije biti unaprijed definisano tj. ako se pogrijesi mjesto zareza mora se moci jednostavno izbrisati. Znaci mora se moci upistai nesto ovako "-12555455,126796465"

Kao da imate na POS-u kolicinu ili cijenu koja moze ici u minus.(Sta cete nisam nikada POS napravio)
20.05.2007. u 18:21 

Eurora3D Team
Nebojsa - Programer & Vodja tima
Beograd

Član broj: 120376
Poruke: 598
195.252.105.*

Sajt: www.eurora3d.com


Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?20.05.2007. u 19:08
Ovo ce da ti radi.
Prekopiraj kod u Formu i stavi na Formu jedan TextBox sa imenom Text1
Decimalni znak zavisi od regionalnih podesavanja Windowsa (kod nas je zarez).
Pozdrav

Code:

Dim str As String ' temp promenjiva

Private Sub Form_Load()
Text1.Text = ""
End Sub

Private Sub Text1_Change()
On Error GoTo err ' ako tekst ne moze da se pretvori u broj izazivamo error i idemo na err
Dim n As Double
n = CDbl(Text1.Text) ' ako je double izlazimo
Exit Sub
err:
Text1.Text = str ' ako je unet drugi znak tako da od teksta ne moze da se napavi broj
Text1.SelStart = Len(str) ' upisujemo zadnju tacnu vrednost teksta i namestamo kursor posle zadnjeg znaka
End Sub

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
'uzimamo tekst pre nego sto je dodat novi znak
str = Text1.Text
End Sub

20.05.2007. u 19:08 

Marko_L
Marko Lošonc
Project Manager, Maxifer d.o.o
Beograd

Moderator
Član broj: 20532
Poruke: 2113
89.216.220.*

Jabber: Marko_L@elitesecurity.org
ICQ: 249407402
Sajt: www.jurassicsoftware.com


Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?20.05.2007. u 20:40
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
20.05.2007. u 20:40 

Sija

Član broj: 19607
Poruke: 64
*.PPPoE-6850.sa.bih.net.ba.



Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?21.05.2007. u 20:06
Hvala Vam svima puno! Ovo mi je puno pomoglo. Ipak ja ne mogu to tako jednostavno kao profesionalci, ja to zakomplikujem pravo.

P.S.

Pored toga sto mi je pomoglo ovaj kod cu da nabijem na nos jednom programeru koji mi nije htjeo pomoci. Zastitio to u svom programu tj. napravio ActivexControl sa imenom firme od toga.

Jos jednom hvala!

21.05.2007. u 20:06 

[es] :: Visual Basic 6 :: Samo numericka vrijednost u textbox u VB6? Kako najlakse?

[ Pregleda: 669 | Odgovora: 12 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.