ASCII-koder

När man vill använda tangentbordet i sitt program, så att programmet utför olika saker beroende på vilken tangent som trycks ned, utnyttjar man den ASCII-kod som finns för varje tangent. Först skall vi ta reda på vilka ASCII-koderna är. För att göra detta behöver vi bara sätta ut en TextBox i en Form. Om vi dubbelklickar på TextBoxen kommer koden upp för 

Private Sub Text1_Change()

För att programmet skall kunna känna av en tangenttryckning måste vi ändra händelsen till KeyPress. Om vi väljer KeyPress från händelsefönstret får vi följande kod

Private Sub Text1_KeyPress(KeyAscii As Integer)

End Sub

Här ser vi att det inte är en tom parentes efter Subnamnet. Där finns nu en deklarerad variabel som heter KeyAscii och är av typen Integer.

Nu vill vi att när en tangent trycks ned skall tecknet för tangenten visas tillsammans med dess ASCII-värde. Vi skriver följande kod:

Private Sub Text1_KeyPress(KeyAscii As Integer)
Text1.Text = " - " & KeyAscii
End Sub


Kör vi programmet ser vi att till exempel Enter har ASCII-kod 13. 

Dessa siffror kan man utnyttja i sina program så att man slipper använda musen och som alternativ till en tryckknapp. Som ett exempel gör vi ett program med en TextBox och en Label.

Vi skriver koden

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
  Label1.Caption = Text1.Text
End If
End Sub


Nu kan man skriva i Textboxen ända tills man trycker Enter. Då blir If-satsen sann - eftersom Enter har Asciikod 13 - och programslingan utförs. På detta sätt kan man styra vad som skall hända genom olika If-satser eller Select Case när olika tangenter trycks ned.

Som du ser kommer inte ASCII-koden för piltangenterna fram; därför avslöjar jag dem här:

  • Vänster : 37
  • Upp : 38
  • Höger : 39
  • Ned : 40 

I Visual Basic finns även fördefinierade koder för piltangenterna, men då får man använda händelsen KeyDown i stället för KeyPress.

Här kommer ett kodexempel

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyLeft Then
  MsgBox ("Du tryckte på vänster-pilen.")
End If
End Sub


De fördefinierade koderna är

  • Vänster=vbKeyLeft
  • Upp=vbKeyUp
  • Höger=vbKeyRight
  • Ned=vbKeyDown

Nu kan vi använda piltangenterna för att flytta figurer. För detta gör man bilder i ett bildprogram och placerar dem i en PictureBox, men som exempel visar jag hur man på samma sätt flyttar en Label samt byter utseende i Labeln för varje tryckning så att den blir en rörlig bild. Experimentera själv. 

Observera att Label inte har någon KeyDown, eftersom man inte kan skriva i en Label. Därför får vi använda en TextBox att skriva koden i.

Dim tal As Integer

Private Sub Form_Load()
tal = 0
End Sub

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)

If tal = 0 Then
  Label1.Caption = "-----"
Else
  Label1.Caption = "-()-"
End If

If tal = 0 Then
  tal = 1
Else
  tal = 0
End If

If KeyCode = vbKeyUp Then
  Label1.Top = Label1.Top - 50
End If

If KeyCode = vbKeyDown Then
  Label1.Top = Label1.Top + 50
End If

If KeyCode = vbKeyLeft Then
  Label1.Left = Label1.Left - 50
End If

If KeyCode = vbKeyRight Then
  Label1.Left = Label1.Left + 50
End If

End Sub

 

Kör programmet med piltangenterna.

© SupportData.Net