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?

Strane: 1 2

[ Pregleda: 6421 | Odgovora: 20 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Sija

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



+8 Profil

icon Samo numericka vrijednost u textbox u VB6? Kako najlakse?20.05.2007. u 15:05 - pre 205 meseci
Znaci svi ostali unosi da se zabrane.
 
Odgovor na temu

steve585
Stevan Stanić
Project Manager
Zagreb

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



+1 Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?20.05.2007. u 15:18 - pre 205 meseci
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]
steve585
 
Odgovor na temu

steve585
Stevan Stanić
Project Manager
Zagreb

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



+1 Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?20.05.2007. u 15:22 - pre 205 meseci
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]
steve585
 
Odgovor na temu

Eurora3D Team
Nebojsa - Programer & Vodja tima
Beograd

Član broj: 120376
Poruke: 900
195.252.105.*



+7 Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?20.05.2007. u 16:57 - pre 205 meseci
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
 
Odgovor na temu

steve585
Stevan Stanić
Project Manager
Zagreb

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



+1 Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?20.05.2007. u 17:11 - pre 205 meseci
Da li moze samo kratko pojasnjenje koda. Bar prvi dio sa "Declare ..."
steve585
 
Odgovor na temu

Sija

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



+8 Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?20.05.2007. u 17:27 - pre 205 meseci
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. ?
 
Odgovor na temu

steve585
Stevan Stanić
Project Manager
Zagreb

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



+1 Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?20.05.2007. u 17:36 - pre 205 meseci
Probao sam kod i moguce je unjeti slova.
steve585
 
Odgovor na temu

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 - pre 205 meseci
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.
 
Odgovor na temu

steve585
Stevan Stanić
Project Manager
Zagreb

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



+1 Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?20.05.2007. u 17:57 - pre 205 meseci
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]
steve585
 
Odgovor na temu

Sija

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



+8 Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?20.05.2007. u 18:21 - pre 205 meseci
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)
 
Odgovor na temu

Eurora3D Team
Nebojsa - Programer & Vodja tima
Beograd

Član broj: 120376
Poruke: 900
195.252.105.*



+7 Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?20.05.2007. u 19:08 - pre 205 meseci
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

 
Odgovor na temu

Marko_L
Beograd

Član broj: 20532
Poruke: 2885
89.216.220.*

Jabber: Marko_L@elitesecurity.org


+828 Profil

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

Sija

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



+8 Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?21.05.2007. u 20:06 - pre 205 meseci
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!

 
Odgovor na temu

bukwa

Član broj: 241308
Poruke: 16
*.dsl.optinet.hr.



Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?26.11.2009. u 13:38 - pre 174 meseci
@Ero s ovoga sveta

radim u vs2005 i morao sam promijeniti currency (ne prepoznaje) u decimal (automatski prijedlog, tj integer - moj izbor) i sve radi super, samo bi mi trebalo da dodam jos mogucnost unosa znaka "/" i "-".
kako to napraviti?

thx
 
Odgovor na temu

Aleksandar Vasic
Web Administrator, Uspon d.o.o
Čačak

Član broj: 91692
Poruke: 1226
*.adsl.eunet.rs.

Sajt: www.vasictech.net


+1 Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?26.11.2009. u 14:01 - pre 174 meseci
Obrati se na forumu .NET
 
Odgovor na temu

Marko_L
Beograd

Član broj: 20532
Poruke: 2885
*.dynamic.sbb.rs.

Jabber: Marko_L@elitesecurity.org


+828 Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?26.11.2009. u 17:23 - pre 174 meseci
Pa sa tim rešenjem koje si izabrao, nikako. Inače je namerno izazivanje errora da bi zabranio neki unos totalno nepraktičan pristup. Dakle, hendluj svaki uslov zasebno i tako ćeš imati kontrolu nad tim charovima. pogledaj ono moje rešenje, zatim pronađi ASCII vrednosti za te charove koji ti trebaju i dodaj izuzetke sa CASE (kao što sam dodao za zarez, minus i slično).
-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
 
Odgovor na temu

bukwa

Član broj: 241308
Poruke: 16
*.dsl.optinet.hr.



Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?27.11.2009. u 08:46 - pre 174 meseci
Probao sam prvo tvoje rjesenje i ne radi, tj mogu upisati bilo koji znak u to polje..samo ne znam zasto.
 
Odgovor na temu

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?27.11.2009. u 10:42 - pre 174 meseci
@bukwa ovdje se raspravlja o VB6 a ti radis u vs2005.
SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

bukwa

Član broj: 241308
Poruke: 16
*.dsl.optinet.hr.



Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?27.11.2009. u 11:16 - pre 174 meseci
da, znam...postavio sam pitanje u .net sekciji ali sam odgovorio Marku kad mi je vec ponudio rjesenje...moje isprike ako sam pogrijesio
 
Odgovor na temu

Marko_L
Beograd

Član broj: 20532
Poruke: 2885
89.216.225.*

Jabber: Marko_L@elitesecurity.org


+828 Profil

icon Re: Samo numericka vrijednost u textbox u VB6? Kako najlakse?27.11.2009. u 11:44 - pre 174 meseci
Pa ja sam ti skrenuo pažnju na rešenje koje je u VB6, misleći da ćeš umeti to da prilagodiš VB.NET-u kad već radiš u njemu, a ionako nije neka velika razlika u pitanju. Sve što treba jeste da zameniš Select Case KeyAscii sa Select Case Asc(e.KeyChar), a tamo gde piše KeyAscii = 0 staviš e.KeyChar = "", a umesto Text1.SelText, staviš Text1.SelectionText (ili kako ti se već zove textbox kontrola) i to je to. Takođe, ne znam tačno šta pokušavaš da napraviš, ali postoje i druge opcije. Recimo, ako unos mora da bude u odgovarajućem formatu koji je uvek isti, možeš da iskoristiš MaskedTextBox. Ako je bilo kakva numerička vrednost, imaš NumericUpDown koja će ti dozvoliti isključivo korišćenje numeričkih vrednosti i decimal separatora i naravno backspace. Ako je u pitanju unošenje datuma (pošto vidim pominješ neke kose crte), onda možeš da iskoristiš DatePicker. Što bi se reklo, right tool for the right job ;)
-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
 
Odgovor na temu

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

Strane: 1 2

[ Pregleda: 6421 | Odgovora: 20 ] > FB > Twit

Postavi temu Odgovori

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