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

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

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

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

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

textual
Листинг программы
  1. Option Explicit
  2. Dim Act As Long, Arr() As Long
  3. Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
  4.     Select Case KeyCode
  5.     Case vbKeyW: Swap Act, Act - 3
  6.     Case vbKeyS: Swap Act, Act + 3
  7.     Case vbKeyA: Swap Act, Act - 1
  8.     Case vbKeyD: Swap Act, Act + 1
  9.     End Select
  10. End Sub
  11. Private Sub Swap(i1 As Long, i2 As Long)
  12.     Dim lbl1 As Label, lbl2 As Label, l As Long, t As Long
  13.     If i2 < 0 Or i2 > 8 Or ((i1 + i2) Mod 3 = 2 And Abs(i1 - i2) = 1) Then Exit Sub
  14.     Arr(i1) = Arr(i1) Xor Arr(i2): Arr(i2) = Arr(i2) Xor Arr(i1): Arr(i1) = Arr(i1) Xor Arr(i2)
  15.     Set lbl1 = Me.Controls("lblItem" & Arr(i2)): Set lbl2 = Me.Controls("lblItem" & Arr(i1))
  16.     l = lbl1.Left: t = lbl1.Top: lbl1.Move lbl2.Left, lbl2.Top: lbl2.Move l, t
  17.     Act = i2
  18. End Sub
  19. Private Sub Form_Load()
  20.     Dim lbl As Label, i As Long
  21.     ReDim Arr(8)
  22.     For i = 0 To 8
  23.         Set lbl = Me.Controls.Add("VB.Label", "lblItem" & CStr(i))
  24.         lbl.Move Me.ScaleWidth / 3 * (i Mod 3), Me.ScaleHeight / 3 * (i \ 3), Me.ScaleWidth / 3, Me.ScaleHeight / 3
  25.         lbl.Visible = True: lbl.BackColor = vbBlue: lbl.Caption = i: Arr(i) = i
  26.     Next
  27.     lbl.BackColor = vbRed: Act = 8
  28. End Sub

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


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

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

14   голосов , оценка 3.929 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы