Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: vb ja kenttien syötön rajoittamista

Aku2 [01.07.2003 13:35:46]

#

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

Antti Laaksonen [01.07.2003 17:04:18]

#

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.

Aku2 [01.07.2003 17:36:49]

#

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?

Teme [03.07.2003 09:21:48]

#

Joskus jos tekstikenttään ei tarvitse missään tapauksessa laittaa enempää kuin esim. 4 merkkiä ni sillon laitan kyseisen kohdan maxlength-arvoksi 4.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta