Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: VB6: Näppäimistökäsittelijä

Antti Laaksonen [16.01.2002 18:55:10]

#

Visual Basicissa on kaksi tärkeää näppäimistönlukualiohjelmaa: KeyDown ja KeyUp. Nämä lukevat vain yhden näppäimen kerrallaan, mutta pienellä vaivalla on mahdollista lukea 5-11 näppäintä samanaikaisesti.

Jokaiselle näppäimelle on oma KeyCode, näppäinkoodi, joka on esimerkiksi Enter-näppäimellä 13. Ohjelman toiminta perustuu taulukkoon, jossa on tiedot näppäinkoodien 0-255 tilasta. Jos näppäin on pohjassa, sen tila on True ja jos ei, False. Tämä tila vaihtuu aina, kun näppäin painetaan alas (KeyDown) tai nostetaan ylös (KeyUp).

Jos formilla on kontrolleja, jotka estävät näppäinten luvun, asia korjaantuu muuttamalla formin KeyPreview-ominaisuus muotoon True.

Dim Nappaimet(0 To 255) As Boolean

Sub NaytaNappaimet()
    Cls
    For i = 0 To 255
        If Nappaimet(i) = True Then
            Print i & " ";
        End If
    Next
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    Nappaimet(KeyCode) = True
    NaytaNappaimet
End Sub

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
    Nappaimet(KeyCode) = False
    NaytaNappaimet
End Sub

TIC [18.01.2002 16:38:55]

#

Kiitos. En tajunnut itse tuota... =)

.Jees ja Danke.

kaviaari [25.11.2003 19:21:48]

#

Etkö sä edes viitsi kokeilla näitä koodivinkkejä, kun tunnut olevan niin epätietietoinen

zigilii [20.01.2004 16:54:22]

#

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
   Cls
   Print KeyCode
End Sub

toi koodi tulostaa vain yhden numeron kerrallaan ja se ei poista sitä kun näppäin otetaan pois pohjasta

Lumi-ukkeli [27.01.2005 15:57:35]

#

Miksi nuo KeyDown , Press ja Up ei tapahdu kun Formilla on objekteja?!

Jomppes [14.08.2005 10:02:45]

#

saisko noita lukuja tallentymaan vaikka /loki.txt tiedostoon?

Juhko [07.02.2009 20:31:12]

#

MIKSI ei vois vaan suoraan käyttää GetAsyncKeyStatea? o_O

Vastaus

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

Tietoa sivustosta