Olen jo useassa ohjelmassani käyttänyt mm. tekstikentissä rajoituksia, jos olen halunnut syötteen olevan esimerkiksi numeerinen. Olen tähän käyttänyt estämällä keyasciilla (keypress) tapahtumalla tehden oman functon.
Oletteko te miten yleensäkin rajoittanut kenttien syöttöa millään tavoin ja jos olette, niin miten?
Minusta tuon tekemäni functio ja yleensäkin tuo keyascii tuntuu olevan väärä tapa, mutta en keksi mitään parempaakaan tapaa hoitaa tuota.
Pelkillä numeroilla tuo vielä menisi, mutta jos syötteen pitäisikin olla toisinpäin, eli kaikki muut _paitsi_ numerot.. Tulisi melkoinen koodirivistö kirjoitettua.
Tuo nyt tuntuu varmimmalta tavalta, johon olen yhdistänyt myös tarkistuksen onko kentän tieto numeric.
Mutta alla tuo functio keyasciille (numerot ja pilkku) joita olen käyttänyt esimerkiksi summien syöttöihin.
Public Function GetKey(KA As Integer) As Integer Select Case KA Case 44, 46: GetKey = 44 Case 48: GetKey = 48 Case 49: GetKey = 49 Case 50: GetKey = 50 Case 51: GetKey = 51 Case 52: GetKey = 52 Case 53: GetKey = 53 Case 54: GetKey = 54 Case 55: GetKey = 55 Case 56: GetKey = 56 Case 57: GetKey = 57 Case vbKeyBack: GetKey = 8 Case 8: GetKey = 8 Case Else: GetKey = 0 End Select End Function
Pistä kontrollin KeyPress-tapahtumaan tällainen pätkä:
Private Sub Text1_KeyPress(KeyAscii As Integer) Dim merkit As String merkit = "0123456789" If InStr(merkit, Chr(KeyAscii)) <> 0 Then KeyAscii = 0 End If End Sub
Muuttuja merkit sisältää kelpaavat / kelpaamattomat merkit. Ehtolauseen vertailu vaikuttaa lopputulokseen:
= määritetyt merkit kelpaavat <> määritetyt merkit eivät kelpaa
edit: Jos tarvitset monimutkaisempia rajoituksia, kokeile Masked Edit Controlia.
enemmänkin juuri mietiskelin pelkkien summien syötölle järkevämpää ratkaisua kuin tuo antamani functio.
Miten tuossa käyttäytyy erikoismerkit, kuten pilkku ja piste? Siis tuohon merkit muuttujaan?
Joskus jos tekstikenttään ei tarvitse missään tapauksessa laittaa enempää kuin esim. 4 merkkiä ni sillon laitan kyseisen kohdan maxlength-arvoksi 4.
Aihe on jo aika vanha, joten et voi enää vastata siihen.