Создать процедуру, отслеживающую нажатие определенных клавиш клавиатуры - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д