# Steuerung durch Tastatur



## smuuuf (31. März 2007)

Hi!

Ich suche ein Tutorial, indem es darum geht, wie man mit Tastenklicks (z.B. den Pfeiltasten) ein Programm "steuern" kann.

Hat da jemand eins parat?

Gruß,
smuuuf


----------



## DrSoong (31. März 2007)

Willst du dein eigenes Programm steuern oder mit deinem Programm ein fremdes?


Der Doc!


----------



## smuuuf (1. April 2007)

Mein eigenes...

Zum Beispiel (in einem Spiel oder so):

"Pfeil runter" -> Menüpunkt 2 wird umrandet (shape 2.visible = true) (alle anderen nicht sichtbar)
"Pfeil runter" -> Menüpunkt 3 wird umrandet (shape 3.visible = true) (alle anderen nicht sichtbar)

"Pfeil hoch" -> Menüpunkt 2 wird umrandet (shape 2.visible = true) (alle anderen nicht sichtbar)

"Pfeil hoch" -> Menüpunkt 1 wird umrandet (shape 1.visible = true) (alle anderen nicht sichtbar)

Und wenn das jeweilige Shape visible ist, und dann ENTER gedrückt wird, dann zum Beispiel 'MsgBox "menüpunkt 1 gedrückt".


War das verständlich? ^^

gruß


----------



## DrSoong (1. April 2007)

Ist im Prinzip einfach, am besten du verwendest das KeyDown-Event der Form. Dazu stellst du erst die *KeyPreview*-Eigenschaft deiner Form auf _True_, damit werden alle Tastendrücke erst mal über die Form gejagt. Jetzt kannst du in dem KeyDown-Event der Form die Tasten abfragen:

```
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
 If KeyCode = vbKeyUp Then
  Shape1.Visible = True 'Das Shape anzeigen
  Shape2.Visible = False 'Alle anderen verstecken
 End If
 'Die anderen Tasten sind vbKeyDown, vbKeyLeft und vbKeyRight
End Sub
```


Der Doc!


----------



## smuuuf (1. April 2007)

Ich habe jetzt 2 Shapes untereinandr angeordnet und folgenden Code eingefügt:


```
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyUp And Shape1.Visible = True Then
End Sub
End If

If KeyCode = vbKeyUp And Shape1.Visible = False Then
Shape1.Visible = True 'Das Shape anzeigen
Shape2.Visible = False 'Alle anderen verstecken
End If

If KeyCode = vbKeyDown And Shape1.Visible = True Then
Shape1.Visible = False 'Das Shape anzeigen
Shape2.Visible = True 'Alle anderen verstecken
End If

If KeyCode = vbKeyDown And Shape1.Visible = False Then
End Sub
End If

End Sub
```

Doch es tut sich nichts -.-


----------



## DrSoong (1. April 2007)

*KeyPreview*-Eigenschaft der Form auf _True_ gestellt (obwohl du es nicht brauchst, wenn du nur Shapes hast, gewöhn dir es aber an)?

Ich hab den Code probiert, bei mir hat sich schon was getan. Es ist nämlich eine Fehlermeldung gekommen, um eine Prozedur vorzeitig zu beenden darfst du nicht _End Sub_ verwenden sondern musst *Exit Sub* verwenden. Der korrigierte Code funktioniert bei mir ohne Probleme:

```
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyUp And Shape1.Visible = True Then
Exit Sub
End If

If KeyCode = vbKeyUp And Shape1.Visible = False Then
Shape1.Visible = True 'Das Shape anzeigen
Shape2.Visible = False 'Alle anderen verstecken
End If

If KeyCode = vbKeyDown And Shape1.Visible = True Then
Shape1.Visible = False 'Das Shape anzeigen
Shape2.Visible = True 'Alle anderen verstecken
End If

If KeyCode = vbKeyDown And Shape1.Visible = False Then
Exit Sub
End If
End Sub
```
BTW: Es gibt für VB eigene Codetags, verwende [code=vb] bzw. [/code] statt der PHP-Tags. Für die VB-Tags gibt es aber leiden keinen Button, du musst sie per Hand eingeben.


Der Doc!


----------



## smuuuf (1. April 2007)

Ah mal wieder hab ich ein Brett vorm Kopp gehabt  

Ich hatte noch Buttons auf dem Formular und durch das drücken habe ich nur zwischen den Buttons gewechselt 

Also vielen Dank!

BTW BACK: Ich hatte jetzt mal php genommen, da man sonst die Nummern (jeder Zeile) wegmachen muss...


----------



## DrSoong (2. April 2007)

Also, ich hab mit den VB-Tags kein Problem, er zeigt dir zwar die Nummern vorne an, du kannst den Code aber ohne Nummern auswählen und dementsprechend kopieren.


Der Doc!


----------



## smuuuf (2. April 2007)

DrSoong hat gesagt.:


> Also, ich hab mit den VB-Tags kein Problem, er zeigt dir zwar die Nummern vorne an, du kannst den Code aber ohne Nummern auswählen und dementsprechend kopieren.
> 
> 
> Der Doc!



Das ging bei mir nur mit Nummern (obwohl ich nur den Text markiert habe) :suspekt:


----------

