Создать процедуру, отслеживающую нажатие определенных клавиш клавиатуры - VB

Узнай цену своей работы

Формулировка задачи:

Вопрос вот в чем: мне в программе нужно создать процедуру, отслеживающую нажатие определенных клавиш клавиатуры и выполняющую определенное действие, исходя из результата. К примеру: у меня на форме есть 9 label‘ов в виде матрицы 3х3. 8 из них закрашены синим, а 1 - красным. Допустим, что при нажатиях клавиш w,a,s,d красный квадрат перемещался, т.е подобие хода внутри матрицы. Если не трудно - выложите код примера...

Решение задачи: «Создать процедуру, отслеживающую нажатие определенных клавиш клавиатуры»

textual
Листинг программы
Option Explicit
Dim Act As Long, Arr() As Long
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    Select Case KeyCode
    Case vbKeyW: Swap Act, Act - 3
    Case vbKeyS: Swap Act, Act + 3
    Case vbKeyA: Swap Act, Act - 1
    Case vbKeyD: Swap Act, Act + 1
    End Select
End Sub
Private Sub Swap(i1 As Long, i2 As Long)
    Dim lbl1 As Label, lbl2 As Label, l As Long, t As Long
    If i2 < 0 Or i2 > 8 Or ((i1 + i2) Mod 3 = 2 And Abs(i1 - i2) = 1) Then Exit Sub
    Arr(i1) = Arr(i1) Xor Arr(i2): Arr(i2) = Arr(i2) Xor Arr(i1): Arr(i1) = Arr(i1) Xor Arr(i2)
    Set lbl1 = Me.Controls("lblItem" & Arr(i2)): Set lbl2 = Me.Controls("lblItem" & Arr(i1))
    l = lbl1.Left: t = lbl1.Top: lbl1.Move lbl2.Left, lbl2.Top: lbl2.Move l, t
    Act = i2
End Sub
Private Sub Form_Load()
    Dim lbl As Label, i As Long
    ReDim Arr(8)
    For i = 0 To 8
        Set lbl = Me.Controls.Add("VB.Label", "lblItem" & CStr(i))
        lbl.Move Me.ScaleWidth / 3 * (i Mod 3), Me.ScaleHeight / 3 * (i \ 3), Me.ScaleWidth / 3, Me.ScaleHeight / 3
        lbl.Visible = True: lbl.BackColor = vbBlue: lbl.Caption = i: Arr(i) = i
    Next
    lbl.BackColor = vbRed: Act = 8
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5
Похожие ответы