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