Событие нажатия клавиши: vbKeyUp, vbKeyDown для увеличения поля данных в форме без потери фокуса поля

#forms #controls #ms-access-2016 #onkeydown

#формы #элементы управления #ms-access-2016 #onkeydown

Вопрос:

У меня есть небольшой код, который использует vbKeyUp или Down для увеличения поля даты (SaleDate). Как я могу сохранить фокус в поле SaleDate? В настоящее время клавиша UpArrow up уменьшает дату на один день и изменяет фокус на предыдущее поле. Клавиша DownArrow увеличивает дату, но перемещает фокус на следующую запись. В обоих случаях я хотел бы иметь возможность нажимать клавишу один или несколько раз, чтобы изменить дату на один или несколько дней.

 Private Sub SaleDate_KeyDown(KeyCode As Integer, Shift As Integer)
 Select Case KeyCode
        Case vbKeyUp
            'MsgBox "UP"
            Me.SaleDate = Me.SaleDate - 1
        Case vbKeyDown
            'MsgBox "DOWN"
            Me.SaleDate = Me.SaleDate   1        
    End Select
End sub
 

Ответ №1:

Вы почти на месте, просто:

Подавите нормальную функцию ключа, установив keyCode равным 0:

 Private Sub SaleDate_KeyDown(KeyCode As Integer, Shift As Integer)
 Select Case KeyCode
        Case vbKeyUp
            'MsgBox "UP"
            Me.SaleDate = Me.SaleDate - 1
            KeyCode = 0
        Case vbKeyDown
            'MsgBox "DOWN"
            Me.SaleDate = Me.SaleDate   1
            KeyCode = 0        
    End Select
End sub
 

И установите Form.KeyPreview для свойства значение True в области дизайна, чтобы убедиться, что ваш код запускается до выполнения стандартного эффекта, а не после.

Комментарии:

1. Это сделало свое дело! Большое спасибо.