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
Kiitos. En tajunnut itse tuota... =)
.Jees ja Danke.
Etkö sä edes viitsi kokeilla näitä koodivinkkejä, kun tunnut olevan niin epätietietoinen
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
Miksi nuo KeyDown , Press ja Up ei tapahdu kun Formilla on objekteja?!
saisko noita lukuja tallentymaan vaikka /loki.txt tiedostoon?
MIKSI ei vois vaan suoraan käyttää GetAsyncKeyStatea? o_O
Aihe on jo aika vanha, joten et voi enää vastata siihen.