/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Kun talværdier i tekstboks
Fra : Jeppe Ladefoged


Dato : 24-08-04 19:24

Jeg bruger en tekstbox i et lille program.
Der må kun være tal i.

Jeg har lavet en stump kode, men hvis det tal man skriver starter med "0",
bliver det slettet. Er der en smartere måde at lave det på?

Min kodestump:
-----
Private Sub tbxLøbenummer_Change()
'kun hvis feltet er tom
If Not tbxLøbenummer.Text = "" Then
'kun talværdier
tbxLøbenummer.Text = Val(tbxLøbenummer.Text)
End If
End Sub
-----


mvh
Jeppe



 
 
Lars Holm Jensen (24-08-2004)
Kommentar
Fra : Lars Holm Jensen


Dato : 24-08-04 19:33

> Jeg bruger en tekstbox i et lille program.
> Der må kun være tal i.
>
> Jeg har lavet en stump kode, men hvis det tal man skriver starter med "0",
> bliver det slettet. Er der en smartere måde at lave det på?

Jeg synes dette virker fint..

Private Sub Text1_KeyPress(KeyAscii As Integer)
If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> vbKeyBack Then KeyAscii
= 0
End Sub

/Lars



Tomas Christiansen (24-08-2004)
Kommentar
Fra : Tomas Christiansen


Dato : 24-08-04 20:18

Lars Holm Jensen skrev:
> Private Sub Text1_KeyPress(KeyAscii As Integer)
> If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> vbKeyBack Then
KeyAscii
> = 0
> End Sub

Det kommer så sandelig an på hvad man vil acceptere!!!
IsNumeric accepterer både hexadecimale tal, kommatal, tal på "videnskabelig"
form og diverse andre afarter af tal, som VB kan genkende.

-------
Tomas


Lars Holm Jensen (24-08-2004)
Kommentar
Fra : Lars Holm Jensen


Dato : 24-08-04 20:58

> Det kommer så sandelig an på hvad man vil acceptere!!!
> IsNumeric accepterer både hexadecimale tal, kommatal, tal på
> "videnskabelig"
> form og diverse andre afarter af tal, som VB kan genkende.

Ja, IsNumeric er fantastisk alsidig..



Lars Holm Jensen (24-08-2004)
Kommentar
Fra : Lars Holm Jensen


Dato : 24-08-04 21:10

Jeppe var ikke så specifik i hvad han gerne ville have og jeg ville gerne
give ham en enkel løsning.
Hvis man skal bruge en løsning til kun at tillade cifrene 0-9 så er denne
god:

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&

Private Sub Command1_Click()
SetNumber Text1, True
End Sub

Public Sub SetNumber(NumberText As TextBox, Optional Flag As Boolean = True)
Dim curstyle As Long
Dim newstyle As Long
curstyle = GetWindowLong(NumberText.hwnd, GWL_STYLE)

If Flag Then
curstyle = curstyle Or ES_NUMBER
Else
curstyle = curstyle And (Not ES_NUMBER)
End If
newstyle = SetWindowLong(NumberText.hwnd, GWL_STYLE, curstyle)
NumberText.Refresh
End Sub

/Lars



preben nielsen (24-08-2004)
Kommentar
Fra : preben nielsen


Dato : 24-08-04 19:42


"Jeppe Ladefoged" <degofedal_spamfilter01@ÆØÅunderflow.dk> skrev i
en meddelelse news:412b87bf$0$98408$14726298@news.sunsite.dk...
> Jeg bruger en tekstbox i et lille program.
> Der må kun være tal i.
>
> Jeg har lavet en stump kode, men hvis det tal man skriver
starter med "0",
> bliver det slettet. Er der en smartere måde at lave det på?
>
> Min kodestump:
> -----
> Private Sub tbxLøbenummer_Change()
> 'kun hvis feltet er tom
> If Not tbxLøbenummer.Text = "" Then
> 'kun talværdier
> tbxLøbenummer.Text = Val(tbxLøbenummer.Text)
> End If
> End Sub

Hvorfor gør du det der ?? Hvad vil du opnå ? Og så i _Change() ??


--
/\ preben nielsen
\/\ prel@post.tele.dk



Jeppe Ladefoged (24-08-2004)
Kommentar
Fra : Jeppe Ladefoged


Dato : 24-08-04 21:38

> Jeg bruger en tekstbox i et lille program.
> Der må kun være tal i.
>
> Jeg har lavet en stump kode, men hvis det tal man skriver starter med "0",
> bliver det slettet. Er der en smartere måde at lave det på?

Nu blev jeg lige trigget med nogle kommandoer mm.
Så nu ser den sådan her ud og det virker fint (eller godt nok i hvert fald):

(Det er forresten Visual Basic for Applications, ikke at det gør den store
forskel her)

-----
Private Sub tbxLøbenummer_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'kun talværdier
If KeyAscii < 47 Or KeyAscii > 57 Then KeyAscii = 0
End Sub
-----

mvh
Jeppe



Lars Holm Jensen (24-08-2004)
Kommentar
Fra : Lars Holm Jensen


Dato : 24-08-04 22:56

> If KeyAscii < 47 Or KeyAscii > 57 Then KeyAscii = 0

Måske backspace ville være brugervenligt..

If (KeyAscii < 47 Or KeyAscii > 57) And KeyAscii <> vbKeyBack Then KeyAscii
= 0

/Lars



Harald Staff (25-08-2004)
Kommentar
Fra : Harald Staff


Dato : 25-08-04 08:34

Hei Jeppe

Pass også på Ctrl V (paste) som du bør fange og validere i KeyDown eventet.

HTH. Beste hilsen Harald

"Jeppe Ladefoged" <degofedal_spamfilter01@ÆØÅunderflow.dk> skrev i melding
news:412ba716$0$98400$14726298@news.sunsite.dk...
> > Jeg bruger en tekstbox i et lille program.
> > Der må kun være tal i.



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste