Avatar billede speedo Nybegynder
11. april 2004 - 14:06 Der er 15 kommentarer og
1 løsning

VB - Tryk på en knap

Mit spørgsmål er sikkert meget simpel, men ikke for mig!

I stedet for at lave en knap i formen, skal man kunne trykke på en knap på tastaturet. Så den udføre det samme som form knappen vil ha' gjort.

Hvordan går jeg det, og hvad hedder en Pil på tastaturet. Eller f.eks. knappen "A" eller "F5"???
Avatar billede biohazard_666 Nybegynder
11. april 2004 - 14:11 #1
for at bruge F1 osv skal su bruge denne kode:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
      Select Case KeyCode
        Case vbKeyF1
            MsgBox "Der er trykket på F1"
        Case vbKeyF2
            MsgBox "Der er trykket på F2"
        Case vbKeyF3
            MsgBox "Der er trykket på F3"
      End Select
End Sub
Avatar billede biohazard_666 Nybegynder
11. april 2004 - 14:13 #2
For at bruge bogstaver kan du bruge dette:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
      Select Case KeyAcii
        Case 65
            MsgBox "Der er trykket på A"
        Case 97
            MsgBox "Der er trykket på a"
        Case 66
            MsgBox "Der er trykket på B"
        Case 98
            MsgBox "Der er trykket på b"
        Case 97 to 122
            MsgBox "Der er trykket på et bogstav mellem a og z"
      End Select
End Sub

Du kan se flere Acii koder på denne side:
http://www.greaterthings.com/Word-Number/ASCII_code.htm
Avatar billede biohazard_666 Nybegynder
11. april 2004 - 14:16 #3
damn.. Der er fejl i den sidste...

Private Sub Form_KeyDown(KeyAcii As Integer, Shift As Integer)
      Select Case KeyAcii
        Case 65
            MsgBox "Der er trykket på A"
        Case 66
            MsgBox "Der er trykket på B"
      End Select
End Sub
Kan ikke helt huske hvordan det skal gøres... men her har du en smule :)
Avatar billede vbcoder Nybegynder
11. april 2004 - 14:50 #4
du skal sætte form1.keypreview = True - hvor form1 evt erstattes med det navn din form har.

På denne måde vil formen få tastetryk først og du skal så evaluere dem i henhold til det input der fra tastaturet.

Læg denne kode på din form

Option Explicit

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

    Dim ctrlKey As String
   
    me.windowstate = vbmaximized

    Select Case Shift
   
    Case 0
        ctrlKey = "INGEN"
    Case 1
    'shift = 1
        ctrlKey = "SHIFT"
    Case 2
    'ctrl = 2
        ctrlKey = "CTRL"
    Case 3
    'ctrl+shft = 3
        ctrlKey = "CTRL+SHIFT"
    Case 4
    'alt = 4
        ctrlKey = "ALT"
    Case 6
    'ctrl+alt = 6
        ctrlKey = "CTRL+ALT"
    Case 7
    'shft+ctrl+alt
        ctrlKey = "SHIFT+CTRL+ALT"
    Case Else
        ctrlKey = "IKKE DEFINERET"
    End Select
   
    Print "Skiftetaste : " & ctrlKey & vbCr
    Print "Tastetryk : " & KeyCode & vbCrLf

End Sub


Du vil nu få nogle værdier skrevet på formen alt efter hvilke taster du trykker.

Du så kunne se alle de forskellige kombinationer der kan laves.

//vbcoder
Avatar billede speedo Nybegynder
11. april 2004 - 15:30 #5
Hvad så hvis jeg skal bruge piletasterne??? :S
Avatar billede speedo Nybegynder
11. april 2004 - 15:42 #6
biohazard_666 !!!

Det virker ikke, er du sikker på koden er OK! ???

Eller er det bare mig der gør noget forkert ???
Avatar billede speedo Nybegynder
11. april 2004 - 15:48 #7
Private Sub Form_KeyDown(KeyAcii As Integer, Shift As Integer)
      Select Case KeyAcii
        'player2
        Case 32 'Læg Bombe [space]
            MsgBox "Læg Bombe - Player2"
        Case 119 'Op [w]
            MsgBox "Op - Player2"
        Case 115 'Ned [s]
            MsgBox "Ned - Player2"
        Case 97 'Venstre [a]
            MsgBox "Venstre - Player2"
        Case 100 'Højre [d]
            MsgBox "Højre - Player2"
      End Select
End Sub
Avatar billede speedo Nybegynder
11. april 2004 - 15:54 #8
Er det ikke lige meget hvor koden, bliver proppet ind???
Avatar billede vbcoder Nybegynder
11. april 2004 - 16:03 #9
den kode du sidder og bøfler med er forkert i sit kald

KeyPress event har KeyAscii som param ment KeyDown har KeyCode som param.

Så et eller andet sted går det galt i din kode

prøv at skrive flg. allerøverst på din form

option explicit

Kør derefter dit projekt med Ctrl+F5

det burde fange evt. forkerte param eller stavefejl i variabler

//vbcoder
Avatar billede vbcoder Nybegynder
11. april 2004 - 16:10 #10
I din form key down er keyascii som param forkert - skal være KeyCode



      Select Case KeyCode

        'player1
        Case 32 'Læg Bombe [space]
            MsgBox "Læg Bombe - Player2"
        Case 38 'Op [pil]
            MsgBox "Op - Player1"
        Case 40 'Ned [pil]
            MsgBox "Ned - Player1"
        Case 37 'Venstre [pil]
            MsgBox "Venstre - Player1"
        Case 39 'Højre [pil]
            MsgBox "Højre - Player1"

        'player2
        Case 32 'Læg Bombe [space]
            MsgBox "Læg Bombe - Player2"
        Case 119 'Op [w]
            MsgBox "Op - Player2"
        Case 115 'Ned [s]
            MsgBox "Ned - Player2"
        Case 97 'Venstre [a]
            MsgBox "Venstre - Player2"
        Case 100 'Højre [d]
            MsgBox "Højre - Player2"

      End Select


//vbcoder
Avatar billede vbcoder Nybegynder
11. april 2004 - 16:21 #11
husk at sætte formens keypreview = true så formen får tastetrykkene først

værdierne for piletasterne er

v-op-h-n-ins = 37-38-39-40-45

på det numeriske tastatur kan du også aflæse værdierne for fx.

med numlock on
4-8-6-2-0 = 100-104-102-98-96

og numlock off
v-op-h-n-ins = 37-38-39-40-45

//vbcoder
Avatar billede vbcoder Nybegynder
11. april 2004 - 16:22 #12
som du kan se af ovenstående giver piletasterne på det numeriske tastatur samme værdier med numlock off som de almindelige piletaster gør

//vbcoder
Avatar billede speedo Nybegynder
11. april 2004 - 16:24 #13
Helt sikkert, sidste spøgsmål. Hvad hedder "Ins / 0" knappen så???
Avatar billede vbcoder Nybegynder
11. april 2004 - 18:10 #14
numlock on 96
numlock off 45

//vbcoder
Avatar billede vbcoder Nybegynder
11. april 2004 - 18:16 #15
du kan prøve at lave et nyt default projekt i vb

dobbeltklik på din form og tryk Ctrl+A i kodevinduet.
Derefter paster du denne kode i stedet for den kode der står der.

så kan du aflæse alle værdier for de taste tryk du måtte finde på - noter værdierne på et stykke papir og kod derefter din keydown event efter de tal du har noteret.

'snip-snap-snude

Option Explicit

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

    Dim ctrlKey As String
   
    Select Case Shift
   
    Case 0
        ctrlKey = "INGEN"
    Case 1
    'shift = 1
        ctrlKey = "SHIFT"
    Case 2
    'ctrl = 2
        ctrlKey = "CTRL"
    Case 3
    'ctrl+shft = 3
        ctrlKey = "CTRL+SHIFT"
    Case 4
    'alt = 4
        ctrlKey = "ALT"
    Case 6
    'ctrl+alt = 6
        ctrlKey = "CTRL+ALT"
    Case 7
    'shft+ctrl+alt
        ctrlKey = "SHIFT+CTRL+ALT"
    Case Else
        ctrlKey = "IKKE DEFINERET"
    End Select
   
    Print "Skiftetaste : " & ctrlKey & vbLf
    Print "Tastetryk : " & KeyCode & vbCrLf

End Sub

Private Sub Form_Load()
    Me.WindowState = vbMaximized
   
End Sub

'snip-snap-snude

//vbcoder
Avatar billede speedo Nybegynder
11. april 2004 - 23:20 #16
Thx vbcoder
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester