Как отключить скролинг записей формы
Для некоторых пользователей колесико мышки является проблемой. Так как они как правило не смотрят на экран, когда меняют что-либо. Нечаянно крутанулось колесико и поменяли не ту запись.
MS Access 2003 поддерживает событие MouseWheel, но, увы, не позволяет отменить это. Даже DoCmd.CancelEvent не помогает.
Private Sub Form_MouseWheel(ByVal Page As Boolean, ByVal Count As Long)
DoCmd.CancelEvent '-- не работает
End Sub
Одно из решений это хук событий формы описанный на сайте microsoft (How to Detect and Prevent the Mouse Wheel from Scrolling Through Records in a Form). И тут не обошлось без недостатков. Если не использовать внешней dll, то периодически форма тормозит, т.к. все события проваливаются через медленный VBA. Возможно, если вынести данный код в dll, то будет работать на порядок быстрее. Мне не захотелось возится с отдельной dll, т.к. я нашел метод попроще (об этом ниже). Пока я исследовал пример, немного расширил его. Результат трудов можно скачать тут, вдруг кому понадобится.
Более простым решением на мой взгляд является фильтр по ключевому полю. При этом нужно отключить добавление записей. У этой идеи тоже есть недостатки:
- для ленточных форм, естественно, это не работает.
- нужно реализовывать добавление записи, а потом уже открывать ее на редактирование.
Какой вариант выбрать зависит от ситуации. Я же стараюсь свести дизайн программы ко второму варианту. Уж больно он мне по душе.
До встречи!
(с) Скоков Сергей
Подписаться на: RSS или e-mail рассылку или добавить в ЖЖ друзья.