Запрет на изменение фокуса контролов стрелками клавиатуры - VB

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

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

Кнопки стрелок на клавиатуре используются для других целей - их нажатие анализируется с помощью Form_KeyDown. После добавления контролов кнопок на форму, после нажатия стрелок - только фокус переходит с контрола созданной кнопки на другой контрол. Как сделать чтобы нажатия стрелок не меняло фокус?
Всё правильно работает, но при нажатой Shift (и Ctrl, и Alt). Нужно чтобы было наоборот - переход по контролам стрелками при нажатой Shift, а при отжатой - работа с формой и вводом: перехват стрелок, символов!

Решение задачи: «Запрет на изменение фокуса контролов стрелками клавиатуры»

textual
Листинг программы
Option Explicit
 
Const r = 600, rr = 390
Dim cmb(8, 6) As CommandButton 'Двумерный массив кнопок
Dim WithEvents c As CommandButton
Dim i&, j&
 
Sub moveFocus(ii&, jj&)
    'Перемещение фокуса
    If ii < 0 Then ii = 0
    If ii > UBound(cmb, 1) - 1 Then ii = UBound(cmb, 1) - 1
    If jj < 0 Then jj = 0
    If jj > UBound(cmb, 2) - 1 Then jj = UBound(cmb, 2) - 1
    i = ii: j = jj
    cmb(i, j).SetFocus
End Sub
 
Private Sub c_KeyDown(KeyCode As Integer, Shift As Integer)
    Select Case KeyCode
    Case 87: moveFocus i, j - 1
    Case 83: moveFocus i, j + 1
    Case 65: moveFocus i - 1, j
    Case 68: moveFocus i + 1, j
    End Select
End Sub
 
 
Private Sub c_LostFocus()
    On Error Resume Next
    Set c = ActiveControl
End Sub
 
Private Sub Form_Activate()
    cmb(0, 0).SetFocus
    c_LostFocus
    i = 0: j = 0
End Sub
 
Private Sub Form_Load()
    For i = 0 To UBound(cmb, 1) - 1
        For j = 0 To UBound(cmb, 2) - 1
            Set cmb(i, j) = Controls.Add("vb.CommandButton", "cmb" & i & j)
            With cmb(i, j)
                .Move i * rr + r, j * rr + r, rr, rr
                .Caption = i & j
                .Visible = 1
            End With
        Next
    Next
End Sub

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


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

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

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